[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: removing directories

From: John Minnihan
Subject: Re: removing directories
Date: Wed, 05 Sep 2001 10:32:59 -0700
User-agent: Mozilla/5.0 (Windows; U; Win98; en-US; rv:0.9.2) Gecko/20010628

address@hidden wrote:

I need to be able to customize what gets checked out and how it's assembled
for differing environments. This seems pretty basic. What started this is the contractors we have placed the SAME files in three
places originally and kept only one environment updated completely.   We
ended up with inconsistent behavior across all environments.  To correct
that, I have removed redundant copies and kept the correct up-to-date files
from the repository.   This however brings up a different problem.  We need
to be able to use TEST and DEV with some of the files from PROD.  The top of
the repository looks like this because we have three environments: systema/environments/prod
These three now contain distinct files but ALL environments need the files from systema/environments/prod/lib_ext. Each env has a lib_ext directory (also contains directories) in the repos
because I can't remove them (see 7.3 in the manual).  Isn't there a way
around this?  I need to grab the lib_ext dir from prod and plop it into the
checked out version of the other two environments.   CVS will not let me do
that. Is it best to just check both sections out independently and then have a
script mv the lib_ext to where it needs to be?  I haven't been able to come
up with any way to change the repository structure to allow what is needed.
Should I try renaming directories?  All the ideas I've come up with seem
brute force ... there must be a better way.  If I could just rid of the
pesky directories in the repository, this problem would go away.  Perhaps I
am looking at this the wrong way. Here's the two important lines from the modules file: PRODLIB -d lib_ext systema/environments/prod/lib_ext TEST -d test systema/environments/test &PRODLIB Here's what happens when I try to checkout TEST (which makes sense): cvs checkout: Updating test/lib_ext
cvs checkout: Updating test/lib_ext/ifx_java
cvs checkout: Updating test/lib_ext/ifx_java/lib
cvs checkout: Updating test/lib_ext/ifx_java/proxy
cvs checkout: Updating test/lib_ext/systema
cvs checkout: existing repository
/export/cvsroot/systema/environments/test/lib_ext does not match
cvs checkout: ignoring module PRODLIB


Try excluding stuff in your modules def's using the shebang notation (that is "!"). I do stuff like this on very large modules, excluding things nested in the tree that I don't want in various checkouts.

Define one module to be the 'universe'. I have developed the habit of explicitly naming this module 'xxxxuniverse', where xxxx is the overall product or project name. Then, selectively define what you want in each of the environments. Ignore the physical structure of the repository for this exercise. Just scratch together a quick Wish List. i.e. "Module Foo should be dirA, dirB, dirF and dirG but nothing else. Repeat this exercise for each environment you need to create.

Then methodically add corresponding def's to the modules file for each of the above. You may have to tweak the def's a few times before you grok this technique (I certainly did). Here's an example:

# in the defs below, the shebang is used as an exclude modifier. jbminn

quality -a !engineering/autobuild !engineering/products !engineering/tools !engineering/buildsystem engineering

tools -a !engineering/autobuild !engineering/buildsystem !engineering/products !engineering/quality engineering

autobuild -a !engineering/products !engineering/quality !engineering/tools engineering

John Minnihan

reply via email to

[Prev in Thread] Current Thread [Next in Thread]