One Workspace, Multiple Repositories

2003-01-09 Thread David Eisner

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).

Back in October, there was some talk of patching cvs to provide
the one workspace, multiple repository functionality I'm looking for:

 http://mail.gnu.org/archive/html/info-cvs/2002-10/msg00429.html

Did anything ever become of this?

Thanks!

-David

+--+
David Eisner| E-mail: [EMAIL PROTECTED]   |
CALCE EPSC  | Phone:  301-405-5341 |
University of Maryland  | Fax:301-314-9269 |
+--+




___
Info-cvs mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/info-cvs



Re: One Workspace, Multiple Repositories

2003-01-09 Thread sherzodr
 :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.


I think cvsup is what you need, isn't it? I gave it a try
a while ago when I was working on some project. I had to keep two
CVS repositories up to date in different machines. 

So i used cvsup which synchronizes the cvs repository in host geek.com,
for, instance with that in geekier.com. 

http://www.cvsup.org/


sherzod



___
Info-cvs mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/info-cvs



Re: One Workspace, Multiple Repositories

2003-01-09 Thread Ralf S. Engelschall
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