Using CVS to access Proof General repository
============================================

Here are some notes on how to access the PG repository remotely
using CVS, using pserver access to cvs.inf.ed.ac.uk

0.  If you want write access to the Proof General repository, fill
    in the web form here to apply for an account:

      http://www.informatics.ed.ac.uk/systems/cvs/new/
		
    The request will be processed manually and confirmed with the
    Proof General maintainer (David Aspinall), so you should discuss
    with him before applying.

1.  Login to the CVS server:

      cvs -d :pserver:<user>@cvs.inf.ed.ac.uk:/disk/cvs/proofgen login

    Replace <user> with your username, or with "anon" for anonymous
    access.

2.  Checkout the repository:

      cvs -d :pserver:<user>@cvs.inf.ed.ac.uk:/disk/cvs/proofgen checkout ProofGeneral

    Inside the ProofGeneral directory, to retrieve the latest updates, do:

       cvs update

    To commit some changes to file <filename>, do:

        cvs commit -m"<message here>" <filename>


    See "man cvs" for (much) more.



-----------------------------------------------------------------

Making a branch to patch a previous release:
============================================

 cvs checkout -r Release-3-1-3 ProofGeneral
 cd ProofGeneral
 cvs tag -b Release-3-1-branch 
 # Drop this repo, has sticky tag for 3-1-3.
 cd .. ; cvs release -d ProofGeneral
 # Get new one
 cvs checkout -r Release-3-1-branch ProofGeneral
 cd ProofGeneral
 patch  ... blah ...
 cvs commit  ... blah ..

Then make release as ~proofgen:

 mkdir oldbranch
 cd oldbranch
 cvs checkout -r Release-3-1-branch ProofGeneral
 make devel.releaseall VERSION=3.1 FULLVERSION=3.1.99

NB: See warning in Makefile.devel about this (it will
downgrade web pages).
 
Then perhaps merge in branch changes into main stream:

 cd projects/proofgen/ProofGeneral
 cvs update -jRelease-3-1-branch

NB: this merging will always create conficts with 
$Id$ tags in source. (Is there a way to avoid this?)
  
  
Overriding the CVS/Root setting temporarily:
============================================

 Use 
     cvs -d $CVSROOT 

NB: This doesn't alter CVS/Root, but uses NEWROOT in preference.
($CVSROOT does not overide CVS/Root at all).

Useful command:

  alias cvs='cvs -d $CVSROOT'

to force this behaviour.


Moving to a new branch
======================

This only works on a clean repository (no spurious files):

   find * -path '*/CVS' -prune -o -path 'CVS' -prune -o -print | tr '\n' '\0' | xargs -0 cvs commit -m"Updating branch" -f -r 4.0

(The tr is needed because of some nasty filenames, e.g. etc/isa/\backslashname)


Updating base revision number
=============================

Starting with a new base revision number is handy to easily see changes since last release.

  cvs commit -f -R -r 12.0 -m"Update base revision number for 4.2 development cycle" .
  cvs up -A

Need second update to remove automatically added sticky tag.

