[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: Info-cvs Digest, Vol 8, Issue 6
RE: Info-cvs Digest, Vol 8, Issue 6
Sun, 6 Jul 2003 06:28:12 +1000
(...my input into the debate)
The best way IMHO to do such code sharing is to mimic the behaviour of the
'modules' command by including the following in your build script:
cvs co utils
-- this variant means that this code is designed to run on the absolute
latest version of utils.
cvs co -rUTILS_13 utils
-- this means that this code is designed to run with a particular version of
the utils project.
The nice thing about this setup is that:
- you can explicitly toggle between 'bleeding-edge' and precise version
control, where-as shared files leave the difference between these two
concepts hazy indeed.
If multiple people are working on the shared project, you can have a
controlled process where you 'move' from version 13 to 14 of the utilities,
and test for incompatibilities.
The only caveat to this approach is that "cvs tag" should not be used, only
"cvs rtag" since you risk polluting your utils project with TAGS from
multiple projects otherwise. This caveat is not a drawback for me since I
consider "cvs tag" a dangerous option.
Far Edge Technology
Date: Fri, 4 Jul 2003 11:00:56 +0800
From: Jeff Pitman <address@hidden>
Subject: Sharing files across directories - Redux
A bit of a delayed response, I know...
At 02:33 PM 9/25/2002, Matt Lyon wrote:
> Is there a way to share a single source file across multiple
> directories in CVS, so that if it gets committed/merged in one
> directory the update registers in both locations? I know that VSS has
> this concept, and was wondering if CVS offers any sort of similar
> functionality. I was thinking that perhaps this could be achieved with
> some symlink trickery on the server-side?
On Wed, 25 Sep 2002 17:26:09 -0400, Frederic Brehm wrote:
> Actually, Ampersand modules share whole directories, not single files.
> CVS has no built-in way to share a single file across multiple
I was able to successfully share a single file by using some hackery in
the CVSROOT/modules and Ampersand modules. But, it doesn't scale very
well, so I recommend it only if you need to share a couple of files.
The scaling problem comes when you have to begin using a complex
mneumonic/keyword system to cross-merge similar files across different
directories from different projects.
Some more disadvantages:
* You cannot use branching to coax a different set of files to come out
* You cannot re-check out the repository into your working copy and
have clean output. You will always get conflicts (even though it isn't
Use this only when absolutely necessary. Otherwise, follow Frederic's
recommendation about changing the build system to accomodate your
needs. (Eg. KDE does a symlink in the Working copies of their many
projects to the admin/ directory to share the autoconf stuff around.)
Steps to share one file (all by editing CVSROOT/modules):
1. Add your project module and point to an Ampersand module:
# '-d' added for completeness, although optional
# Alias Working dir. Repos. Module Files or & Modules
foobar -d foobar foobar &shared-admin
2. Select the files and location where you want to put this. It will
have to be a sub-directory off of the Working copy's root.
shared-admin -d admin baseline/admin ltmain.sh missing
shared-init -d src baseline/src main.c init.c
Note: CVS admin directories for autoconf probably could just as well be
shared as a whole, instead of individual files. Therefore, the second
"shared-init" provides a more interesting example where it can
cross-mix different files between a set of baseline files and a set of
project specific files. Of course, branching and merging is left as an
exercise for the reader!!
Alias - Used to link modules together, used only under the scope of
Working dir. - The name of the directory that is output starting at the
base of your checkout.
Repos. Module - The repository module or its subdirectory
Ampersand (&) Modules - a link to another Alias found in CVSROOT/modules
Files - files that are found under the listed Repos. Module
I hope this has been an informative piece. Let the debate begin!
- RE: Info-cvs Digest, Vol 8, Issue 6,
Matthew Herrmann <=