| .TH CVS 1 |
| .SH NAME |
| cvs \- introduction using plan9port CVS repository |
| .SH SYNOPSIS |
| .B cvs |
| .B -d |
| .B :pserver:anoncvs@cvs.pdos.csail.mit.edu:/cvs login |
| .PP |
| .B cvs |
| .B -d |
| .B :pserver:anoncvs@cvs.pdos.csail.mit.edu:/cvs checkout plan9 |
| .PP |
| .B cvs |
| .B update |
| [ |
| .B -dP |
| ] |
| [ |
| .I path ... |
| ] |
| .PP |
| .B cvs |
| .B status |
| [ |
| .I path ... |
| ] |
| .PP |
| .B cvs |
| .B diff |
| [ |
| .B -D |
| .I date |
| ] |
| [ |
| .B -r |
| .I revision |
| ] |
| [ |
| .B -cu |
| ] |
| [ |
| .I path ... |
| ] |
| .PP |
| .B web |
| .B http://cvs.pdos.csail.mit.edu/cvs/plan9/ |
| .SH DESCRIPTION |
| The master source tree for Plan 9 from User Space is maintained |
| using the source control system CVS |
| as a poor substitute for Plan 9's |
| \fIreplica\fR(8) and dump file system. |
| (It is maintained simultaneously using Mercurial; see |
| .IR hg (1).) |
| .PP |
| The first argument to |
| .I cvs |
| is a command, which determines the form of the rest of the command line. |
| .PP |
| The |
| .B login |
| command authenticates to the remote server and records your password in |
| .BR $HOME/.cvspass . |
| Use an empty password: when prompted, type a newline. |
| .PP |
| The |
| .B checkout |
| command downloads a copy of the tree into the directory |
| .BR plan9 , |
| which it will create. |
| The argument |
| .B plan9 |
| is both the name of the created directory and the name used to |
| tell the server which tree you want. |
| If you want to use a different name locally, rename the directory |
| after running the command. |
| .PP |
| From directories within the |
| .B plan9 |
| tree, the awkward |
| .B -d |
| is no longer necessary. |
| .PP |
| .I Cvs |
| .I update |
| incorporates recent changes from the CVS tree |
| into the local copy. |
| If the changes cannot be merged because of locally-made changes |
| that are in the way, |
| .I cvs |
| will leave a note in the file showing the differences between the local |
| and remote file. |
| .PP |
| The |
| .B -d |
| flag to |
| .I cvs |
| .I update |
| causes |
| it to update subdirectories as well. |
| The |
| .B -P |
| flag causes |
| .I cvs |
| .I update |
| to remove directories that have been emptied. |
| .PP |
| .I Cvs |
| .I status |
| displays the version number (also called a revision number) |
| for the local copy of the named files, |
| as well as the number of the most recent version on the server. |
| Version numbers are of the form |
| .RI 1. n \fR, |
| where |
| .I n |
| is a sequence number starting at 1. |
| .PP |
| .I Cvs |
| .I diff |
| runs Unix's |
| .IR diff (1) |
| to compare files in the local tree with the corresponding files in |
| the CVS tree. |
| By default it compares against the version that was most recently |
| incorporated into the local tree. |
| The |
| .B -r |
| flag specifies an alternate version to compare against. |
| The special revision |
| .B HEAD |
| refers to the most recent version on the server. |
| The |
| .B -D |
| flag instructs |
| .I cvs |
| .I diff |
| to use the version as of the given date. |
| Almost any imaginable date format is acceptable: |
| .BR 20050110 , |
| .BR 1/10/2005 , |
| .B 'Jan |
| .BR 10' , |
| .BR yesterday , |
| .B 'last |
| .BR week ', |
| .B 'two |
| .B days |
| .BR ago' , |
| .B 'a |
| .B fortnight |
| .BR ago' , |
| and so on. |
| If two |
| .B -r |
| or |
| .B -D |
| options are given, |
| those two versions are compared, and the local copy is ignored. |
| .PP |
| .I Cvs |
| .I diff |
| passes the |
| .B -u |
| or |
| .B -c |
| options to the Unix |
| .IR diff . |
| .PP |
| If you download a tar file from the web |
| instead of checking out the tree with CVS, |
| you can still use the |
| .I update |
| and |
| .I diff |
| commands to stay up-to-date and to see what has changed. |
| You will need to run the |
| .I cvs |
| .I login |
| command first to create your |
| .B .cvspass |
| file. |
| .PP |
| The CVS tree can be inspected on the web at |
| .HR http://cvs.pdos.csail.mit.edu/cvs/plan9/ "" . |
| .SH EXAMPLES |
| Incorporate any changes made to the CVS tree since |
| the last check out or update: |
| .IP |
| .EX |
| cd $PLAN9 |
| cvs up -dP |
| .EE |
| .PP |
| Compare |
| .I libdraw |
| against its source from January 1, 2005: |
| .IP |
| .EX |
| cd $PLAN9/src/libdraw |
| cvs diff -D20050101 |
| .EE |
| .PP |
| Check the entire tree for changes made locally: |
| .IP |
| .EX |
| cd $PLAN9 |
| cvs diff |
| .EE |
| .PP |
| Check the entire tree for changes between the local version and |
| the most recent in the CVS tree. |
| This does not indicate which changes are local ones |
| and which are changes to the CVS tree that have not yet been |
| incorporated into the local tree. |
| .IP |
| .EX |
| cd $PLAN9 |
| cvs diff -r HEAD |
| .EE |
| .PP |
| Make |
| .I cvs |
| less chatty by setting the global |
| .B -q |
| flag implicitly on every CVS command: |
| .EX |
| cd $HOME |
| echo 'cvs -q' > .cvsrc |
| .EE |
| .SH FILES |
| .TP |
| .B CVS |
| directory containing CVS metadata for parent |
| .TP |
| .B .cvsignore |
| list of files and wildcards to exclude from CVS operations in this directory |
| .SH SEE ALSO |
| .IR hg (1) |
| .PP |
| Unix's |
| \fIcvs\fR(1), |
| .HR http://www.cvshome.org/ |
| .PP |
| .HR http://cvs.pdos.csail.mit.edu/cvs/plan9/ |
| .SH BUGS |
| The CVS server is a read-only public copy of a private tree. |
| The dates on versions reflect the date the changes were made in the |
| private tree, not the date the change was made public. |
| .PP |
| On Mac OS X, |
| .I cvs |
| will complain during a checkout that some files in |
| .B $PLAN9/troff/font/devutf |
| are ``in the way.'' |
| This is due to the Mac case-insensitive file system |
| and the fact that troff has some (rarely used) |
| files whose names differ only in case. |