Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: CVS



Oliver Kiddle (opk@xxxxxxxxxxxxx) wrote:
> Seeing as all this CVS stuff seems to be approaching being
> semi-official. Could someone who understands it all please write a
> mini-readme to stick in the zsh distribution (or addition to the FAQ)
> which lists all the various cvs mirrors and how someone like me who has
> never used cvs can extract a copy of the latest version of zsh from it.

Seen as I was the person who annoyed everyone by pushing hardest for general
CVS usage, I've written a mini-howto which is below ... Sven, hope this is
useful for you too.  If someone more appropriate than me would like to grab
it and add it to the FAQ/distribution/website/whatever then feel free.  I
agree that we should keep a list of the cvs mirrors somewhere too.

On a vaguely related note, it would be nice to publicise all these new
resources somewhere properly.  zsh-announce and the website should certainly
mention them.  In fact, http://sunsite.auc.dk/zsh/ seems quite out of date in
some respects.  Can anyone do anything about this?  Also, the freshmeat entry
gives ftp://ftp.redhat.com/pub/contrib/i386/ as the location for RPM
packages, but the latest available RPM seems to be 3.1.5.  It would be nice
to have official 3.0.6 RPMs on the zsh ftp site, and have the website link to
these and maybe also the nightly build ones I've just set up (info on
zsh-announce, when the post gets approved), so that RPM fans can easily get
the most recent stable and development versions.  Who's in control of the
website these days?

Anyway, back to the original topic ...

-------- 8< -------- 8< --------
Here's pretty much all you need to know to be able to use the zsh CVS
tree.  It's simplified somewhat because you won't be needing to commit
any changes back into the repository.

First, ensure you have the cvs client installed :-)

To checkout a working copy of the source from the repository:

  cd $WHERE_YOU_WANT_FILES
  cvs -z3 -d :pserver:anonymous@xxxxxxxxxxxxxxxxx:/projects/zsh login
  cvs -z3 -d :pserver:anonymous@xxxxxxxxxxxxxxxxx:/projects/zsh checkout zsh

This will put the files in $WHERE_YOU_WANT_FILES/zsh.  You only need
to do the login once (it puts an entry in ~/.cvspass), and you only
need to do the checkout more than once if you messed up your working
copy and decided to rm -rf and start again.

To merge the latest changes to the working copy into your working copy:

  cd $WHERE_YOU_WANT_FILES/zsh
  cvs -z3 update -dP

(Notice that cvs caches the repository location in the CVS/Root file
contained in every subdirectory of the working copy.)

The `-z3' means compress the network traffic (it's a global option,
and so appears before the `update' command).  The `-d' means checkout
any new directories which may have appeared in the repository, and the
`-P' means prune empty directories.  (They are both options specific
to `update'.)

If the update process find changes in the repository to a file you've
modified locally, it will do its best to merge in the changes without
complaining.  However, if you've modified one of the bits in the file
which has been changed in the repository, cvs will warn you of the
conflict and expect you to resolve it by editing the file manually (in
which case, search for `<<<<<' in the file to find the conflict).

To find out differences between your working copy and the repository:

  cd $WHERE_YOU_WANT_FILES/zsh
  cvs diff -u > my.patch

Then the file my.patch should contain a patch in the correct format
for submitting to zsh-workers.  (The `-u' is for unified diffs.)

To create a patch from pure 3.1.6 to say, 3.1.6-bart-8:

  cvs patch -u -rzsh-3_1_6 -rzsh-3_1_6-bart-8 zsh > foo.patch

emacs users have a nice interface to cvs from within emacs.  See the
`Version Control' section of the emacs info pages, or type C-x v C-h
for a quick listing of related key bindings.

cvs is extremely powerful, and there are many more things you can do.
For quick summarised help, type:

  cvs --help
  cvs --help-commands
  cvs --help-options

or

  cvs -H <cvs-command>

where <cvs-command> is something like `update' or `checkout'.  Or read
the cvs man page, or even better, read the info pages, which I would
strongly recommend that you do at some stage.  Even reading through
the overview at the beginning to give you a taster of the concepts
involved would be worthwhile.

Finally, if you find you always use certain switches with certain
commands, you can put them in ~/.cvsrc like this:

  diff -u
  rdiff -u
  update -d

I think that's the lot.  Let me know if you have problems with any of
this.

Adam



Messages sorted by: Reverse Date, Date, Thread, Author