Add the DragonFly cvs id and perform general cleanups on cvs/rcs/sccs ids. Most
[dragonfly.git] / gnu / usr.bin / rcs / ci / ci.1
1 .de Id
2 .ds Rv \\$3
3 .ds Dt \\$4
4 ..
5 .Id $FreeBSD: src/gnu/usr.bin/rcs/ci/ci.1,v 1.6 1999/08/27 23:36:38 peter Exp $
6 .Id $DragonFly: src/gnu/usr.bin/rcs/ci/ci.1,v 1.2 2003/06/17 04:25:47 dillon Exp $
7 .ds i \&\s-1ISO\s0
8 .ds r \&\s-1RCS\s0
9 .ds u \&\s-1UTC\s0
10 .if n .ds - \%--
11 .if t .ds - \(em
12 .TH CI 1 \*(Dt GNU
13 .SH NAME
14 ci \- check in RCS revisions
15 .SH SYNOPSIS
16 .B ci
17 .RI [ options ] " file " .\|.\|.
18 .SH DESCRIPTION
19 .B ci
20 stores new revisions into \*r files.
21 Each pathname matching an \*r suffix
22 is taken to be an \*r file.
23 All others
24 are assumed to be working files containing new revisions.
25 .B ci
26 deposits the contents of each working file
27 into the corresponding \*r file.
28 If only a working file is given,
29 .B ci
30 tries to find the corresponding \*r file in an \*r subdirectory
31 and then in the working file's directory.
32 For more details, see
33 .SM "FILE NAMING"
34 below.
35 .PP
36 For
37 .B ci
38 to work, the caller's login must be on the access list,
39 except if the access list is empty or the caller is the superuser or the
40 owner of the file.
41 To append a new revision to an existing branch, the tip revision on
42 that branch must be locked by the caller.  Otherwise, only a
43 new branch can be created.  This restriction is not enforced
44 for the owner of the file if non-strict locking is used
45 (see
46 .BR rcs (1)).
47 A lock held by someone else can be broken with the
48 .B rcs
49 command.
50 .PP
51 Unless the
52 .B \-f
53 option is given,
54 .B ci
55 checks whether the revision to be deposited differs from the preceding one.
56 If not, instead of creating a new revision
57 .B ci
58 reverts to the preceding one.
59 To revert, ordinary
60 .B ci
61 removes the working file and any lock;
62 .B "ci\ \-l"
63 keeps and
64 .B "ci\ \-u"
65 removes any lock, and then they both generate a new working file much as if
66 .B "co\ \-l"
67 or
68 .B "co\ \-u"
69 had been applied to the preceding revision.
70 When reverting, any
71 .B \-n
72 and
73 .B \-s
74 options apply to the preceding revision.
75 .PP
76 For each revision deposited,
77 .B ci
78 prompts for a log message.
79 The log message should summarize the change and must be terminated by
80 end-of-file or by a line containing
81 .BR \&. "\ by"
82 itself.
83 If several files are checked in
84 .B ci
85 asks whether to reuse the
86 previous log message.
87 If the standard input is not a terminal,
88 .B ci
89 suppresses the prompt
90 and uses the same log message for all files.
91 See also
92 .BR \-m .
93 .PP
94 If the \*r file does not exist,
95 .B ci
96 creates it and
97 deposits the contents of the working file as the initial revision
98 (default number:
99 .BR 1.1 ).
100 The access list is initialized to empty.
101 Instead of the log message,
102 .B ci
103 requests descriptive text (see
104 .B \-t
105 below).
106 .PP
107 The number
108 .I rev
109 of the deposited revision can be given by any of the options
110 .BR \-f ,
111 .BR \-i ,
112 .BR \-I ,
113 .BR \-j ,
114 .BR \-k ,
115 .BR \-l ,
116 .BR \-M ,
117 .BR \-q ,
118 .BR \-r ,
119 or
120 .BR \-u .
121 .I rev
122 can be symbolic, numeric, or mixed.
123 Symbolic names in
124 .I rev
125 must already be defined;
126 see the
127 .B \-n
128 and
129 .B \-N
130 options for assigning names during checkin.
131 If
132 .I rev
133 is
134 .BR $ ,
135 .B ci
136 determines the revision number from keyword values in the working file.
137 .PP
138 If
139 .I rev
140 begins with a period,
141 then the default branch (normally the trunk) is prepended to it.
142 If
143 .I rev
144 is a branch number followed by a period,
145 then the latest revision on that branch is used.
146 .PP
147 If
148 .I rev
149 is a revision number, it must be higher than the latest
150 one on the branch to which
151 .I rev
152 belongs, or must start a new branch.
153 .PP
154 If
155 .I rev
156 is a branch rather than a revision number,
157 the new revision is appended to that branch.  The level number is obtained
158 by incrementing the tip revision number of that branch.
159 If
160 .I rev
161 indicates a non-existing branch,
162 that branch is created with the initial revision numbered
163 .IB rev .1\f1.\fP
164 .br
165 .ne 8
166 .PP
167 If
168 .I rev
169 is omitted,
170 .B ci
171 tries to derive the new revision number from
172 the caller's last lock.  If the caller has locked the tip revision of a branch,
173 the new revision is appended to that branch.
174 The new revision number is obtained
175 by incrementing the tip revision number.
176 If the caller locked a non-tip revision, a new branch is started at
177 that revision by incrementing the highest branch number at that revision.
178 The default initial branch and level numbers are
179 .BR 1 .
180 .PP
181 If
182 .I rev
183 is omitted and the caller has no lock, but owns
184 the file and locking
185 is not set to
186 .IR strict ,
187 then the revision is appended to the
188 default branch (normally the trunk; see the
189 .B \-b
190 option of
191 .BR rcs (1)).
192 .PP
193 Exception: On the trunk, revisions can be appended to the end, but
194 not inserted.
195 .SH OPTIONS
196 .TP
197 .BI \-r rev
198 Check in revision
199 .IR rev .
200 .TP
201 .BR \-r
202 The bare
203 .B \-r
204 option (without any revision) has an unusual meaning in
205 .BR ci .
206 With other \*r commands, a bare
207 .B \-r
208 option specifies the most recent revision on the default branch,
209 but with
210 .BR ci ,
211 a bare
212 .B \-r
213 option reestablishes the default behavior of releasing a lock and
214 removing the working file, and is used to override any default
215 .B \-l
216 or
217 .B \-u
218 options established by shell aliases or scripts.
219 .TP
220 .BR \-l [\f2rev\fP]
221 works like
222 .BR \-r ,
223 except it performs an additional
224 .B "co\ \-l"
225 for the
226 deposited revision.  Thus, the deposited revision is immediately
227 checked out again and locked.
228 This is useful for saving a revision although one wants to continue
229 editing it after the checkin.
230 .TP
231 .BR \-u [\f2rev\fP]
232 works like
233 .BR \-l ,
234 except that the deposited revision is not locked.
235 This lets one read the working file
236 immediately after checkin.
237 .RS
238 .PP
239 The
240 .BR \-l ,
241 bare
242 .BR \-r ,
243 and
244 .B \-u
245 options are mutually exclusive and silently override each other.
246 For example,
247 .B "ci\ \-u\ \-r"
248 is equivalent to
249 .B "ci\ \-r"
250 because bare
251 .B \-r
252 overrides
253 .BR \-u .
254 .RE
255 .TP
256 .BR \-f [\f2rev\fP]
257 forces a deposit; the new revision is deposited even it is not different
258 from the preceding one.
259 .TP
260 .BR \-k [\f2rev\fP]
261 searches the working file for keyword values to determine its revision number,
262 creation date, state, and author (see
263 .BR co (1)),
264 and assigns these
265 values to the deposited revision, rather than computing them locally.
266 It also generates a default login message noting the login of the caller
267 and the actual checkin date.
268 This option is useful for software distribution.  A revision that is sent to
269 several sites should be checked in with the
270 .B \-k
271 option at these sites to
272 preserve the original number, date, author, and state.
273 The extracted keyword values and the default log message can be overridden
274 with the options
275 .BR \-d ,
276 .BR \-m ,
277 .BR \-s ,
278 .BR \-w ,
279 and any option that carries a revision number.
280 .TP
281 .BR \-q [\f2rev\fP]
282 quiet mode; diagnostic output is not printed.
283 A revision that is not different from the preceding one is not deposited,
284 unless
285 .B \-f
286 is given.
287 .TP
288 .BR \-i [\f2rev\fP]
289 initial checkin; report an error if the \*r file already exists.
290 This avoids race conditions in certain applications.
291 .TP
292 .BR \-j [\f2rev\fP]
293 just checkin and do not initialize;
294 report an error if the \*r file does not already exist.
295 .TP
296 .BR \-I [\f2rev\fP]
297 interactive mode;
298 the user is prompted and questioned
299 even if the standard input is not a terminal.
300 .TP
301 .BR \-d "[\f2date\fP]"
302 uses
303 .I date
304 for the checkin date and time.
305 The
306 .I date
307 is specified in free format as explained in
308 .BR co (1).
309 This is useful for lying about the checkin date, and for
310 .B \-k
311 if no date is available.
312 If
313 .I date
314 is empty, the working file's time of last modification is used.
315 .TP
316 .BR \-M [\f2rev\fP]
317 Set the modification time on any new working file
318 to be the date of the retrieved revision.
319 For example,
320 .BI "ci\ \-d\ \-M\ \-u" "\ f"
321 does not alter
322 .IR f 's
323 modification time, even if
324 .IR f 's
325 contents change due to keyword substitution.
326 Use this option with care; it can confuse
327 .BR make (1).
328 .TP
329 .BI \-m "msg"
330 uses the string
331 .I msg
332 as the log message for all revisions checked in.
333 By convention, log messages that start with
334 .B #
335 are comments and are ignored by programs like GNU Emacs's
336 .B vc
337 package.
338 Also, log messages that start with
339 .BI { clumpname }
340 (followed by white space) are meant to be clumped together if possible,
341 even if they are associated with different files; the
342 .BI { clumpname }
343 label is used only for clumping,
344 and is not considered to be part of the log message itself.
345 .TP
346 .BI \-n "name"
347 assigns the symbolic name
348 .I name
349 to the number of the checked-in revision.
350 .B ci
351 prints an error message if
352 .I name
353 is already assigned to another
354 number.
355 .TP
356 .BI \-N "name"
357 same as
358 .BR \-n ,
359 except that it overrides a previous assignment of
360 .IR name .
361 .TP
362 .BI \-s "state"
363 sets the state of the checked-in revision to the identifier
364 .IR state .
365 The default state is
366 .BR Exp .
367 .TP
368 .BI \-t file
369 writes descriptive text from the contents of the named
370 .I file
371 into the \*r file,
372 deleting the existing text.
373 The
374 .I file
375 cannot begin with
376 .BR \- .
377 .TP
378 .BI \-t\- string
379 Write descriptive text from the
380 .I string
381 into the \*r file, deleting the existing text.
382 .RS
383 .PP
384 The
385 .B \-t
386 option, in both its forms, has effect only during an initial checkin;
387 it is silently ignored otherwise.
388 .PP
389 During the initial checkin, if
390 .B \-t
391 is not given,
392 .B ci
393 obtains the text from standard input,
394 terminated by end-of-file or by a line containing
395 .BR \&. "\ by"
396 itself.
397 The user is prompted for the text if interaction is possible; see
398 .BR \-I .
399 .PP
400 For backward compatibility with older versions of \*r, a bare
401 .B \-t
402 option is ignored.
403 .RE
404 .TP
405 .B \-T
406 Set the \*r file's modification time to the new revision's time
407 if the former precedes the latter and there is a new revision;
408 preserve the \*r file's modification time otherwise.
409 If you have locked a revision,
410 .B ci
411 usually updates the \*r file's modification time to the current time,
412 because the lock is stored in the \*r file
413 and removing the lock requires changing the \*r file.
414 This can create an \*r file newer than the working file in one of two ways:
415 first,
416 .B "ci\ \-M"
417 can create a working file with a date before the current time;
418 second, when reverting to the previous revision
419 the \*r file can change while the working file remains unchanged.
420 These two cases can cause excessive recompilation caused by a
421 .BR make (1)
422 dependency of the working file on the \*r file.
423 The
424 .B \-T
425 option inhibits this recompilation by lying about the \*r file's date.
426 Use this option with care; it can suppress recompilation even when
427 a checkin of one working file should affect
428 another working file associated with the same \*r file.
429 For example, suppose the \*r file's time is 01:00,
430 the (changed) working file's time is 02:00,
431 some other copy of the working file has a time of 03:00,
432 and the current time is 04:00.
433 Then
434 .B "ci\ \-d\ \-T"
435 sets the \*r file's time to 02:00 instead of the usual 04:00;
436 this causes
437 .BR make (1)
438 to think (incorrectly) that the other copy is newer than the \*r file.
439 .TP
440 .BI \-w "login"
441 uses
442 .I login
443 for the author field of the deposited revision.
444 Useful for lying about the author, and for
445 .B \-k
446 if no author is available.
447 .TP
448 .BI \-V
449 Print \*r's version number.
450 .TP
451 .BI \-V n
452 Emulate \*r version
453 .IR n .
454 See
455 .BR co (1)
456 for details.
457 .TP
458 .BI \-x "suffixes"
459 specifies the suffixes for \*r files.
460 A nonempty suffix matches any pathname ending in the suffix.
461 An empty suffix matches any pathname of the form
462 .BI RCS/ path
463 or
464 .IB path1 /RCS/ path2.
465 The
466 .B \-x
467 option can specify a list of suffixes
468 separated by
469 .BR / .
470 For example,
471 .B \-x,v/
472 specifies two suffixes:
473 .B ,v
474 and the empty suffix.
475 If two or more suffixes are specified,
476 they are tried in order when looking for an \*r file;
477 the first one that works is used for that file.
478 If no \*r file is found but an \*r file can be created,
479 the suffixes are tried in order
480 to determine the new \*r file's name.
481 The default for
482 .IR suffixes
483 is installation-dependent; normally it is
484 .B ,v/
485 for hosts like Unix that permit commas in filenames,
486 and is empty (i.e. just the empty suffix) for other hosts.
487 .TP
488 .BI \-z zone
489 specifies the date output format in keyword substitution,
490 and specifies the default time zone for
491 .I date
492 in the
493 .BI \-d date
494 option.
495 The
496 .I zone
497 should be empty, a numeric \*u offset, or the special string
498 .B LT
499 for local time.
500 The default is an empty
501 .IR zone ,
502 which uses the traditional \*r format of \*u without any time zone indication
503 and with slashes separating the parts of the date;
504 otherwise, times are output in \*i 8601 format with time zone indication.
505 For example, if local time is January 11, 1990, 8pm Pacific Standard Time,
506 eight hours west of \*u,
507 then the time is output as follows:
508 .RS
509 .LP
510 .RS
511 .nf
512 .ta \w'\f3\-z+05:30\fP  'u +\w'\f31990-01-11 09:30:00+05:30\fP  'u
513 .ne 4
514 \f2option\fP    \f2time output\fP
515 \f3\-z\fP       \f31990/01/12 04:00:00\fP       \f2(default)\fP
516 \f3\-zLT\fP     \f31990-01-11 20:00:00\-08\fP
517 \f3\-z+05:30\fP \f31990-01-12 09:30:00+05:30\fP
518 .ta 4n +4n +4n +4n
519 .fi
520 .RE
521 .LP
522 The
523 .B \-z
524 option does not affect dates stored in \*r files,
525 which are always \*u.
526 .SH "FILE NAMING"
527 Pairs of \*r files and working files can be specified in three ways
528 (see also the
529 example section).
530 .PP
531 1) Both the \*r file and the working file are given.  The \*r pathname is of
532 the form
533 .IB path1 / workfileX
534 and the working pathname is of the form
535 .IB path2 / workfile
536 where
537 .IB path1 /
538 and
539 .IB path2 /
540 are (possibly different or empty) paths,
541 .I workfile
542 is a filename, and
543 .I X
544 is an \*r suffix.
545 If
546 .I X
547 is empty,
548 .IB path1 /
549 must start with
550 .B RCS/
551 or must contain
552 .BR /RCS/ .
553 .PP
554 2) Only the \*r file is given.  Then the working file is created in the current
555 directory and its name is derived from the name of the \*r file
556 by removing
557 .IB path1 /
558 and the suffix
559 .IR X .
560 .PP
561 3) Only the working file is given.
562 Then
563 .B ci
564 considers each \*r suffix
565 .I X
566 in turn, looking for an \*r file of the form
567 .IB path2 /RCS/ workfileX
568 or (if the former is not found and
569 .I X
570 is nonempty)
571 .IB path2 / workfileX.
572 .PP
573 If the \*r file is specified without a path in 1) and 2),
574 .B ci
575 looks for the \*r file first in the directory
576 .B ./RCS
577 and then in the current
578 directory.
579 .PP
580 .B ci
581 reports an error if an attempt to open an \*r file fails for an unusual reason,
582 even if the \*r file's pathname is just one of several possibilities.
583 For example, to suppress use of \*r commands in a directory
584 .IR d ,
585 create a regular file named
586 .IB d /RCS
587 so that casual attempts to use \*r commands in
588 .I d
589 fail because
590 .IB d /RCS
591 is not a directory.
592 .SH EXAMPLES
593 Suppose
594 .B ,v
595 is an \*r suffix and the current directory contains a subdirectory
596 .B RCS
597 with an \*r file
598 .BR io.c,v .
599 Then each of the following commands check in a copy of
600 .B io.c
601 into
602 .B RCS/io.c,v
603 as the latest revision, removing
604 .BR io.c .
605 .LP
606 .RS
607 .nf
608 .ft 3
609 ci  io.c;    ci  RCS/io.c,v;   ci  io.c,v;
610 ci  io.c  RCS/io.c,v;    ci  io.c  io.c,v;
611 ci  RCS/io.c,v  io.c;    ci  io.c,v  io.c;
612 .ft
613 .fi
614 .RE
615 .PP
616 Suppose instead that the empty suffix
617 is an \*r suffix and the current directory contains a subdirectory
618 .B RCS
619 with an \*r file
620 .BR io.c .
621 The each of the following commands checks in a new revision.
622 .LP
623 .RS
624 .nf
625 .ft 3
626 ci  io.c;    ci  RCS/io.c;
627 ci  io.c  RCS/io.c;
628 ci  RCS/io.c  io.c;
629 .ft
630 .fi
631 .RE
632 .SH "FILE MODES"
633 An \*r file created by
634 .B ci
635 inherits the read and execute permissions
636 from the working file.  If the \*r file exists already,
637 .B ci
638 preserves its read and execute permissions.
639 .B ci
640 always turns off all write permissions of \*r files.
641 .SH FILES
642 Temporary files are created in the directory containing
643 the working file, and also in the temporary directory (see
644 .B \s-1TMPDIR\s0
645 under
646 .BR \s-1ENVIRONMENT\s0 ).
647 A semaphore file or files are created in the directory containing the \*r file.
648 With a nonempty suffix, the semaphore names begin with
649 the first character of the suffix; therefore, do not specify an suffix
650 whose first character could be that of a working filename.
651 With an empty suffix, the semaphore names end with
652 .B _
653 so working filenames should not end in
654 .BR _ .
655 .PP
656 .B ci
657 never changes an \*r or working file.
658 Normally,
659 .B ci
660 unlinks the file and creates a new one;
661 but instead of breaking a chain of one or more symbolic links to an \*r file,
662 it unlinks the destination file instead.
663 Therefore,
664 .B ci
665 breaks any hard or symbolic links to any working file it changes;
666 and hard links to \*r files are ineffective,
667 but symbolic links to \*r files are preserved.
668 .PP
669 The effective user must be able to
670 search and write the directory containing the \*r file.
671 Normally, the real user must be able to
672 read the \*r and working files
673 and to search and write the directory containing the working file;
674 however, some older hosts
675 cannot easily switch between real and effective users,
676 so on these hosts the effective user is used for all accesses.
677 The effective user is the same as the real user
678 unless your copies of
679 .B ci
680 and
681 .B co
682 have setuid privileges.
683 As described in the next section,
684 these privileges yield extra security if
685 the effective user owns all \*r files and directories,
686 and if only the effective user can write \*r directories.
687 .PP
688 Users can control access to \*r files by setting the permissions
689 of the directory containing the files; only users with write access
690 to the directory can use \*r commands to change its \*r files.
691 For example, in hosts that allow a user to belong to several groups,
692 one can make a group's \*r directories writable to that group only.
693 This approach suffices for informal projects,
694 but it means that any group member can arbitrarily change the group's \*r files,
695 and can even remove them entirely.
696 Hence more formal projects sometimes distinguish between an \*r administrator,
697 who can change the \*r files at will, and other project members,
698 who can check in new revisions but cannot otherwise change the \*r files.
699 .SH "SETUID USE"
700 To prevent anybody but their \*r administrator from deleting revisions,
701 a set of users can employ setuid privileges as follows.
702 .nr n \w'\(bu'+2n-1/1n
703 .ds n \nn
704 .if \n(.g .if r an-tag-sep .ds n \w'\(bu'u+\n[an-tag-sep]u
705 .IP \(bu \*n
706 Check that the host supports \*r setuid use.
707 Consult a trustworthy expert if there are any doubts.
708 It is best if the
709 .B seteuid
710 system call works as described in Posix 1003.1a Draft 5,
711 because \*r can switch back and forth easily
712 between real and effective users, even if the real user is
713 .BR root .
714 If not, the second best is if the
715 .B setuid
716 system call supports saved setuid
717 (the {\s-1_POSIX_SAVED_IDS\s0} behavior of Posix 1003.1-1990);
718 this fails only if the real or effective user is
719 .BR root .
720 If \*r detects any failure in setuid, it quits immediately.
721 .IP \(bu \nn
722 Choose a user
723 .I A
724 to serve as \*r administrator for the set of users.
725 Only
726 .I A
727 can invoke the
728 .B rcs
729 command on the users' \*r files.
730 .I A
731 should not be
732 .B root
733 or any other user with special powers.
734 Mutually suspicious sets of users should use different administrators.
735 .IP \(bu \nn
736 Choose a pathname
737 .I B
738 to be a directory of files to be executed by the users.
739 .IP \(bu \nn
740 Have
741 .I A
742 set up
743 .I B
744 to contain copies of
745 .B ci
746 and
747 .B co
748 that are setuid to
749 .I A
750 by copying the commands from their standard installation directory
751 .I D
752 as follows:
753 .LP
754 .RS
755 .nf
756 .ne 3
757 \f3mkdir\fP  \f2B\fP
758 \f3cp\fP  \f2D\fP\^\f3/c[io]\fP  \f2B\fP
759 \f3chmod  go\-w,u+s\fP  \f2B\fP\f3/c[io]\fP
760 .fi
761 .RE
762 .IP \(bu \nn
763 Have each user prepend
764 .I B
765 to their path as follows:
766 .LP
767 .RS
768 .nf
769 .ne 2
770 \f3PATH=\fP\f2B\fP\f3:$PATH;  export  PATH\fP  # ordinary shell
771 \f3set  path=(\fP\f2B\fP  \f3$path)\fP  # C shell
772 .fi
773 .RE
774 .IP \(bu \nn
775 Have
776 .I A
777 create each \*r directory
778 .I R
779 with write access only to
780 .I A
781 as follows:
782 .LP
783 .RS
784 .nf
785 .ne 2
786 \f3mkdir\fP  \f2R\fP
787 \f3chmod  go\-w\fP  \f2R\fP
788 .fi
789 .RE
790 .IP \(bu \nn
791 If you want to let only certain users read the \*r files,
792 put the users into a group
793 .IR G ,
794 and have
795 .I A
796 further protect the \*r directory as follows:
797 .LP
798 .RS
799 .nf
800 .ne 2
801 \f3chgrp\fP  \f2G  R\fP
802 \f3chmod  g\-w,o\-rwx\fP  \f2R\fP
803 .fi
804 .RE
805 .IP \(bu \nn
806 Have
807 .I A
808 copy old \*r files (if any) into
809 .IR R ,
810 to ensure that
811 .I A
812 owns them.
813 .IP \(bu \nn
814 An \*r file's access list limits who can check in and lock revisions.
815 The default access list is empty,
816 which grants checkin access to anyone who can read the \*r file.
817 If you want limit checkin access,
818 have
819 .I A
820 invoke
821 .B "rcs\ \-a"
822 on the file; see
823 .BR rcs (1).
824 In particular,
825 .BI "rcs\ \-e\ \-a" A
826 limits access to just
827 .IR A .
828 .IP \(bu \nn
829 Have
830 .I A
831 initialize any new \*r files with
832 .B "rcs\ \-i"
833 before initial checkin, adding the
834 .B \-a
835 option if you want to limit checkin access.
836 .IP \(bu \nn
837 Give setuid privileges only to
838 .BR ci ,
839 .BR co ,
840 and
841 .BR rcsclean ;
842 do not give them to
843 .B rcs
844 or to any other command.
845 .IP \(bu \nn
846 Do not use other setuid commands to invoke \*r commands;
847 setuid is trickier than you think!
848 .SH ENVIRONMENT
849 .TP
850 .B \s-1RCSINIT\s0
851 options prepended to the argument list, separated by spaces.
852 A backslash escapes spaces within an option.
853 The
854 .B \s-1RCSINIT\s0
855 options are prepended to the argument lists of most \*r commands.
856 Useful
857 .B \s-1RCSINIT\s0
858 options include
859 .BR \-q ,
860 .BR \-V ,
861 .BR \-x ,
862 and
863 .BR \-z .
864 .TP
865 .B \s-1TMPDIR\s0
866 Name of the temporary directory.
867 If not set, the environment variables
868 .B \s-1TMP\s0
869 and
870 .B \s-1TEMP\s0
871 are inspected instead and the first value found is taken;
872 if none of them are set,
873 a host-dependent default is used, typically
874 .BR /tmp .
875 .SH DIAGNOSTICS
876 For each revision,
877 .B ci
878 prints the \*r file, the working file, and the number
879 of both the deposited and the preceding revision.
880 The exit status is zero if and only if all operations were successful.
881 .SH IDENTIFICATION
882 Author: Walter F. Tichy.
883 .br
884 Manual Page Revision: \*(Rv; Release Date: \*(Dt.
885 .br
886 Copyright \(co 1982, 1988, 1989 Walter F. Tichy.
887 .br
888 Copyright \(co 1990, 1991, 1992, 1993, 1994, 1995 Paul Eggert.
889 .SH "SEE ALSO"
890 co(1),
891 ident(1), make(1), rcs(1), rcsclean(1), rcsdiff(1),
892 rcsintro(1), rcsmerge(1), rlog(1), setuid(2), rcsfile(5)
893 .br
894 Walter F. Tichy,
895 \*r\*-A System for Version Control,
896 .I "Software\*-Practice & Experience"
897 .BR 15 ,
898 7 (July 1985), 637-654.
899 .br