On Thu, Jan 09, 2003, David Eisner wrote: > Consider the following scenario: > > I have a workspace on the local disk of my PC here at work. I like > working from the local disk because it's fast. I have a personal > repository on a networked filesystem. At the end of each day, > I update the repository. Among other things, this serves as a backup, > and it also makes it easy to work from home if I want to. > > Periodically, say once a week, I'd like to check my code into > a separate, "official" departmental repository. And, when changes > are made in the departmental repository, I'd like to be able to > cvs update the changes to my workspace (and check them into > my personal repository as well).
Although a slightly different approach, but perhaps also useful for your situation: my RSE CVS patchset (see http://mail.gnu.org/archive/html/info-cvs/2002-12/msg00358.html) contains a "cvs root" command plus the ability that CVS on-the-fly switches CVSROOT between a read-only local copy of the repository (for fast/offline working) and an original remote repository (for central storage). This works by making a local copy of the repository (via rsync over ssh by default) after every repository WRITE operation (cvs commit, cvs tag, etc) and by diverting all READ operations (cvs diff, cvs update, etc) to the local repository. As an example: the OpenSSL CVS repository is at $CVSROOT == "cvs.openssl.org:/e/openssl/cvs". to which a developer has access via CVS over SSH. With my RSE CVS patchset applied, you now can do: $ cvs root -e openssl cvs.openssl.org:/e/openssl/cvs \ /u/rse/cvs/openssl rsync:!.#*,!CVSROOT/commitlogs/ This just remembers in $HOME/.cvsroot that the repository (arbitrary) named "openssl" has a master location under the remote path cvs.openssl.org:/e/openssl/cvs and a slave location under the local path /u/rse/cvs/openssl. And that the local reposistory can be updated via rsync (and that some files are excluded for speed reasons). To establish the local repository copy once initially you just run $ cvs root -s openssl This performs the rsync operation. Now you can check out your working files from the repository: $ cvs -d openssl co openssl-src Keep in mind that you just specify a logical name for the repository (which in stock CVS is invalid). This automatically checks out with high speed from the local copy. Now you can do all your work, e.g.: $ cd openssl-src $ vi CHANGES $ cvs diff CHANGES etc. To merge in the changes of other developers you just run: $ cvs root -s ossp $ cvs update This first brings your local repository up-to-date, then updates from there. If you now commit or tag something, CVS automatically temporarily switches to the master (remote) repository, immediately followed by an implicit "cvs root -s openssl" operation to immediately bring your local repository up-to-date again. I've originally implemented this two years ago for use with the ASF's Apache CVS repository and my Laptop and using it since this time on a daily basis with the OpenSSL, OpenPKG and OSSP projects. The nice thing is that you do not have to change the ways you are used to work with CVS and still get the advantage to work fully offline with high speed. Yours, Ralf S. Engelschall [EMAIL PROTECTED] _______________________________________________ Info-cvs mailing list [EMAIL PROTECTED] http://mail.gnu.org/mailman/listinfo/info-cvs