summaryrefslogtreecommitdiffstats
path: root/contrib/cvs/man/cvs.1
blob: ec9eed97da230ef8779034a86e1eb51c332f80cd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
.\" $FreeBSD$
.\"
.de Id
.ds Rv \\$3
.ds Dt \\$4
..
.Id $FreeBSD$
.TH CVS 1 "\*(Dt"
.\" Full space in nroff; half space in troff
.de SP
.if n .sp
.if t .sp .5
..
.\" quoted command
.de `
.RB ` "\|\\$1\|" '\\$2
..
.SH "NAME"
cvs \- Concurrent Versions System
.SH "SYNOPSIS"
.TP
\fBcvs\fP [ \fIcvs_options\fP ]
.I cvs_command
[
.I command_options
] [
.I command_args
]
.SH "DESCRIPTION"
.IX "revision control system" "\fLcvs\fR"
.IX  cvs  ""  "\fLcvs\fP \- concurrent versions system"
.IX  "concurrent versions system \- \fLcvs\fP"
.IX  "release control system"  "cvs command"  ""  "\fLcvs\fP \- concurrent versions system"
.IX  "source control system"  "cvs command"  ""  "\fLcvs\fP \- concurrent versions system"
.IX  revisions  "cvs command"  ""  "\fLcvs\fP \- source control"
.B cvs
is a front end to the
.BR rcs ( 1 )
revision control system which extends
the notion of revision control from a collection of files in a single
directory to a hierarchical collection of directories consisting of
revision controlled files.
These directories and files can be combined together to form a software
release.
.B cvs
provides the functions necessary to manage these software releases and to
control the concurrent editing of source files among multiple software
developers.
.SP
.B cvs
keeps a single copy of the master sources.
This copy is called the source ``repository''; it contains all the
information to permit extracting previous software releases at any
time based on either a symbolic revision tag, or a date in the past.
.SH "ESSENTIAL COMMANDS"
.B cvs
provides a rich variety of commands (\fIcvs_command\fP in the
Synopsis), each of which often has a wealth of options, to satisfy the
many needs of source management in distributed environments.  However,
you don't have to master every detail to do useful work with
.BR cvs ;
in fact, five commands are sufficient to use (and contribute to)
the source repository.
.TP
\fBcvs checkout\fP \fImodules\fP\|.\|.\|.
A necessary preliminary for most \fBcvs\fP work: creates your private
copy of the source for \fImodules\fP (named collections of source; you
can also use a path relative to the source repository here).  You can
work with this copy without interfering with others' work.  At least
one subdirectory level is always created.
.TP
.B cvs update
Execute this command from \fIwithin\fP your private source
directory when you wish to update your copies of source files from
changes that other developers have made to the source in the
repository.
.TP
\fBcvs add\fP \fIfile\fP\|.\|.\|.
Use this command to enroll new files in \fBcvs\fP records of your
working directory.  The files will be added to the repository the next
time you run
.` "cvs commit".
Note:
You should use the
.` "cvs import"
command to bootstrap new sources into the source repository.
.` "cvs add"
is only used for new files to an already checked-out module.
.TP
\fBcvs remove\fP \fIfile\fP\|.\|.\|.
Use this command (after erasing any files listed) to declare that you
wish to eliminate files from the repository.  The removal does not
affect others until you run
.` "cvs commit".
.TP
\fBcvs commit\fP \fIfile\fP\|.\|.\|.
Use this command when you wish to ``publish'' your changes to other
developers, by incorporating them in the source repository.
.SH "OPTIONS"
The
.B cvs
command line can include
.IR cvs_options ,
which apply to the overall
.B cvs
program; a
.IR cvs_command ,
which specifies a particular action on the source repository; and
.I command_options
and
.I command_arguments
to fully specify what the
.I cvs_command
will do.
.SP
.I Warning:
you must be careful of precisely where you place options relative to the
.IR cvs_command .
The same option can mean different things depending on whether it
is in the
.I cvs_options
position (to the left of a
.B cvs
command) or in the
.I command_options
position (to the right of a
.B cvs
command).
.SP
There are only two situations where you may omit
.IR cvs_command :
.` "cvs \-H"
or
.` "cvs --help"
elicits a list of available commands, and
.` "cvs \-v"
or
.` "cvs --version"
displays version information on \fBcvs\fP itself.
.SP
.SH "CVS OPTIONS"
As of release 1.6,
.B cvs
supports
.SM GNU
style long options as well as short options.  Only
a few long options are currently supported, these are listed in
brackets after the short options whose functions they duplicate.
.SP
Use these options to control the overall
.B cvs
program:
.TP
.B \-H [ --help ]
Display usage information about the specified
.I cvs_command
(but do not actually execute the command).  If you don't specify a
command name,
.` "cvs \-H"
displays a summary of all the commands available.
.TP
.B \-Q
Causes the command to be
.I really
quiet; the command will generate output only for serious problems.
.TP
.B \-q
Causes the command to be somewhat quiet; informational messages, such
as reports of recursion through subdirectories, are suppressed.
.TP
\fB\-b\fP \fIbindir\fP
Use
.I bindir
as the directory where
.SM RCS
programs are located.
Overrides the setting of the
.SM RCSBIN
environment variable.
This value should be specified as an absolute pathname.
.TP
\fB\-d\fP \fICVS_root_directory\fP
Use
.I CVS_root_directory
as the root directory pathname of the master
.SM RCS
source repository.
Overrides the setting of the
.SM CVSROOT
environment variable.
This value should be specified as an absolute pathname.
.TP
\fB\-e\fP \fIeditor\fP
Use
.I editor
to enter revision log information.
Overrides the setting of the
.SM CVSEDITOR
and the
.SM EDITOR
environment variables.
.TP
.B \-f
Do not read the
.B cvs
startup file (\fI~/.cvsrc\fP).
.TP
.B \-l
Do not log the
.I cvs_command
in the command history (but execute it anyway).  See the description
of the
.B history
command for information on command history.
.TP
.B \-n
Do not change any files.  Attempt to execute the
.IR cvs_command ,
but only to issue reports; do not remove, update, or merge any
existing files, or create any new files.
.TP
.B \-t
Trace program execution; display messages showing the steps of
.B cvs
activity.  Particularly useful with
.B \-n
to explore the potential impact of an unfamiliar command.
.TP
.B \-r
Makes new working files read-only.
Same effect as if the
.SM CVSREAD
environment variable is set.
.TP
.B \-v [ --version ]
Displays version and copyright information for
.BR cvs .
.TP
.B \-w
Makes new working files read-write (default).
Overrides the setting of the
.SM CVSREAD
environment variable.
.TP
\fB\-z\fP \fIcompression\-level\fP
When transferring files across the network use
.B gzip
with compression level \fIcompression\-level\fP to compress and
de-compress data as it is transferred.  Requires the presence of
the
.SM GNU
.B gzip
program in the current search path at both ends of the link.
.SH "USAGE"
Except when requesting general help with
.` "cvs \-H",
you must specify a
.I cvs_command
to
.B cvs
to select a specific release control function to perform.
Each
.B cvs
command accepts its own collection of options and arguments.
However, many options are available across several commands.
You can display a usage summary for each command by specifying the
.B \-H
option with the command.
.SH "CVS STARTUP FILE"
Normally, when CVS starts up, it reads the
.I .cvsrc
file from the home directory of the user reading it.  This startup
procedure can be turned off with the
.B \-f
flag.
.SP
The
.I .cvsrc
file lists CVS commands with a list of arguments, one command per
line.  For example, the following line in \fI.cvsrc\fP:
.SP
diff \-c
.SP
will mean that the
.` "cvs diff"
command will always be passed the \-c option in addition to any
other options that are specified in the command line (in this case
it will have the effect of producing context sensitive diffs for
all executions of
.` "cvs diff"
).
.SH "CVS COMMAND SUMMARY"
Here are brief descriptions of all the
.B cvs
commands:
.TP
.B add
Add a new file or directory to the repository, pending a
.` "cvs commit"
on the same file.
Can only be done from within sources created by a previous
.` "cvs checkout"
invocation.
Use
.` "cvs import"
to place whole new hierarchies of sources under
.B cvs
control.
(Does not directly affect repository; changes
working directory.)
.TP
.B admin
Execute
.SM RCS
control functions on the source repository.  (Changes
repository directly; uses working directory without changing it.)
.TP
.B checkout
Make a working directory of source files for editing.  (Creates or changes
working directory.)
.TP
.B commit
Apply to the source repository changes, additions, and deletions from your
working directory.  (Changes repository.)
.TP
.B diff
Show differences between files in working directory and source
repository, or between two revisions in source repository.
(Does not change either repository or working directory.)
.TP
.B export
Prepare copies of a set of source files for shipment off site.
Differs from
.` "cvs checkout"
in that no
.B cvs
administrative directories are created (and therefore
.` "cvs commit"
cannot be executed from a directory prepared with
.` "cvs export"),
and a symbolic tag must be specified.
(Does not change repository; creates directory similar to working
directories).
.TP
.B history
Show reports on
.B cvs
commands that you or others have executed on a particular file or
directory in the source repository.  (Does not change repository or
working directory.)  History logs are kept only if enabled by creation
of the
.` "$CVSROOT/CVSROOT/history"
file; see
.BR cvs ( 5 ).
.TP
.B import
Incorporate a set of updates from off-site into the source repository,
as a ``vendor branch''.  (Changes repository.)
.TP
.B log
Display
.SM RCS
log information.
(Does not change repository or working directory.)
.TP
.B rdiff
Prepare a collection of diffs as a patch file between two releases in
the repository.  (Does not change repository or working directory.)
.TP
.B release
Cancel a
.` "cvs checkout",
abandoning any changes.
(Can delete working directory; no effect on repository.)
.TP
.B remove
Remove files from the source repository, pending a
.` "cvs commit"
on the same files.  (Does not directly affect repository;
changes working directory.)
.TP
.B rtag
Explicitly specify a symbolic tag for particular revisions of files in the
source repository.  See also
.` "cvs tag".
(Changes repository directly; does not require or affect
working directory.)
.TP
.B status
Show current status of files: latest version, version in working
directory, whether working version has been edited and, optionally,
symbolic tags in the
.SM RCS
file.  (Does not change
repository or working directory.)
.TP
.B tag
Specify a symbolic tag for files in the repository.  By default, tags
the revisions
that were last synchronized with your working directory.   (Changes
repository directly; uses working directory without changing it.)
.TP
.B update
Bring your working directory up to date with changes from the
repository.  Merges are performed automatically when possible; a
warning is issued if manual resolution is required for conflicting
changes.  (Changes working directory; does not change repository.)
.SH "COMMON COMMAND OPTIONS"
This section describes the
.I command_options
that are available across several
.B cvs
commands.  Not all commands support all of these options; each option
is only supported for commands where it makes sense.  However, when
a command has one of these options you can count on the same meaning
for the option as in other commands.  (Other command
options, which are listed with the individual commands, may have
different meanings from one
.B cvs
command to another.)
.I "Warning:"
the
.B history
command is an exception;
it supports many options that conflict
even with these standard options.
.TP
\fB\-D\fP \fIdate_spec\fP
Use the most recent revision no later than \fIdate_spec\fP (a single
argument, date description specifying a date in the
past).  A wide variety of date formats are supported by the underlying
.SM RCS
facilities, similar to those described in
.BR co ( 1 ),
but not exactly the same.
The \fIdate_spec\fP is interpreted as being in the local timezone, unless a
specific timezone is specified.
The specification is ``sticky'' when you use it to make a
private copy of a source file; that is, when you get a working file
using \fB\-D\fP, \fBcvs\fP records the date you
specified, so that further updates in the same directory will use the
same date (unless you explicitly override it; see the description of
the \fBupdate\fP command).
.B \-D
is available with the
.BR checkout ", " diff ", " history ", " export ", "
.BR rdiff ", " rtag ", and "
.B update
commands.
Examples of valid date specifications include:
.in +1i
.ft B
.nf
1 month ago
2 hours ago
400000 seconds ago
last year
last Monday
yesterday
a fortnight ago
3/31/92 10:00:07 PST
January 23, 1987 10:05pm
22:00 GMT
.fi
.ft P
.in -1i
.TP
.B \-f
When you specify a particular date or tag to \fBcvs\fP commands, they
normally ignore files that do not contain the tag (or did not exist on
the date) that you specified.  Use the \fB\-f\fP option if you want
files retrieved even when there is no match for the tag or date.  (The
most recent version is used in this situation.)
.B \-f
is available with these commands:
.BR checkout ", " export ", "
.BR rdiff ", " rtag ", and " update .
.TP
.B \-H
Help; describe the options available for this command.  This is the
only option supported for
.I all
.B cvs
commands.
.TP
\fB\-k\fP \fIkflag\fP
Alter the default
.SM RCS
processing of keywords; all the
.B \-k
options described in
.BR co ( 1 )
are available.  The \fB\-k\fP option is available with the
.BR add ", " checkout ", " diff ", " export ", "
.BR rdiff ", and " update
commands.  Your \fIkflag\fP specification is ``sticky'' when you use
it to create a private copy of a source file; that is, when you use
this option with the \fBcheckout\fP or \fBupdate\fP commands,
\fBcvs\fP associates your selected \fIkflag\fP with the file, and
continues to use it with future \fBupdate\fP commands on the same file
until you specify otherwise.
.SP
Some of the more useful \fIkflag\fPs are \-ko and \-kb (for binary files,
only compatible with
.SM RCS
version 5.7 or later), and \-kv which is useful for an
.B export
where you wish to retain keyword information after an
.B import
at some other site.
.TP
.B \-l
Local; run only in current working directory, rather than recurring through
subdirectories.   Available with the following commands:
.BR checkout ", " commit ", " diff ", "
.BR export ", " remove ", " rdiff ", " rtag ", "
.BR status ", " tag ", and " update .
.I Warning:
this is not the same
as the overall
.` "cvs \-l"
option, which you can specify to the
.I left
of a
.B cvs
command!
.TP
.B \-n
Do
.I not
run any
.BR checkout / commit / tag / update
program.  (A program can be specified to run on each of these
activities, in the modules database; this option bypasses it.)
Available with the
.BR checkout ", " commit ", " export ", and "
.B rtag
commands.
.I Warning:
this is not the same
as the overall
.` "cvs \-n"
option, which you can specify to the
.I left
of a
.B cvs
command!
.TP
.B \-P
Prune (remove) directories that are empty after being updated, on
.BR checkout ", or " update .
Normally, an empty directory (one that is void of revision-controlled
files) is left alone.
Specifying
.B \-P
will cause these directories to be silently removed from your checked-out
sources.
This does not remove the directory from the repository, only from your
checked out copy.
Note that this option is implied by the
.B \-r
or
.B \-D
options of
.BR checkout " and " export .
.TP
.B \-p
Pipe the files retrieved from the repository to standard output,
rather than writing them in the current directory.  Available with the
.BR checkout " and " update
commands.
.TP
\fB\-r\fP \fItag\fP
Use the revision specified by the
.I tag
argument instead of the default ``head'' revision.  As well as
arbitrary tags defined with the \fBtag\fP or \fBrtag\fP command, two
special tags are always available:
.` "HEAD"
refers to the most
recent version available in the repository, and
.` "BASE"
refers to the revision you last checked out into the current working
directory.
.SP
The \fItag\fP specification is ``sticky'' when you use
this option with
.` "cvs checkout"
or
.` "cvs update"
to
make your own copy of a file: \fBcvs\fP remembers the \fItag\fP and
continues to use it on future \fBupdate\fP commands, until you specify
otherwise.
.I tag
can be either a symbolic or numeric tag, in
.SM RCS
fashion.
Specifying the
.B \-q
global option along with the
.B \-r
command option is often useful, to suppress the warning messages when the
.SM RCS
file does not contain the specified tag.
.B \-r
is available with the
.BR checkout ", " commit ", " diff ", "
.BR history ", " export ", "
.BR rdiff ", " rtag ", and " update
commands.
.I Warning:
this is not the same
as the overall
.` "cvs \-r"
option, which you can specify to the
.I left
of a
.B cvs
command!
.SH "CVS COMMANDS"
Here (finally) are details on all the
.B cvs
commands and the options each accepts.  The summary lines at the top
of each command's description highlight three kinds of things:
.TP 1i
\ \ \ \ Command Options and Arguments
Special options are described in detail below; common command options
may appear only in the summary line.
.TP 1i
\ \ \ \ Working Directory, or Repository?
Some \fBcvs\fP commands require a working directory to operate; some
require a repository.  Also, some commands \fIchange\fP the
repository, some change the working directory, and some change
nothing.
.TP 1i
\ \ \ \ Synonyms
Many commands have synonyms, which you may find easier to
remember (or type) than the principal name.
.PP
.TP
\fBadd\fP [\fB\-k\fP \fIkflag\fP] [\fB\-m '\fP\fImessage\fP\fB'\fP] \fIfiles.\|.\|.\fP
.I Requires:
repository, working directory.
.br
.I Changes:
working directory.
.br
.I Synonym:
.B new
.br
Use the
.B add
command to create a new file or directory in the
.SM RCS
source repository.
The files or directories specified with
.B add
must already exist in the current directory (which must have been created
with the
.B checkout
command).
To add a whole new directory hierarchy to the source repository
(for example, files received from a third-party vendor), use the
.` "cvs import"
command instead.
.SP
If the argument to
.` "cvs add"
refers to an immediate sub-directory, the directory is
created at the correct place in the
.SM RCS
source repository, and the necessary
.B cvs
administration files are created in your working directory.
If the directory already exists in the source repository,
.` "cvs add"
still creates the administration files in your version of the directory.
This allows you to use
.` "cvs add"
to add a particular directory to your private sources even if
someone else created that directory after your
.B checkout
of the sources.  You can do the following:
.SP
.in +1i
.ft B
.nf
example% mkdir new_directory
example% cvs add new_directory
example% cvs update new_directory
.fi
.ft P
.in -1i
.SP
An alternate approach using
.` "cvs update"
might be:
.SP
.in +1i
.ft B
.nf
example% cvs update -d new_directory
.fi
.ft P
.in -1i
.SP
(To add \fIany available\fP new directories to your working directory, it's
probably simpler to use
.` "cvs checkout"
or
.` "cvs update -d".)
.SP
The added files are not placed in the
.SM RCS
source repository until you use
.` "cvs commit"
to make the change permanent.
Doing a
.` "cvs add"
on a file that was removed with the
.` "cvs remove"
command will resurrect the file, if no
.` "cvs commit"
command intervened.
.SP
You will have the opportunity to specify a logging message, as usual,
when you use
.` "cvs commit"
to make the new file permanent.  If you'd like to have another
logging message associated with just
.I creation
of the file (for example, to describe the file's purpose), you can
specify it with the
.` "\-m \fImessage\fP"
option to the
.B add
command.
.SP
The
.` "-k kflag"
option specifies the default way that this
file will be checked out.
The
.` "kflag"
argument is stored in the
.SM RCS
file and can be changed with
.` "cvs admin".
Specifying
.` "-ko"
is useful for checking in binaries that
shouldn't have the
.SM RCS
id strings expanded.
.TP
\fBadmin\fP [\fIrcs-options\fP] \fIfiles.\|.\|.\fP
.I Requires:
repository, working directory.
.br
.I Changes:
repository.
.br
.I Synonym:
.B rcs
.br
This is the
.B cvs
interface to assorted administrative
.SM RCS
facilities, documented in
.BR rcs ( 1 ).
.` "cvs admin"
simply passes all its options and arguments to the
.B rcs
command; it does no filtering or other processing.
This command does work recursively, however, so extreme care should be
used.
.TP
\fBcheckout\fP [\fBoptions\fP] \fImodules\fP.\|.\|.
.I Requires:
repository.
.br
.I Changes:
working directory.
.br
.I Synonyms:
.BR co ", " get
.br
Make a working directory containing copies of the source files specified by
.IR modules .
You must execute
.` "cvs checkout"
before using most of the other
.B cvs
commands, since most of them operate on your working directory.
.SP
\fImodules\fP are either symbolic names (themselves defined as the
module
.` "modules"
in the source repository; see
.BR cvs ( 5 ))
for some collection of source directories and files, or paths to
directories or files in the repository.
.SP
Depending on the
.I modules
you specify,
.B checkout
may recursively create directories and populate them with the appropriate
source files.
You can then edit these source files at any time (regardless of whether
other software developers are editing their own copies of the sources);
update them to include new changes applied by others to the source
repository; or commit your work as a permanent change to the
.SM RCS
repository.
.SP
Note that
.B checkout
is used to create directories.
The top-level directory created is always added to the directory
where
.B checkout
is invoked, and usually has the same name as the specified
.IR module .
In the case of a
.I module
alias, the created sub-directory may have a different name, but you can be
sure that it will be a sub-directory, and that
.B checkout
will show the relative path leading to each file as it is extracted into
your private work area (unless you specify the
.B \-Q
global option).
.SP
Running
.` "cvs checkout"
on a directory that was already built by a prior
.B checkout
is also permitted, and
has the same effect as specifying the
.B \-d
option to the
.B update
command described below.
.SP
The
.I options
permitted with
.` "cvs checkout"
include the standard command options
.BR \-P ", " \-f ", "
.BI \-k " kflag"
\&,
.BR \-l ", " \-n ", " \-p ", "
.BR \-r
.IR tag ", and"
.BI \-D " date"\c
\&.
.SP
In addition to those, you can use these special command options
with
.BR checkout :
.SP
Use the
.B \-A
option to reset any sticky tags, dates, or
.B \-k
options.  (If you get a working file using one of the
\fB\-r\fP, \fB\-D\fP, or \fB\-k\fP options, \fBcvs\fP remembers the
corresponding tag, date, or \fIkflag\fP and continues using it on
future updates; use the \fB\-A\fP option to make \fBcvs\fP forget these
specifications, and retrieve the ``head'' version of the file).
.SP
The
.BI \-j " branch"
option merges the changes made between the
resulting revision and the revision that it is based on (e.g., if
the tag refers to a branch,
.B cvs
will merge all changes made in that branch into your working file).
.SP
With two \fB-j\fP options,
.B cvs
will merge in the changes between the two respective revisions.
This can be used to ``remove'' a certain delta from your working file.
.SP
In addition, each \fB-j\fP option can contain on optional date
specification which, when used with branches, can limit the chosen
revision to one within a specific date.
An optional date is specified by adding a colon (:) to the tag.
An example might be what
.` "cvs import"
tells you to do when you have
just imported sources that have conflicts with local changes:
.SP
.in +1i
.ft B
.nf
example% cvs checkout -jTAG:yesterday -jTAG module
.fi
.ft P
.in -1i
.SP
Use the
.B \-N
option with
.` "\-d \fIdir\fP"
to avoid shortening module paths in your working directory.   (Normally, \fBcvs\fP shortens paths as much as possible when you specify an explicit target directory.)
.SP
Use the
.B \-c
option to copy the module file, sorted, to the standard output,
instead of creating or modifying any files or directories in your
working directory.
.SP
Use the
.BI \-d " dir"
option to create a directory called
.I dir
for the working files, instead of using the module name.  Unless you
also use \fB\-N\fP, the paths created under \fIdir\fP will be as short
as possible.
.SP
Use the
.B \-s
option to display per-module status information stored with
the
.B \-s
option within the modules file. 
.TP
\fBcommit\fP [\fB\-lnR\fP] [\fB\-m\fP '\fIlog_message\fP' | \fB\-f\fP \fIfile\fP] [\fB\-r\fP \fIrevision\fP] [\fIfiles.\|.\|.\fP]
.I Requires:
working directory, repository.
.br
.I Changes:
repository.
.br
.I Synonym:
.B ci
.br
Use
.` "cvs commit"
when you want to incorporate changes from your working source
files into the general source repository.
.SP
If you don't specify particular \fIfiles\fP to commit, all
of the files in your working current directory are examined.
.B commit
is careful to change in the repository only those files that you have
really changed.  By default (or if you explicitly specify the
.B \-R
option), files
in subdirectories are also examined and committed if they have
changed; you can use the
.B \-l
option to limit
.B commit
to the current directory only.
Sometimes you may want to force a file to be committed even though it
is unchanged; this is achieved with the
.B \-f
flag, which also has the effect of disabling recursion (you can turn
it back on with
.B \-R
of course).
.SP
.B commit
verifies that the selected files are up to date with the current revisions
in the source repository; it will notify you, and exit without
committing, if any of the specified files must be made current first
with
.` "cvs update".
.B commit
does not call the
.B update
command for you, but rather leaves that for you to do when
the time is right.
.SP
When all is well, an editor is invoked to allow you to enter a log
message that will be written to one or more logging programs and placed in the
.SM RCS
source repository file.
You can instead specify the log message on the command line with the
.B \-m
option, thus suppressing the editor invocation, or use the
.B \-F
option to specify that the argument \fIfile\fP contains the log message.
.SP
The
.B \-r
option can be used to commit to a particular symbolic or numeric revision
within the
.SM RCS
file.
For example, to bring all your files up to the
.SM RCS
revision ``3.0'' (including those that haven't changed), you might do:
.SP
.in +1i
.ft B
.nf
example% cvs commit -r3.0
.fi
.ft P
.in -1i
.SP
.B cvs
will only allow you to commit to a revision that is on the main trunk (a
revision with a single dot).
However, you can also commit to a branch revision (one that has an even
number of dots) with the
.B \-r
option.
To create a branch revision, one typically use the
.B \-b
option of the
.BR rtag " or " tag
commands.
Then, either
.BR checkout " or " update
can be used to base your sources on the newly created branch.
From that point on, all
.B commit
changes made within these working sources will be automatically added
to a branch revision, thereby not perturbing main-line development in any
way.
For example, if you had to create a patch to the 1.2 version of the
product, even though the 2.0 version is already under development, you
might do:
.SP
.in +1i
.ft B
.nf
example% cvs rtag -b -rFCS1_2 FCS1_2_Patch product_module
example% cvs checkout -rFCS1_2_Patch product_module
example% cd product_module
[[ hack away ]]
example% cvs commit
.fi
.ft P
.in -1i
.SP
Say you have been working on some extremely experimental software, based on
whatever revision you happened to checkout last week.
If others in your group would like to work on this software with you, but
without disturbing main-line development, you could commit your change to a
new branch.
Others can then checkout your experimental stuff and utilize the full
benefit of
.B cvs
conflict resolution.
The scenario might look like:
.SP
.in +1i
.ft B
.nf
example% cvs tag -b EXPR1
example% cvs update -rEXPR1
[[ hack away ]]
example% cvs commit
.fi
.ft P
.in -1i
.SP
Others would simply do
.` "cvs checkout -rEXPR1 whatever_module"
to work with you on the experimental change.
.TP
\fBdiff\fP [\fB\-kl\fP] [\fIrcsdiff_options\fP] [[\fB\-r\fP \fIrev1\fP | \fB\-D\fP \fIdate1\fP] [\fB\-r\fP \fIrev2\fP | \fB\-D\fP \fIdate2\fP]] [\fIfiles.\|.\|.\fP]
.I Requires:
working directory, repository.
.br
.I Changes:
nothing.
.br
You can compare your working files with revisions in the source
repository, with the
.` "cvs diff"
command.  If you don't specify a particular revision, your files
are compared with the revisions they were based on.  You can also use
the standard
.B cvs
command option
.B \-r
to specify a particular revision to compare your files with.  Finally,
if you use
.B \-r
twice, you can see differences between two revisions in the
repository.
You can also specify
.B \-D
options to diff against a revision in the past.
The
.B \-r
and
.B \-D
options can be mixed together with at most two options ever specified.
.SP
See
.BR rcsdiff ( 1 )
for a list of other accepted options.
.SP
If you don't specify any files,
.B diff
will display differences for all those files in the current directory
(and its subdirectories, unless you use the standard option
.BR \-l )
that
differ from the corresponding revision in the source repository
(i.e. files that
.I you
have changed), or that differ from the revision specified.
.TP
\fBexport\fP [\-\fBf\|lNnQq\fP] \fB\-r\fP \fIrev\fP\||\|\fB\-D\fP \fIdate\fP [\fB\-d\fP \fIdir\fP] [\fB\-k\fP \fIkflag\fP] \fImodule\fP.\|.\|.
.I Requires:
repository.
.br
.I Changes:
current directory.
.br
This command is a variant of
.` "cvs checkout";
use it when you want a copy of the source for \fImodule\fP
without the \fBcvs\fP administrative directories.  For example, you
might use
.` "cvs export"
to prepare source for shipment
off-site.  This command \fIrequires\fP that you specify a date or tag
(with \fB\-D\fP or \fB\-r\fP), so that you can count on reproducing
the source you ship to others.
.SP
The only non-standard options are
.` "\-d \fIdir\fP"
(write the
source into directory \fIdir\fP) and
.` "\-N"
(don't shorten
module paths).
These have the same meanings as the same options in
.` "cvs checkout".
.SP
The
.B \-kv
option is useful when
.B export
is used.
This causes any
.SM RCS
keywords to be expanded such that an
.B import
done at some other site will not lose the keyword revision information.
Other \fIkflag\fPs may be used with
.` "cvs export"
and are described in
.BR co ( 1 ).
.TP
\fBhistory\fP [\fB\-\fP\fIreport\fP] [\fB\-\fP\fIflags\fP] [\fB\-\fP\fIoptions args\fP] [\fIfiles\fP.\|.\|.]
.I Requires:
the file
.` "$CVSROOT/CVSROOT/history"
.br
.I Changes:
nothing.
.br
\fBcvs\fP keeps a history file that tracks each use of the
\fBcheckout\fP, \fBcommit\fP, \fBrtag\fP, \fBupdate\fP, and \fBrelease\fP
commands.  You can use
.` "cvs history"
to display this
information in various formats.
.SP
.I Warning:
.` "cvs history"
uses
.` "\-f",
.` "\-l",
.` "\-n",
and
.` "\-p"
in ways that conflict with the
descriptions in
.SM
COMMON COMMAND OPTIONS\c
\&.
.SP
Several options (shown above as \fB\-\fP\fIreport\fP) control what
kind of report is generated:
.TP 1i
.B \ \ \ \ \ \ \-c
Report on each time \fBcommit\fP was used (i.e., each time the
repository was modified).
.TP 1i
\fB\ \ \ \ \ \ \-m\fP \fImodule\fP
Report on a particular \fImodule\fP.  (You can meaningfully use
\fB\-m\fP more than once on the command line.)
.TP 1i
.B \ \ \ \ \ \ \-o
Report on checked-out modules.
.TP 1i
.B \ \ \ \ \ \ \-T
Report on all tags.
.TP 1i
\fB\ \ \ \ \ \ \-x\fP \fItype\fP
Extract a particular set of record types \fIX\fP from the \fBcvs\fP
history.  The types are indicated by single letters, which you may
specify in combination.
Certain commands have a single record type: \fBcheckout\fP (type `O'),
\fBrelease\fP (type `F'), and \fBrtag\fP (type `T').  One of four
record types may result from an \fBupdate\fP: `W', when the working copy
of a file is deleted during update (because it was gone from the
repository); `U', when a working file was copied from the
repository; `G', when a merge was necessary and it succeeded; and 'C',
when a merge was necessary but collisions were detected (requiring
manual merging).  Finally, one of three record types results from
\fBcommit\fP: `M', when a file was modified; `A', when a file is first
added; and `R', when a file is removed.
.TP 1i
.B \ \ \ \ \ \ \-e
Everything (all record types); equivalent to specifying
.` "\-xMACFROGWUT".
.TP 1i
\fB\ \ \ \ \ \ \-z\fP \fIzone\fP
Use time zone
.I zone
when outputting history records.
The zone name
.B LT
stands for local time;
numeric offsets stand for hours and minutes ahead of UTC.
For example,
.B +0530
stands for 5 hours and 30 minutes ahead of (i.e. east of) UTC.
.PP
.RS .5i
The options shown as \fB\-\fP\fIflags\fP constrain the report without
requiring option arguments:
.RE
.TP 1i
.B \ \ \ \ \ \ \-a
Show data for all users (the default is to show data only for the user
executing
.` "cvs history").
.TP 1i
.B \ \ \ \ \ \ \-l
Show last modification only.
.TP 1i
.B \ \ \ \ \ \ \-w
Show only the records for modifications done from the same working
directory where
.` "cvs history"
is executing.
.PP
.RS .5i
The options shown as \fB\-\fP\fIoptions args\fP constrain the report
based on an argument:
.RE
.TP 1i
\fB\ \ \ \ \ \ \-b\fP \fIstr\fP
Show data back to a record containing the string \fIstr\fP in either
the module name, the file name, or the repository path.
.TP 1i
\fB\ \ \ \ \ \ \-D\fP \fIdate\fP
Show data since \fIdate\fP.
.TP 1i
\fB\ \ \ \ \ \ \-p\fP \fIrepository\fP
Show data for a particular source repository (you can specify several
\fB\-p\fP options on the same command line).
.TP 1i
\fB\ \ \ \ \ \ \-r\fP \fIrev\fP
Show records referring to revisions since the revision or tag
named \fIrev\fP appears in individual RCS files.
Each
.SM RCS
file is searched for the revision or tag.
.TP 1i
\fB\ \ \ \ \ \ \-t\fP \fItag\fP
Show records since tag \fItag\fP was last added to the history file.
This differs from the \fB-r\fP flag above in that it reads
only the history file, not the
.SM RCS
files, and is much faster.
.TP 1i
\fB\ \ \ \ \ \ \-u\fP \fIname\fP
Show records for user \fIname\fP.
.PP
.TP
\fBimport\fP [\fB\-\fP\fIoptions\fP] \fIrepository vendortag releasetag\fP.\|.\|.
.I Requires:
Repository, source distribution directory.
.br
.I Changes:
repository.
.br
Use
.` "cvs import"
to incorporate an entire source
distribution from an outside source (e.g., a source vendor) into your
source repository directory.  You can use this command both for
initial creation of a repository, and for wholesale updates to the
module form the outside source.
.SP
The \fIrepository\fP argument gives a directory name (or a path to a
directory) under the CVS root directory for repositories; if the
directory did not exist, \fBimport\fP creates it.
.SP
When you use \fBimport\fP for updates to source that has been modified in your
source repository (since a prior \fBimport\fP), it
will notify you of any files that conflict in the two branches of
development; use
.` "cvs checkout -j"
to reconcile the differences, as \fBimport\fP instructs you to do.
.SP
By default, certain file names are ignored during
.` "cvs import":
names associated with
.SM CVS
administration, or with other common source control systems; common
names for patch files, object files, archive files, and editor backup
files; and other names that are usually artifacts of assorted utilities.
Currently, the default list of ignored files includes files matching
these names:
.SP
.in +1i
.ft B
.nf
RCSLOG  RCS  SCCS
CVS*  cvslog.*
tags  TAGS
\&.make.state  .nse_depinfo
*~  #*  .#*  ,*
*.old  *.bak  *.BAK  *.orig  *.rej  .del\-*
*.a  *.o  *.so  *.Z  *.elc  *.ln  core
.fi
.ft P
.in -1i
.SP
The outside source is saved in a first-level
.SM RCS
branch, by default
.` "1.1.1".
Updates are leaves of this
branch; for example, files from the first imported collection of
source will be revision
.` "1.1.1.1",
then files from the first
imported update will be revision
.` "1.1.1.2",
and so on.
.SP
At least three arguments are required.  \fIrepository\fP is needed to
identify the collection of source.  \fIvendortag\fP is a tag for the
entire branch (e.g., for
.` "1.1.1").
You must also specify at
least one \fIreleasetag\fP to identify the files at the leaves created
each time you execute
.` "cvs import".
.SP
One of the standard
.B cvs
command options is available: \fB\-m\fP
\fImessage\fP.  If you do not specify a logging message with
\fB\-m\fP, your editor is invoked (as with \fBcommit\fP) to allow you
to enter one.
.SP
There are three additional special options.
.SP
Use
.` "\-d"
to specify that each file's time of last modification should be used
for the checkin date and time.
.SP
Use
.` "\-b \fIbranch\fP"
to specify a first-level branch other
than
.` "1.1.1".
.SP
Use
.` "\-I \fIname\fP"
to specify file names that should be
ignored during \fBimport\fP.  You can use this option repeatedly.
To avoid ignoring any files at all (even those ignored by default),
specify
.` "\-I !".
.TP
\fBlog\fP [\fB\-l\fP] \fIrlog-options [files\fP\|.\|.\|.]
.I Requires:
repository, working directory.
.br
.I Changes:
nothing.
.br
.I Synonym:
.B rlog
.br
Display log information for \fIfiles\fP.
.` "cvs log"
calls
the
.SM RCS
utility \fBrlog\fP; all the options described in
.BR rlog ( 1 )
are available.  Among the more useful \fBrlog\fP options are \fB\-h\fP
to display only the header (including tag definitions, but omitting
most of the full log); \fB\-r\fP to select logs on particular
revisions or ranges of revisions; and \fB\-d\fP to select particular
dates or date ranges.  See
.BR rlog ( 1 )
for full explanations.
This command is recursive by default, unless the
.B \-l
option is specified.
.TP
\fBrdiff\fP [\fB\-\fP\fIflags\fP] [\fB\-V\fP \fIvn\fP] [\fB\-r\fP \fIt\fP|\fB\-D\fP \fId\fP [\fB\-r\fP \fIt2\fP|\fB\-D\fP \fId2\fP]] \fImodules\|.\|.\|.\fP
.I Requires:
repository.
.br
.I Changes:
nothing.
.br
.I Synonym:
.B patch
.br
Builds a Larry Wall format
.BR patch ( 1 )
file between two releases, that can be fed directly into the
.B patch
program to bring an old release up-to-date with the new release.
(This is one of the few \fBcvs\fP commands that operates directly from
the repository, and doesn't require a prior
.BR checkout .)
The diff output is sent to the standard output device.
You can specify (using the standard \fB\-r\fP and \fB\-D\fP options)
any combination of one or two revisions or dates.
If only one revision or date is specified, the
patch file reflects differences between that revision or date and the
current ``head'' revisions in the
.SM RCS
file.
.SP
Note that if the software release affected
is contained in more than one directory, then it may be necessary to
specify the
.B \-p
option to the
.B patch
command when patching the old sources, so that
.B patch
is able to find the files that are located in other directories.
.SP
If you use the option \fB\-V\fP \fIvn\fP,
.SM RCS
keywords are expanded according to the rules current in
.SM RCS
version \fIvn\fP (the expansion format changed with
.SM RCS
version 5).
.SP
The standard option \fIflags\fP \fB\-f\fP, and \fB\-l\fP
are available with this command.  There are also several
special options flags:
.SP
If you use the
.B \-s
option, no patch output is produced.
Instead, a summary of the changed or added files between the two
releases is sent to the standard output device.
This is useful for finding out, for example, which files have changed
between two dates or revisions.
.SP
If you use the
.B \-t
option, a diff of the top two revisions is sent to the standard output device.
This is most useful for seeing what the last change to a file was.
.SP
If you use the
.B \-u
option, the patch output uses the newer ``unidiff'' format for context
diffs.
.SP
You can use
.B \-c
to explicitly specify the
.` "diff \-c"
form of context diffs
(which is the default), if you like.
.TP
\fBrelease\fP [\fB\-dQq\fP] \fImodules\fP\|.\|.\|.
.I Requires:
Working directory.
.br
.I Changes:
Working directory, history log.
.br
This command is meant to safely cancel the effect of
.` "cvs checkout'.
Since
.B cvs
doesn't lock files, it isn't strictly necessary to use this command.
You can always simply delete your working directory, if you
like; but you risk losing changes you may have forgotten, and you
leave no trace in the
.B cvs
history file that you've abandoned your checkout.
.SP
Use
.` "cvs release"
to avoid these problems.  This command
checks that no un-committed changes are present; that you are
executing it from immediately above, or inside, a \fBcvs\fP working
directory; and that the repository recorded for your files is the same
as the repository defined in the module database.
.SP
If all these conditions are true,
.` "cvs release"
leaves a
record of its execution (attesting to your intentionally abandoning
your checkout) in the
.B cvs
history log.
.SP
You can use the \fB\-d\fP flag to request that your working copies of
the source files be deleted if the \fBrelease\fP succeeds.
.TP
\fBremove\fP [\fB\-lR\fP] [\fIfiles\|.\|.\|.\fP]
.I Requires:
Working directory.
.br
.I Changes:
Working directory.
.br
.I Synonyms:
.BR rm ", " delete
.br
Use this command to declare that you wish to remove \fIfiles\fP from
the source repository.  Like most
.B cvs
commands,
.` "cvs remove"
works on files in your working
directory, not directly on the repository.  As a safeguard, it also
requires that you first erase the specified files from your working
directory.
.SP
The files are not actually removed until you apply your changes to the
repository with
.BR commit ;
at that point, the corresponding
.SM RCS
files in the source repository are
.I moved
into the
.` "Attic"
directory (also within the source repository).
.SP
This command is recursive by default, scheduling all physically removed
files that it finds for removal by the next
.BR commit .
Use the
.B \-l
option to avoid this recursion, or just specify that actual files that you
wish remove to consider.
.TP
\fBrtag\fP [\fB\-f\|alnRQq\fP] [\fB\-b\fP] [\fB\-d\fP] [\fB\-r\fP \fItag\fP | \fB\-D\fP \fIdate\fP] \fIsymbolic_tag\fP \fImodules\|.\|.\|.\fP
.I Requires:
repository.
.br
.I Changes:
repository.
.br
.I Synonym:
.B rfreeze
.br
You can use this command to assign symbolic tags to particular,
explicitly specified source versions in the repository.
.` "cvs rtag"
works directly on the repository contents (and requires no
prior
.BR checkout ).
Use
.` "cvs tag"
instead, to base the selection of
versions to tag on the contents of your working directory.
.SP
In general, tags (often the symbolic names of software distributions)
should not be removed, but the
.B \-d
option is available as a means to remove completely obsolete symbolic names
if necessary (as might be the case for an Alpha release, say).
.SP
.` "cvs rtag"
will not move a tag that already exists.  With the \fB\-F\fP option,
however,
.` "cvs rtag"
will re-locate any instance of \fIsymbolic_tag\fP that already exists
on that file to the new repository versions.  Without the \fB\-F\fP
option, attempting to use
.` "cvs rtag"
to apply a tag that already exists on that file will produce an error
message.
.SP
The \fB-b\fP option makes the tag a ``branch'' tag, allowing
concurrent, isolated development.
This is most useful for creating a patch to a previously released software
distribution.
.SP
You can use the standard \fB\-r\fP and \fB\-D\fP options to tag only those
files that already contain a certain tag.  This method would be used
to rename a tag: tag only the files identified by the old tag, then delete the
old tag, leaving the new tag on exactly the same files as the old tag.
.SP
.B rtag
executes recursively by default, tagging all subdirectories of
\fImodules\fP you specify in the argument.  You can restrict its
operation to top-level directories with the standard \fB\-l\fP option;
or you can explicitly request recursion with \fB\-R\fP.
.SP
The modules database can specify a program to execute whenever a tag
is specified; a typical use is to send electronic mail to a group of
interested parties.  If you want to bypass that program, use the
standard \fB\-n\fP option.
.SP
Use the
.B \-a
option to have
.B rtag
look in the
.` "Attic"
for removed files that contain the specified tag.
The tag is removed from these files, which makes it convenient to re-use a
symbolic tag as development continues (and files get removed from the
up-coming distribution).
.TP
\fBstatus\fP [\fB\-lRqQ\fP] [\fB\-v\fP] [\fIfiles\fP\|.\|.\|.]
.I Requires:
working directory, repository.
.br
.I Changes:
nothing.
.br
Display a brief report on the current status of \fIfiles\fP with
respect to the source repository, including any ``sticky'' tags,
dates, or \fB\-k\fP options.  (``Sticky'' options will restrict how
.` "cvs update"
operates until you reset them; see the
description of
.` "cvs update \-A\|.\|.\|.".)
.SP
You can also use this command to anticipate the potential impact of a
.` "cvs update"
on your working source directory.  If you do
not specify any \fIfiles\fP explicitly, reports are shown for all
files that \fBcvs\fP has placed in your working directory.  You can
limit the scope of this search to the current directory itself (not
its subdirectories) with the standard \fB\-l\fP option flag; or you
can explicitly request recursive status reports with the \fB\-R\fP
option.
.SP
The
.B \-v
option causes the symbolic tags for the
.SM RCS
file to be displayed as well.
.TP
\fBtag\fP [\fB\-lQqR\fP] [\fB\-F\fP] [\fB\-b\fP] [\fB\-d\fP] [\fB\-r\fP \fItag\fP | \fB\-D\fP \fIdate\fP] [\fB\-f\fP] \fIsymbolic_tag\fP [\fIfiles\fP\|.\|.\|.\|]
.I Requires:
working directory, repository.
.br
.I Changes:
repository.
.br
.I Synonym:
.B freeze
.br
Use this command to assign symbolic tags to the nearest repository
versions to your working sources.  The tags are applied immediately to
the repository, as with \fBrtag\fP.
.SP
One use for tags is to record a ``snapshot'' of the current sources
when the software freeze date of a project arrives.  As bugs are fixed
after the freeze date, only those changed sources that are to be part
of the release need be re-tagged.
.SP
The symbolic tags are meant to permanently record which revisions of which
files were used in creating a software distribution.
The
.BR checkout ,
.B export
and
.B update
commands allow you to extract an exact copy of a tagged release at any time in
the future, regardless of whether files have been changed, added, or removed
since the release was tagged.
.SP
You can use the standard \fB\-r\fP and \fB\-D\fP options to tag only those
files that already contain a certain tag.  This method would be used
to rename a tag: tag only the files identified by the old tag, then delete the
old tag, leaving the new tag on exactly the same files as the old tag.
.SP
Specifying the \fB\-f\fP flag in addition to the \fB\-r\fP or \fB\-D\fP
flags will tag those files named on the command line even if they do not
contain the old tag or did not exist on the specified date.
.SP
By default (without a \fB\-r\fP or \fB\-D\fP flag)
the versions to be tagged are supplied
implicitly by the \fBcvs\fP records of your working files' history
rather than applied explicitly.
.SP
If you use
.` "cvs tag \-d \fIsymbolic_tag\fP\|.\|.\|.",
the
symbolic tag you specify is
.I deleted
instead of being added.  \fIWarning\fP: Be very certain of your ground
before you delete a tag; doing this effectively discards some
historical information, which may later turn out to have been valuable.
.SP
.` "cvs tag"
will not move a tag that already exists.  With the \fB\-F\fP option,
however,
.` "cvs tag"
will re-locate any instance of \fIsymbolic_tag\fP that already exists
on that file to the new repository versions.  Without the \fB\-F\fP
option, attempting to use
.` "cvs tag"
to apply a tag that already exists on that file will produce an error
message.
.SP
The \fB-b\fP option makes the tag a ``branch'' tag, allowing
concurrent, isolated development.
This is most useful for creating a patch to a previously released software
distribution.
.SP
Normally,
.B tag
executes recursively through subdirectories; you can prevent this by
using the standard \fB\-l\fP option, or specify the recursion
explicitly by using \fB\-R\fP.
.TP
\fBupdate\fP [\fB\-Adf\|lPpQqR\fP] [\fB\-d\fP] [\fB\-r\fP \fItag\fP|\fB\-D\fP \fIdate\fP] \fIfiles\|.\|.\|.\fP
.I Requires:
repository, working directory.
.br
.I Changes:
working directory.
.br
After you've run
.B checkout
to create your private copy of source from the common repository,
other developers will continue changing the central source.  From time
to time, when it is convenient in your development process, you can
use the
.B update
command
from within your working directory to reconcile your work with any
revisions applied to  the source repository since your last
.B checkout
or
.BR update .
.SP
.B update
keeps you informed of its progress by printing a line for each file,
prefaced with one of the characters
.` "U A R M C ?"
to indicate the status of the file:
.TP 1i
\fBU\fP \fIfile\fP
The file was brought \fIup to date\fP with respect to the repository.
This is done for any file that exists in the repository but not in
your source, and for files that you haven't changed but are not the most
recent versions available in the repository.
.TP 1i
\fBA\fP \fIfile\fP
The file has been \fIadded\fP to your private copy of the sources, and
will be added to the
.SM RCS
source repository when you run
.` "cvs commit"
on the file.
This is a reminder to you that the file needs to be committed.
.TP 1i
\fBR\fP \fIfile\fP
The file has been \fIremoved\fP from your private copy of the sources, and
will be removed from the
.SM RCS
source repository when you run
.` "cvs commit"
on the file.
This is a reminder to you that the file needs to be committed.
.TP 1i
\fBM\fP \fIfile\fP
The file is \fImodified\fP in your working directory.
.` "M"
can indicate one of two states for a file you're working on: either
there were no modifications to the same file in the repository, so
that your file remains as you last saw it; or there were modifications
in the repository as well as in your copy, but they were
\fImerged\fP successfully, without conflict, in your working
directory.
.TP 1i
\fBC\fP \fIfile\fP
A \fIconflict\fP was detected while trying to merge your changes to
\fIfile\fP with changes from the source repository.  \fIfile\fP (the
copy in your working directory) is now the output of the
.BR rcsmerge ( 1 )
command on the two versions; an unmodified copy of your file is also
in your working directory, with the name `\fB.#\fP\fIfile\fP\fB.\fP\fIversion\fP',
where
.I version
is the
.SM RCS
revision that your modified file started from.
(Note that some systems automatically purge files that begin with
\&
.` ".#"
if they have not been accessed for a few days.
If you intend to keep a copy of your original file, it is a very good
idea to rename it.)
.TP 1i
\fB?\fP \fIfile\fP
\fIfile\fP is in your working directory, but does not correspond to
anything in the source repository, and is not in the list of files
for \fBcvs\fP to ignore (see the description of the \fB\-I\fP option).
.PP
.RS .5i
.SP
Use the
.B \-A
option to reset any sticky tags, dates, or
.B \-k
options.  (If you get a working copy of a file by using one of the
\fB\-r\fP, \fB\-D\fP, or \fB\-k\fP options, \fBcvs\fP remembers the
corresponding tag, date, or \fIkflag\fP and continues using it on
future updates; use the \fB\-A\fP option to make \fBcvs\fP forget these
specifications, and retrieve the ``head'' version of the file).
.SP
The \fB\-j\fP\fIbranch\fP option 
merges the changes made between the
resulting revision and the revision that it is based on (e.g., if
the tag refers to a branch,
.B cvs
will merge all changes made in
that branch into your working file).
.SP
With two \fB-j\fP options,
.B cvs
will merge in the changes between the two respective revisions.
This can be used to ``remove'' a certain delta from your working file.
E.g., If the file foo.c is based on
revision 1.6 and I want to remove the changes made between 1.3 and
1.5, I might do:
.SP
.in +1i
.ft B
.nf
example% cvs update -j1.5 -j1.3 foo.c	# note the order...
.fi
.ft P
.in -1i
.SP
In addition, each \fB-j\fP option can contain on optional date
specification which, when used with branches, can limit the chosen
revision to one within a specific date.
An optional date is specified by adding a colon (:) to the tag.
.SP
.in +1i
.ft B
.nf
-jSymbolic_Tag:Date_Specifier
.fi
.ft P
.in -1i
.SP
Use the
.B \-d
option to create any directories that exist in the repository if they're
missing from the working directory.  (Normally, update acts only on
directories and files that were already enrolled in your
working directory.)  This is useful for updating directories
that were created in the repository since the initial
\fBcheckout\fP; but it has an unfortunate side effect.  If you
deliberately avoided certain directories in the repository when you
created your working directory (either through use of a module name or by
listing explicitly the files and directories you wanted on the
command line), then updating with
.B \-d
will create those directories, which may not be what you want.
.SP
Use \fB\-I\fP \fIname\fP to ignore files whose names match \fIname\fP
(in your working directory) during the update.  You can specify
\fB\-I\fP more than once on the command line to specify several files
to ignore.  By default,
\fBupdate\fP ignores files whose names match any of the following:
.SP
.in +1i
.ft B
.nf
RCSLOG  RCS  SCCS
CVS*  cvslog.*
tags  TAGS
\&.make.state  .nse_depinfo
*~  #*  .#*  ,*
*.old  *.bak  *.BAK  *.orig  *.rej  .del\-*
*.a  *.o  *.so  *.Z  *.elc  *.ln  core
.fi
.ft P
.in -1i
.SP
Use
.` "\-I !"
to avoid ignoring any files at all.
.SP
The standard \fBcvs\fP command options \fB\-f\fP, \fB\-k\fP,
\fB\-l\fP, \fB\-P\fP, \fB\-p\fP, and \fB\-r\fP
are also available with \fBupdate\fP.
.RE
.SH "FILES"
For more detailed information on
.B cvs
supporting files, see
.BR cvs ( 5 ).
.LP
.I
Files in home directories:
.TP
\&.cvsrc
The
.B cvs
initialisation file.  Lines in this file can be used to specify default
options for each
.B cvs
command.  For example the line
.` "diff \-c"
will ensure that
.` "cvs diff"
is always passed the
.B \-c
option in addition to any other options passed on the command line.
.TP
\&.cvswrappers
Specifies wrappers to be used in addition to those specified in the
CVSROOT/cvswrappers file in the repository.
.LP
.I
Files in working directories:
.TP
CVS
A directory of \fBcvs\fP administrative files.
.I
Do not delete.
.TP
CVS/Entries
List and status of files in your working directory.
.TP
CVS/Entries.Backup
A backup of
.` "CVS/Entries".
.TP
CVS/Entries.Static
Flag: do not add more entries on
.` "cvs update".
.TP
CVS/Root
Pathname to the repository (
.SM CVSROOT
) location at the time of checkout.  This file is used instead
of the
.SM CVSROOT
environment variable if the environment variable is not
set.  A warning message will be issued when the contents of this
file and the
.SM CVSROOT
environment variable differ.  The file may be over-ridden by the
presence of the
.SM CVS_IGNORE_REMOTE_ROOT
environment variable.
.TP
CVS/Repository
Pathname to the corresponding directory in the source repository.
.TP
CVS/Tag
Contains the per-directory ``sticky'' tag or date information.
This file is created/updated when you specify
.B \-r
or
.B \-D
to the
.B checkout
or
.B update
commands, and no files are specified.
.TP
CVS/Checkin.prog
Name of program to run on
.` "cvs commit".
.TP
CVS/Update.prog
Name of program to run on
.` "cvs update".
.LP
.I
Files in source repositories:
.TP
$CVSROOT/CVSROOT
Directory of global administrative files for repository.
.TP
CVSROOT/commitinfo,v
Records programs for filtering
.` "cvs commit"
requests.
.TP
CVSROOT/cvswrappers,v
Records
.B cvs
wrapper commands to be used when checking files into and out of the
repository.  Wrappers allow the file or directory to be processed
on the way in and out of CVS.  The intended uses are many, one
possible use would be to reformat a C file before the file is checked
in, so all of the code in the repository looks the same.
.TP
CVSROOT/editinfo,v
Records programs for editing/validating
.` "cvs commit"
log entries.
.TP
CVSROOT/history
Log file of \fBcvs\fP transactions.
.TP
CVSROOT/loginfo,v
Records programs for piping
.` "cvs commit"
log entries.
.TP
CVSROOT/modules,v
Definitions for modules in this repository.
.TP
CVSROOT/rcsinfo,v
Records pathnames to templates used during a
.` "cvs commit"
operation.
.TP
CVSROOT/taginfo,v
Records programs for validating/logging
.` "cvs tag"
and
.` "cvs rtag"
operations.
.TP
MODULE/Attic
Directory for removed source files.
.TP
#cvs.lock
A lock directory created by
.B cvs
when doing sensitive changes to the
.SM RCS
source repository.
.TP
#cvs.tfl.\fIpid\fP
Temporary lock file for repository.
.TP
#cvs.rfl.\fIpid\fP
A read lock.
.TP
#cvs.wfl.\fIpid\fP
A write lock.
.SH "ENVIRONMENT VARIABLES"
.TP
.SM CVSROOT
Should contain the full pathname to the root of the
.B cvs
source repository (where the
.SM RCS
files are kept).  This information must be available to \fBcvs\fP for
most commands to execute; if
.SM CVSROOT
is not set, or if you wish to override it for one invocation, you can
supply it on the command line:
.` "cvs \-d \fIcvsroot cvs_command\fP\|.\|.\|."
You may not need to set
.SM CVSROOT
if your \fBcvs\fP binary has the right path compiled in; use
.` "cvs \-v"
to display all compiled-in paths.
.TP
.SM CVSREAD
If this is set,
.B checkout
and
.B update
will try hard to make the files in your working directory read-only.
When this is not set, the default behavior is to permit modification
of your working files.
.TP
.SM RCSBIN
Specifies the full pathname where to find
.SM RCS
programs, such as
.BR co ( 1 )
and
.BR ci ( 1 ).
If not set, a compiled-in value is used; see the display from
.` "cvs \-v".
.TP
.SM CVSEDITOR
Specifies the program to use for recording log messages during
.BR commit .
If not set, the
.SM EDITOR
environment variable is used instead.
If
.SM EDITOR
is not set either, the default is
.BR /usr/ucb/vi .
.TP
.SM CVS_IGNORE_REMOTE_ROOT
If this variable is set then
.B cvs
will ignore all references to remote repositories in the CVS/Root file.
.TP
.SM CVS_RSH
.B cvs
uses the contents of this variable to determine the name of the
remote shell command to use when starting a
.B cvs
server.  If this variable is not set then
.` "rsh"
is used.
.TP
.SM CVS_SERVER
.B cvs 
uses the contents of this variable to determine the name of the
.B cvs
server command.  If this variable is not set then
.` "cvs"
is used.
.TP
.SM CVSWRAPPERS
This variable is used by the
.` "cvswrappers"
script to determine the name of the wrapper file, in addition to the
wrappers defaults contained in the repository
.SM (CVSROOT/cvswrappers)
and the user's home directory (~/.cvswrappers).
.SH "AUTHORS"
.TP
Dick Grune
Original author of the
.B cvs
shell script version posted to
.B comp.sources.unix
in the volume6 release of December, 1986.
Credited with much of the
.B cvs
conflict resolution algorithms.
.TP
Brian Berliner
Coder and designer of the
.B cvs
program itself in April, 1989, based on the original work done by Dick.
.TP
Jeff Polk
Helped Brian with the design of the
.B cvs
module and vendor branch support and author of the
.BR checkin ( 1 )
shell script (the ancestor of
.` "cvs import").
.SH "SEE ALSO"
.BR ci ( 1 ),
.BR co ( 1 ),
.BR cvs ( 5 ),
.BR cvsbug ( 8 ),
.BR diff ( 1 ),
.BR grep ( 1 ),
.BR patch ( 1 ),
.BR rcs ( 1 ),
.BR rcsdiff ( 1 ),
.BR rcsmerge ( 1 ),
.BR rlog ( 1 ),
OpenPOWER on IntegriCloud