[cvsnt] Re: Best way to check out missing subdir?

Gerhard Fiedler lists at connectionbrazil.com
Fri Jul 21 22:21:43 BST 2006


Glen Starrett wrote:

> Gerhard Fiedler wrote:
>> I'd like to mention here the one feature I'm still missing from the times I
>> worked with VSS: what they call "cloaking". This basically allows users to
>> list (locally, in the sandbox) files and directories they don't want from
>> the server. With that, you could list the few exceptions you don't want and
>> use the update -d option to get all others. Something similar doesn't seem
>> to be possible with cvs(nt). You either get it all, or you need to do
>> something manually, like maintaining modules definitions or verify the
>> repository and check out new directories (with the methods listed above).
> 
> The "cloaking" feature sounds pretty manual to me as well, 

The part that's manual is adding the exemptions. The part that's automatic
is that you get automatically /everything else/. With cvs(nt), there's no
way to specify "everything else". Sometimes that's useful -- especially if
you had that feature once :)

> but it has to be done on every client instead of doing it once on the
> server as with modules / modules2.

Correct. It's a client-side thing. A big hug to whoever puts /some/ control
in the hand of the user :)

> It's not easily customizable on a per-user basis, but I'm not sure I see
> a benefit to that.  Do you have some examples when it would be? 

Yes. Sometimes there are large files in a repository (like when working
with databases) that are of interest to some developers but not to others.
All developers may have an interest in simply, automatically, getting
everything that's new in the project with an update -- except for, say,
those three directories that contain big files. Or I may have it all in my
sandbox, but now I'm on the road for a while, using dialup. I just "cloak"
the big stuff that's not immediately important and continue to work
normally. Or I generally update all projects, getting all new project
directories, out of curiosity, because I like to know what's going on. But
a few projects are really old, huge, and I know I don't want to know about
those. But I want to get everything else (here it is again, that expression
:)

All situations where the feature is helpful, and it being client-side is
appropriate. (In all cases it is a decision of the sandbox owner, not the
repository admin, what to get and what not.)


Achieving the same effect with cvs(nt) is not trivial:

One way (works only for some cases) is to maintain a modules file and add
every new directory to it. The advantage is that this is central, but the
disadvantage is that this is central :)  The person maintaining the module
file may not know what I'd rather not get for the next week. It's also a
lot of work. And users can't use the update command; they need to use the
checkout command. 

The other way is to regularly run "cvs ls" and check whether there's some
new directory and check it out, all the while one by one updating the other
directories with the -d option -- making sure to never forget where exactly
the "cloaked" directories are. (You have to remember that, because you may
not run update -d in a parent directory, only in a sibling or child.)
Verrry manual... :)

Or write a client-side script that does the above, using a list of
"cloaked" directories (or even files), collecting the cvsnt output along
the way and presenting it back to the user as if it had been one update
command, possibly reporting the "cloaked" items in some special way (a new
character in the first column). That's probably the only usable way to do
this with cvsnt. 

Any other ideas? One "feature" all three solutions share is that the common
GUI frontends don't work well with that. 

Gerhard



More information about the cvsnt mailing list