Annotation of 43BSDReno/contrib/rcs/man/rcsintro.1, revision 1.1.1.1

1.1       root        1: .TH RCSINTRO 1L "May 11, 1983" "Purdue University"
                      2: .SH NAME
                      3: rcsintro - introduction to RCS commands
                      4: .SH DESCRIPTION
                      5: The Revision Control System (RCS) manages multiple revisions of text files.
                      6: RCS automates the storing, retrieval, logging, identification, and merging
                      7: of revisions. RCS is useful for text that is revised frequently, for example
                      8: programs, documentation, graphics, papers, form letters, etc.
                      9: .PP
                     10: The basic user interface is extremely simple. The novice only needs
                     11: to learn two commands:
                     12: .IR ci (1L)
                     13: and
                     14: .IR co (1L).
                     15: \fICi\fR, short for "check in", deposits the contents of a
                     16: text file into an archival file called an RCS file. An RCS file
                     17: contains all revisions of a particular text file.
                     18: \fICo\fR, short for "check out", retrieves revisions from an RCS file.
                     19: .PP
                     20: .B "Functions of RCS"
                     21: .PP
                     22: .IP \(bu
                     23: Storage and retrieval of multiple revisions of text. RCS saves all old
                     24: revisions in a space efficient way.
                     25: Changes no longer destroy the original, because the
                     26: previous revisions remain accessible. Revisions can be retrieved according to
                     27: ranges of revision numbers, symbolic names, dates, authors, and
                     28: states.
                     29: .IP \(bu
                     30: Maintenance of a complete history of changes. RCS logs all changes automatically.
                     31: Besides the text of each revision, RCS stores the author, the date and time of
                     32: check-in, and a log message summarizing the change.
                     33: The logging makes it easy to find out
                     34: what happened to a module, without having to compare
                     35: source listings or having to track down colleagues.
                     36: .IP \(bu
                     37: Resolution of access conflicts. When two or more programmers wish to
                     38: modify the same revision, RCS alerts the programmers and prevents one
                     39: modification from corrupting the other.
                     40: .IP \(bu
                     41: Maintenance of a tree of Revisions. RCS can maintain separate lines of development
                     42: for each module. It stores a tree structure that represents the
                     43: ancestral relationships among revisions.
                     44: .IP \(bu
                     45: Merging of revisions and resolution of conflicts.
                     46: Two separate lines of development of a module can be coalesced by merging.
                     47: If the revisions to be merged affect the same sections of code, RCS alerts the
                     48: user about the overlapping changes.
                     49: .IP \(bu
                     50: Release and configuration control. Revisions can be assigned symbolic names
                     51: and marked as released, stable, experimental, etc.
                     52: With these facilities, configurations of modules can be
                     53: described simply and directly.
                     54: .IP \(bu
                     55: Automatic identification of each revision with name, revision number,
                     56: creation time, author, etc.
                     57: The identification is like a stamp that can be embedded at an appropriate place
                     58: in the text of a revision.
                     59: The identification makes it simple to determine which
                     60: revisions of which modules make up a given configuration.
                     61: .IP \(bu
                     62: Minimization of secondary storage. RCS needs little extra space for
                     63: the revisions (only the differences). If intermediate revisions are
                     64: deleted, the corresponding deltas are compressed accordingly.
                     65: .sp
                     66: .PP
                     67: .B "Getting Started with RCS"
                     68: .PP
                     69: Suppose you have a file f.c that you wish to put under control of RCS. 
                     70: Invoke the check-in command
                     71: .PP
                     72: .ti 1.5i
                     73: .B "ci  f.c 
                     74: .PP
                     75: This command creates the RCS file f.c,v, stores f.c into it as revision 1.1, and
                     76: deletes f.c.  It also asks you for a description. The description
                     77: should be a synopsis of the contents of the file. All later check-in
                     78: commands will ask you for a log entry, which should summarize the
                     79: changes that you made.
                     80: .PP
                     81: Files ending in ,v are called RCS files (`v' stands for `versions'),
                     82: the others are called working files.
                     83: To get back the working file f.c in the previous example, use the check-out
                     84: command
                     85: .PP
                     86: .ti 1.5i
                     87: .B "co  f.c
                     88: .PP
                     89: This command extracts the latest revision from f.c,v and writes
                     90: it into f.c. You can now edit f.c and check it back in by invoking
                     91: .PP
                     92: .ti 1.5i
                     93: .B "ci  f.c
                     94: .PP
                     95: \fICi\fR increments the revision number properly. 
                     96: If \fIci\fR complains with the message
                     97: .PP
                     98:                ci error: no lock set by <your login>
                     99: .PP
                    100: then your system administrator has decided to create all RCS files
                    101: with the locking attribute set to `strict'. In this case, you should
                    102: have locked the revision during the previous check-out. Your last check-out
                    103: should have been
                    104: .PP
                    105: .ti 1.5i
                    106: .B "co  \-l  f.c
                    107: .PP
                    108: Of course, it is too late now to do the check-out with locking, because you
                    109: probably modified f.c already, and a second check-out would
                    110: overwrite your modifications. Instead, invoke
                    111: .PP
                    112: .ti 1.5i
                    113: .B "rcs  \-l  f.c
                    114: .PP
                    115: This command will lock the latest revision for you, unless somebody
                    116: else got ahead of you already. In this case, you'll have to negotiate with 
                    117: that person.
                    118: .PP
                    119: Locking assures that you, and only you, can check in the next update, and
                    120: avoids nasty problems if several people work on the same file.
                    121: Even if a revision is locked, it can still be checked out for
                    122: reading, compiling, etc. All that locking
                    123: prevents is a CHECK-IN by anybody but the locker.
                    124: .PP
                    125: If your RCS file is private, i.e., if you are the only person who is going
                    126: to deposit revisions into it, strict locking is not needed and you
                    127: can turn it off.
                    128: If strict locking is turned off,
                    129: the owner of the RCS file need not have a lock for check-in; all others
                    130: still do. Turning strict locking off and on is done with the commands
                    131: .PP
                    132: .ti 1.5i
                    133: .BR "rcs  \-U  f.c" "     and     " "rcs  \-L  f.c"
                    134: .PP
                    135: If you don't want to clutter your working directory with RCS files, create 
                    136: a subdirectory called RCS in your working directory, and move all your RCS 
                    137: files there. RCS commands will look first into that directory to find 
                    138: needed files. All the commands discussed above will still work, without any 
                    139: modification. 
                    140: (Actually, pairs of RCS and working files can be specified in 3 ways:
                    141: (a) both are given, (b) only the working file is given, (c) only the
                    142: RCS file is given. Both RCS and working files may have arbitrary path prefixes;
                    143: RCS commands pair them up intelligently).
                    144: .PP
                    145: To avoid the deletion of the working file during check-in (in case you want to
                    146: continue editing), invoke
                    147: .PP
                    148: .ti 1.5i
                    149: .BR "ci  \-l  f.c" "     or     " "ci  \-u  f.c"
                    150: .PP
                    151: These commands check in f.c as usual, but perform an implicit
                    152: check-out. The first form also locks the checked in revision, the second one
                    153: doesn't. Thus, these options save you one check-out operation.
                    154: The first form is useful if locking is strict, the second one if not strict.
                    155: Both update the identification markers in your working file (see below).
                    156: .PP
                    157: You can give \fIci\fR the number you want assigned to a checked in
                    158: revision. Assume all your revisions were numbered 1.1, 1.2, 1.3, etc.,
                    159: and you would like to start release 2.
                    160: The command
                    161: .PP
                    162: .ti 1.5i
                    163: .BR "ci  \-r2  f.c" "     or     " "ci  \-r2.1  f.c"
                    164: .PP
                    165: assigns the number 2.1 to the new revision.
                    166: From then on, \fIci\fR will number the subsequent revisions
                    167: with 2.2, 2.3, etc. The corresponding \fIco\fR commands
                    168: .PP
                    169: .ti 1.5i
                    170: .BR "co  \-r2  f.c" "     and     " "co  \-r2.1  f.c"
                    171: .PP
                    172: retrieve the latest revision numbered 2.x and the revision 2.1,
                    173: respectively. \fICo\fR without a revision number selects
                    174: the latest revision on the "trunk", i.e., the highest
                    175: revision with a number consisting of 2 fields. Numbers with more than 2
                    176: fields are needed for branches.
                    177: For example, to start a branch at revision 1.3, invoke
                    178: .PP
                    179: .ti 1.5i
                    180: .B "ci  \-r1.3.1  f.c
                    181: .PP
                    182: This command starts a branch numbered 1 at revision 1.3, and assigns
                    183: the number 1.3.1.1 to the new revision. For more information about
                    184: branches, see \fIrcsfile\fR(5L).
                    185: .sp
                    186: .PP
                    187: .B "Automatic Identification"
                    188: .PP
                    189: RCS can put special strings for identification into your source and object
                    190: code. To obtain such identification, place the marker
                    191: .PP
                    192: .ti 1.5i
                    193: $\&Header$
                    194: .PP
                    195: into your text, for instance inside a comment.
                    196: RCS will replace this marker with a string of the form
                    197: .PP
                    198: .ti 1.5i
                    199: $\&Header:  filename  revision_number  date  time  author  state $
                    200: .PP
                    201: With such a marker on the first page of each module, you can
                    202: always see with which revision you are working.
                    203: RCS keeps the markers up to date automatically.
                    204: To propagate the markers into your object code, simply put
                    205: them into literal character strings. In C, this is done as follows:
                    206: .PP
                    207: .ti 1.5i
                    208: static char rcsid[] = "$\&Header$";
                    209: .PP
                    210: The command \fIident\fR extracts such markers from any file, even object code
                    211: and dumps.
                    212: Thus, \fIident\fR lets you find out
                    213: which revisions of which modules were used in a given program. 
                    214: .PP
                    215: You may also find it useful to put the marker $\&Log$
                    216: into your text, inside a comment. This marker accumulates
                    217: the log messages that are requested during check-in.
                    218: Thus, you can maintain the complete history of your file directly inside it.
                    219: There are several additional identification markers; see \fIco\fR(1L) for
                    220: details.
                    221: .SH IDENTIFICATION
                    222: .de VL
                    223: \\$2
                    224: ..
                    225: Author: Walter F. Tichy,
                    226: Purdue University, West Lafayette, IN, 47907.
                    227: .br
                    228: Revision Number:
                    229: .VL $Revision: 1.2 $
                    230: ; Release Date:
                    231: .VL $Date: 89/05/02 11:17:54 $
                    232: \&.
                    233: .br
                    234: Copyright \(co 1982, 1988, 1989 by Walter F. Tichy.
                    235: .SH SEE ALSO
                    236: ci(1L), co(1L), ident(1L), merge(1L), rcs(1L), rcsdiff(1L), rcsmerge(1L), rlog(1L),
                    237: rcsfile(5L),
                    238: .br
                    239: Walter F. Tichy, "Design, Implementation, and Evaluation of a Revision Control
                    240: System," in \fIProceedings of the 6th International Conference on Software
                    241: Engineering\fR, IEEE, Tokyo, Sept. 1982.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.