[cvsnt] Re: What is required for server to pickup updated CVSROOT informatiion.

Oliver Giesen ogware at gmx.net
Fri Oct 28 00:02:28 BST 2005


Brian Post wrote:

> What is the difference between RTAG & TAG as the manual is vague.

As with all the other commands that have an "r"-complement, the main
difference is that the r-ones could be run without having a checked out
working copy of the files you want to apply the command to (also
requires you to supply a CVSROOT string in some way or another).

The other difference is the way you specify what to work on,
particularly from whose POV the addressing takes place:

"r-commands" (e.g. rtag, rlog, rannotate, rdiff, checkout, import,
etc.) expect module names as their arguments, i.e. paths relative to
the repository's root.

"non-r-commands" (e.g. tag, log, annotate, diff, update, add, commit,
etc.) expect references to checked out working copies of files or
directories as their arguments, i.e. paths relative to the current
working directory.


> 1. What is the general procedure after commiting CVSROOT files? Is a
> restart of the server required? 

No, this is handled by the server internally. After committing a
CVSROOT file you will see a message along the lines of "updating
administrative file database" or something like that. Note that this
does not automatically apply to any old file you care to commit into
CVSROOT. By default it's only for the built-in ones. If you want to
have that for your own files you have to add the respective file names
to the CVSROOT/checkoutlist file.


> 2. Is RTAG more efficient to tag a whole tree

Not sure. Maybe. For rtag CVS only has to traverse the repository. Tag
needs to analyze the sandbox, too.


> and be able to get all the files for that version? 

Not sure what you mean by that. You typically don't "get" files by
tagging them. Tagging just does that: it puts a label on a specified
revision of a given file. If you tag multiple files at once you
effectively put a marker on a snapshot in time of that set of files.


> 3. Why would you use TAG instead of RTAG?

You should always use RTag with either the -r or -D options (and if you
use -r the argument shouldn't be a branch). This is because otherwise
CVS would simply put the new tag on the current HEAD revisions of the
specified set of files. The problem there might not be immediately
obvious but you have to realize that in a multi-developer environment
HEAD is pretty much a moving target and you never really know which
revision it will be.

Thus, if you are in situation where the set of revisions you want to
tag could not sensibly be specified using an existing tag or a
timestamp, you would simply make sure you checkout exactly those
revisions you need (make them sticky if necessary) and then perform the
tagging on those files using Tag instead of RTag.

Most of the time tag is the safer/easier bet. You get what you see
without having to jump through hoops figuring out how to safely
identify the set of revisions you want to tag. The drawback is that you
couldn't use virtual modules and thus might have to run Tag more often
where with RTag a single invokation would have sufficed.

Hope this helps.

-- 
Oliver
----  ------------------
JID:  ogiesen at jabber.org
ICQ:  18777742     (http://wwp.icq.com/18777742)



More information about the cvsnt mailing list