No empty .Rs/.Re
[netbsd-mini2440.git] / gnu / usr.bin / rcs / co / co.1
blob7c608e2966414f18547f2c2908a0f6d7f5696be0
1 .\"     $NetBSD: co.1,v 1.5 2002/02/08 01:26:50 ross Exp $
2 .\"
3 .de Id
4 .ds Rv \\$3
5 .ds Dt \\$4
6 ..
7 .\" Id: co.1,v 5.13 1995/06/01 16:23:43 eggert Exp
8 .ds i \&\s-1ISO\s0
9 .ds r \&\s-1RCS\s0
10 .ds u \&\s-1UTC\s0
11 .if n .ds - \%--
12 .if t .ds - \(em
13 .TH CO 1 \*(Dt GNU
14 .SH NAME
15 co \- check out RCS revisions
16 .SH SYNOPSIS
17 .B co
18 .RI [ options ] " file " .\|.\|.
19 .SH DESCRIPTION
20 .B co
21 retrieves a revision from each \*r file and stores it into
22 the corresponding working file.
23 .PP
24 Pathnames matching an \*r suffix denote \*r files;
25 all others denote working files.
26 Names are paired as explained in
27 .BR ci (1).
28 .PP
29 Revisions of an \*r file can be checked out locked or unlocked.  Locking a
30 revision prevents overlapping updates.  A revision checked out for reading or
31 processing (e.g., compiling) need not be locked.  A revision checked out
32 for editing and later checkin must normally be locked.  Checkout with locking
33 fails if the revision to be checked out is currently locked by another user.
34 (A lock can be broken with
35 .BR rcs "(1).)\ \&"
36 Checkout with locking also requires the caller to be on the access list of
37 the \*r file, unless he is the owner of the
38 file or the superuser, or the access list is empty.
39 Checkout without locking is not subject to access list restrictions, and is
40 not affected by the presence of locks.
41 .PP
42 A revision is selected by options for revision or branch number,
43 checkin date/time, author, or state.
44 When the selection options
45 are applied in combination,
46 .B co
47 retrieves the latest revision
48 that satisfies all of them.
49 If none of the selection options
50 is specified,
51 .B co
52 retrieves the latest revision
53 on the default branch (normally the trunk, see the
54 .B \-b
55 option of
56 .BR rcs (1)).
57 A revision or branch number can be attached
58 to any of the options
59 .BR \-f ,
60 .BR \-I ,
61 .BR \-l ,
62 .BR \-M ,
63 .BR \-p ,
64 .BR \-q ,
65 .BR \-r ,
67 .BR \-u .
68 The options
69 .B \-d
70 (date),
71 .B \-s
72 (state), and
73 .B \-w
74 (author)
75 retrieve from a single branch, the
76 .I selected
77 branch,
78 which is either specified by one of
79 .BR \-f ,
80 \&.\|.\|.,
81 .BR \-u ,
82 or the default branch.
83 .PP
85 .B co
86 command applied to an \*r
87 file with no revisions creates a zero-length working file.
88 .B co
89 always performs keyword substitution (see below).
90 .SH OPTIONS
91 .TP
92 .BR \-r [\f2rev\fP]
93 retrieves the latest revision whose number is less than or equal to
94 .IR rev .
96 .I rev
97 indicates a branch rather than a revision,
98 the latest revision on that branch is retrieved.
100 .I rev
101 is omitted, the latest revision on the default branch
102 (see the
103 .B \-b
104 option of
105 .BR rcs (1))
106 is retrieved.
108 .I rev
110 .BR $ ,
111 .B co
112 determines the revision number from keyword values in the working file.
113 Otherwise, a revision is composed of one or more numeric or symbolic fields
114 separated by periods.
116 .I rev
117 begins with a period,
118 then the default branch (normally the trunk) is prepended to it.
120 .I rev
121 is a branch number followed by a period,
122 then the latest revision on that branch is used.
123 The numeric equivalent of a symbolic field
124 is specified with the
125 .B \-n
126 option of the commands
127 .BR ci (1)
129 .BR rcs (1).
131 .BR \-l [\f2rev\fP]
132 same as
133 .BR \-r ,
134 except that it also locks the retrieved revision for
135 the caller.
137 .BR \-u [\f2rev\fP]
138 same as
139 .BR \-r ,
140 except that it unlocks the retrieved revision if it was
141 locked by the caller.  If
142 .I rev
143 is omitted,
144 .B \-u
145 retrieves the revision locked by the caller, if there is one; otherwise,
146 it retrieves the latest revision on the default branch.
148 .BR \-f [\f2rev\fP]
149 forces the overwriting of the working file;
150 useful in connection with
151 .BR \-q .
152 See also
153 .SM "FILE MODES"
154 below.
156 .B \-kkv
157 Generate keyword strings using the default form, e.g.\&
158 .B "$\&Revision: \*(Rv $"
159 for the
160 .B Revision
161 keyword.
162 A locker's name is inserted in the value of the
163 .BR Header ,
164 .BR Id ,
166 .B Locker
167 keyword strings
168 only as a file is being locked,
169 i.e. by
170 .B "ci\ \-l"
172 .BR "co\ \-l".
173 This is the default.
175 .B \-kkvl
176 Like
177 .BR \-kkv ,
178 except that a locker's name is always inserted
179 if the given revision is currently locked.
181 .B \-kk
182 Generate only keyword names in keyword strings; omit their values.
184 .SM "KEYWORD SUBSTITUTION"
185 below.
186 For example, for the
187 .B Revision
188 keyword, generate the string
189 .B $\&Revision$
190 instead of
191 .BR "$\&Revision: \*(Rv $" .
192 This option is useful to ignore differences due to keyword substitution
193 when comparing different revisions of a file.
194 Log messages are inserted after
195 .B $\&Log$
196 keywords even if
197 .B \-kk
198 is specified,
199 since this tends to be more useful when merging changes.
201 .B \-ko
202 Generate the old keyword string,
203 present in the working file just before it was checked in.
204 For example, for the
205 .B Revision
206 keyword, generate the string
207 .B "$\&Revision: 1.1 $"
208 instead of
209 .B "$\&Revision: \*(Rv $"
210 if that is how the string appeared when the file was checked in.
211 This can be useful for file formats
212 that cannot tolerate any changes to substrings
213 that happen to take the form of keyword strings.
215 .B \-kb
216 Generate a binary image of the old keyword string.
217 This acts like
218 .BR \-ko ,
219 except it performs all working file input and output in binary mode.
220 This makes little difference on POSIX and UNIX hosts,
221 but on DOS-like hosts one should use
222 .B "rcs\ \-i\ \-kb"
223 to initialize an \*r file intended to be used for binary files.
224 Also, on all hosts,
225 .BR rcsmerge (1)
226 normally refuses to merge files when
227 .B \-kb
228 is in effect.
230 .B \-kv
231 Generate only keyword values for keyword strings.
232 For example, for the
233 .B Revision
234 keyword, generate the string
235 .B \*(Rv
236 instead of
237 .BR "$\&Revision: \*(Rv $" .
238 This can help generate files in programming languages where it is hard to
239 strip keyword delimiters like
240 .B "$\&Revision:\ $"
241 from a string.
242 However, further keyword substitution cannot be performed once the
243 keyword names are removed, so this option should be used with care.
244 Because of this danger of losing keywords,
245 this option cannot be combined with
246 .BR \-l ,
247 and the owner write permission of the working file is turned off;
248 to edit the file later, check it out again without
249 .BR \-kv .
251 .BR \-p [\f2rev\fP]
252 prints the retrieved revision on the standard output rather than storing it
253 in the working file.
254 This option is useful when
255 .B co
256 is part of a pipe.
258 .BR \-q [\f2rev\fP]
259 quiet mode; diagnostics are not printed.
261 .BR \-I [\f2rev\fP]
262 interactive mode;
263 the user is prompted and questioned
264 even if the standard input is not a terminal.
266 .BI \-d date
267 retrieves the latest revision on the selected branch whose checkin date/time is
268 less than or equal to
269 .IR date .
270 The date and time can be given in free format.
271 The time zone
272 .B LT
273 stands for local time;
274 other common time zone names are understood.
275 For example, the following
276 .IR date s
277 are equivalent
278 if local time is January 11, 1990, 8pm Pacific Standard Time,
279 eight hours west of Coordinated Universal Time (\*u):
284 .ta \w'\f3Thu, 11 Jan 1990 20:00:00 \-0800\fP  'u
285 .ne 10
286 \f38:00 pm lt\fP
287 \f34:00 AM, Jan. 12, 1990\fP    default is \*u
288 \f31990-01-12 04:00:00+00\fP    \*i 8601 (\*u)
289 \f31990-01-11 20:00:00\-08\fP   \*i 8601 (local time)
290 \f31990/01/12 04:00:00\fP       traditional \*r format
291 \f3Thu Jan 11 20:00:00 1990 LT\fP       output of \f3ctime\fP(3) + \f3LT\fP
292 \f3Thu Jan 11 20:00:00 PST 1990\fP      output of \f3date\fP(1)
293 \f3Fri Jan 12 04:00:00 GMT 1990\fP
294 \f3Thu, 11 Jan 1990 20:00:00 \-0800\fP  Internet RFC 822
295 \f312-January-1990, 04:00 WET\fP
296 .ta 4n +4n +4n +4n
300 Most fields in the date and time can be defaulted.
301 The default time zone is normally \*u, but this can be overridden by the
302 .B \-z
303 option.
304 The other defaults are determined in the order year, month, day,
305 hour, minute, and second (most to least significant).  At least one of these
306 fields must be provided.  For omitted fields that are of higher significance
307 than the highest provided field, the time zone's current values are assumed.
308 For all other omitted fields,
309 the lowest possible values are assumed.
310 For example, without
311 .BR \-z ,
312 the date
313 .B "20, 10:30"
314 defaults to
315 10:30:00 \*u of the 20th of the \*u time zone's current month and year.
316 The date/time must be quoted if it contains spaces.
319 .BR \-M [\f2rev\fP]
320 Set the modification time on the new working file
321 to be the date of the retrieved revision.
322 Use this option with care; it can confuse
323 .BR make (1).
325 .BI \-s state
326 retrieves the latest revision on the selected branch whose state is set to
327 .IR state .
329 .B \-T
330 Preserve the modification time on the \*r file
331 even if the \*r file changes because a lock is added or removed.
332 This option can suppress extensive recompilation caused by a
333 .BR make (1)
334 dependency of some other copy of the working file on the \*r file.
335 Use this option with care; it can suppress recompilation even when it is needed,
336 i.e. when the change of lock
337 would mean a change to keyword strings in the other working file.
339 .BR \-w [\f2login\fP]
340 retrieves the latest revision on the selected branch which was checked in
341 by the user with login name
342 .IR login .
343 If the argument
344 .I login
346 omitted, the caller's login is assumed.
348 .BI \-j joinlist
349 generates a new revision which is the join of the revisions on
350 .IR joinlist .
351 This option is largely obsoleted by
352 .BR rcsmerge (1)
353 but is retained for backwards compatibility.
357 .I joinlist
358 is a comma-separated list of pairs of the form
359 .IB rev2 : rev3,
360 where
361 .I rev2
363 .I rev3
364 are (symbolic or numeric)
365 revision numbers.
366 For the initial such pair,
367 .I rev1
368 denotes the revision selected
369 by the above options
370 .BR \-f ,
371 \&.\|.\|.,
372 .BR \-w .
373 For all other pairs,
374 .I rev1
375 denotes the revision generated by the previous pair.
376 (Thus, the output
377 of one join becomes the input to the next.)
379 For each pair,
380 .B co
381 joins revisions
382 .I rev1
384 .I rev3
385 with respect to
386 .IR rev2 .
387 This means that all changes that transform
388 .I rev2
389 into
390 .I rev1
391 are applied to a copy of
392 .IR rev3 .
393 This is particularly useful if
394 .I rev1
396 .I rev3
397 are the ends of two branches that have
398 .I rev2
399 as a common ancestor.  If
400 .IR rev1 \*[Lt] rev2 \*[Lt] rev3
401 on the same branch,
402 joining generates a new revision which is like
403 .I rev3,
404 but with all changes that lead from
405 .I rev1
407 .I rev2
408 undone.
409 If changes from
410 .I rev2
412 .I rev1
413 overlap with changes from
414 .I rev2
416 .I rev3,
417 .B co
418 reports overlaps as described in
419 .BR merge (1).
421 For the initial pair,
422 .I rev2
423 can be omitted.  The default is the common
424 ancestor.
425 If any of the arguments indicate branches, the latest revisions
426 on those branches are assumed.
427 The options
428 .B \-l
430 .B \-u
431 lock or unlock
432 .IR rev1 .
435 .BI \-V
436 Print \*r's version number.
438 .BI \-V n
439 Emulate \*r version
440 .I n,
441 where
442 .I n
443 can be
444 .BR 3 ,
445 .BR 4 ,
447 .BR 5 .
448 This can be useful when interchanging \*r files with others who are
449 running older versions of \*r.
450 To see which version of \*r your correspondents are running, have them invoke
451 .BR "rcs \-V" ;
452 this works with newer versions of \*r.
453 If it doesn't work, have them invoke
454 .B rlog
455 on an \*r file;
456 if none of the first few lines of output contain the string
457 .B branch:
458 it is version 3;
459 if the dates' years have just two digits, it is version 4;
460 otherwise, it is version 5.
461 An \*r file generated while emulating version 3 loses its default branch.
462 An \*r revision generated while emulating version 4 or earlier has
463 a time stamp that is off by up to 13 hours.
464 A revision extracted while emulating version 4 or earlier contains
465 abbreviated dates of the form
466 .IB yy / mm / dd
467 and can also contain different white space and line prefixes
468 in the substitution for
469 .BR $\&Log$ .
471 .BI \-x "suffixes"
473 .I suffixes
474 to characterize \*r files.
476 .BR ci (1)
477 for details.
479 .BI \-z zone
480 specifies the date output format in keyword substitution,
481 and specifies the default time zone for
482 .I date
483 in the
484 .BI \-d date
485 option.
487 .I zone
488 should be empty, a numeric \*u offset, or the special string
489 .B LT
490 for local time.
491 The default is an empty
492 .IR zone ,
493 which uses the traditional \*r format of \*u without any time zone indication
494 and with slashes separating the parts of the date;
495 otherwise, times are output in \*i 8601 format with time zone indication.
496 For example, if local time is January 11, 1990, 8pm Pacific Standard Time,
497 eight hours west of \*u,
498 then the time is output as follows:
503 .ta \w'\f3\-z+05:30\fP  'u +\w'\f31990-01-11 09:30:00+05:30\fP  'u
504 .ne 4
505 \f2option\fP    \f2time output\fP
506 \f3\-z\fP       \f31990/01/12 04:00:00\fP       \f2(default)\fP
507 \f3\-zLT\fP     \f31990-01-11 20:00:00\-08\fP
508 \f3\-z+05:30\fP \f31990-01-12 09:30:00+05:30\fP
509 .ta 4n +4n +4n +4n
514 .B \-z
515 option does not affect dates stored in \*r files,
516 which are always \*u.
518 .SH "KEYWORD SUBSTITUTION"
519 Strings of the form
520 .BI $ keyword $
522 .BI $ keyword : .\|.\|. $
523 embedded in
524 the text are replaced
525 with strings of the form
526 .BI $ keyword : value $
527 where
528 .I keyword
530 .I value
531 are pairs listed below.
532 Keywords can be embedded in literal strings
533 or comments to identify a revision.
535 Initially, the user enters strings of the form
536 .BI $ keyword $ .
537 On checkout,
538 .B co
539 replaces these strings with strings of the form
540 .BI $ keyword : value $ .
541 If a revision containing strings of the latter form
542 is checked back in, the value fields will be replaced during the next
543 checkout.
544 Thus, the keyword values are automatically updated on checkout.
545 This automatic substitution can be modified by the
546 .B \-k
547 options.
549 Keywords and their corresponding values:
551 .B $\&Author$
552 The login name of the user who checked in the revision.
554 .B $\&Date$
555 The date and time the revision was checked in.
556 With
557 .BI \-z zone
558 a numeric time zone offset is appended; otherwise, the date is \*u.
560 .B $\&Header$
561 A standard header containing the full pathname of the \*r file, the
562 revision number, the date and time, the author, the state,
563 and the locker (if locked).
564 With
565 .BI \-z zone
566 a numeric time zone offset is appended to the date; otherwise, the date is \*u.
568 .B $\&Id$
569 Same as
570 .BR $\&Header$ ,
571 except that the \*r filename is without a path.
573 .B $\&Locker$
574 The login name of the user who locked the revision (empty if not locked).
576 .B $\&Log$
577 The log message supplied during checkin, preceded by a header
578 containing the \*r filename, the revision number, the author, and the date
579 and time.
580 With
581 .BI \-z zone
582 a numeric time zone offset is appended; otherwise, the date is \*u.
583 Existing log messages are
584 .I not
585 replaced.
586 Instead, the new log message is inserted after
587 .BR $\&Log: .\|.\|. $ .
588 This is useful for
589 accumulating a complete change log in a source file.
592 Each inserted line is prefixed by the string that prefixes the
593 .B $\&Log$
594 line.  For example, if the
595 .B $\&Log$
596 line is
597 .RB \*(lq "//\ $\&Log: tan.cc\ $" \*(rq,
598 \*r prefixes each line of the log with
599 .RB \*(lq "//\ " \*(rq.
600 This is useful for languages with comments that go to the end of the line.
601 The convention for other languages is to use a
602 .RB \*(lq " \(** " \(rq
603 prefix inside a multiline comment.
604 For example, the initial log comment of a C program
605 conventionally is of the following form:
609 .ft 3
610 .ne 3
611 /\(**
612 .in +\w'/'u
613 \(** $\&Log$
614 \(**/
620 For backwards compatibility with older versions of \*r, if the log prefix is
621 .B /\(**
623 .B (\(**
624 surrounded by optional white space, inserted log lines contain a space
625 instead of
626 .B /
628 .BR ( ;
629 however, this usage is obsolescent and should not be relied on.
632 .B $\&Name$
633 The symbolic name used to check out the revision, if any.
634 For example,
635 .B "co\ \-rJoe"
636 generates
637 .BR "$\&Name:\ Joe\ $" .
638 Plain
639 .B co
640 generates just
641 .BR "$\&Name:\ \ $" .
643 .B $\&RCSfile$
644 The name of the \*r file without a path.
646 .B $\&Revision$
647 The revision number assigned to the revision.
649 .B $\&Source$
650 The full pathname of the \*r file.
652 .B $\&State$
653 The state assigned to the revision with the
654 .B \-s
655 option of
656 .BR rcs (1)
658 .BR ci (1).
660 The following characters in keyword values are represented by escape sequences
661 to keep keyword strings well-formed.
665 .ne 6
666 .ta \w'newline  'u
667 \f2char escape sequence\fP
668 tab     \f3\et\fP
669 newline \f3\en\fP
670 space   \f3\e040
671 $       \e044
672 \e      \e\e\fP
675 .SH "FILE MODES"
676 The working file inherits the read and execute permissions from the \*r
677 file.  In addition, the owner write permission is turned on, unless
678 .B \-kv
679 is set or the file
680 is checked out unlocked and locking is set to strict (see
681 .BR rcs (1)).
683 If a file with the name of the working file exists already and has write
684 permission,
685 .B co
686 aborts the checkout,
687 asking beforehand if possible.
688 If the existing working file is
689 not writable or
690 .B \-f
691 is given, the working file is deleted without asking.
692 .SH FILES
693 .B co
694 accesses files much as
695 .BR ci (1)
696 does, except that it does not need to read the working file
697 unless a revision number of
698 .B $
699 is specified.
700 .SH ENVIRONMENT
702 .B \s-1RCSINIT\s0
703 options prepended to the argument list, separated by spaces.
705 .BR ci (1)
706 for details.
707 .SH DIAGNOSTICS
708 The \*r pathname, the working pathname,
709 and the revision number retrieved are
710 written to the diagnostic output.
711 The exit status is zero if and only if all operations were successful.
712 .SH IDENTIFICATION
713 Author: Walter F. Tichy.
715 Manual Page Revision: \*(Rv; Release Date: \*(Dt.
717 Copyright \(co 1982, 1988, 1989 Walter F. Tichy.
719 Copyright \(co 1990, 1991, 1992, 1993, 1994, 1995 Paul Eggert.
720 .SH "SEE ALSO"
721 rcsintro(1), ci(1), ctime(3), date(1), ident(1), make(1),
722 rcs(1), rcsclean(1), rcsdiff(1), rcsmerge(1), rlog(1),
723 rcsfile(5)
725 Walter F. Tichy,
726 \*r\*-A System for Version Control,
727 .I "Software\*-Practice \*[Am] Experience"
728 .BR 15 ,
729 7 (July 1985), 637-654.
730 .SH LIMITS
731 Links to the \*r and working files are not preserved.
733 There is no way to selectively suppress the expansion of keywords, except
734 by writing them differently.  In nroff and troff, this is done by embedding the
735 null-character
736 .B \e\*[Am]
737 into the keyword.