bug-cvs
[Top][All Lists]
Advanced

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

CVS Soft-tags enhancement - request for feedback


From: Yaron Yogev
Subject: CVS Soft-tags enhancement - request for feedback
Date: Tue, 6 May 2008 08:53:04 -0700 (PDT)
User-agent: G2/1.0

Hi,

On Aug 16th, 2007 I did a long post to gnu.cvs.bug titled "CVS soft-
tagging + other problems & solutions".
http://groups.google.com/group/gnu.cvs.bug/msg/b62a6c86d8da8448?hl=en

I got very little feedback on that post. I would like to get more
feedback on the main feature discussed there, called soft-tags/
branches, to see whether the public demand is worth the effort to
create a patch for this feature. This feature worked a miracle in
Jungo, so I'd hate to let it go

The code details in short:
in this patch (which includes many changes we use in Jungo LTD)
https://savannah.nongnu.org/file/cvs-1_12_13-jungo-improvements.diff?file_id=13668

look inside file rcs.c
look for:
- RCS_getsofttag
- RCS_locate_softtag_and_date
The code is based on CVS 1.12.13 + the changes from the newtags2
branch.

The feature described in short:

Why ?
CVS tagging is done by adding symbol:revision pair inside RCS file.
When tagging a big source tree, this can take a very long time:
combined with intensive usage, we were getting to tagging times of 6-9
hours.

How ?
Instead of defining tag per each file, we define it as a location on a
parent branch. This assumes that work is done on a source tree that is
all updated (or checked out from the beginning) using that same
branch.
We added in CVSROOT directory a file called stags, keeping definitions
of soft-tags/branches. Definition defines type (tag or branch), name
and location (either parent branch + date or tag). Note that defining
one tag as based on another tag can also serve as an aliasing
mechanism.

Is it good for everyone ?
It's great for us :-)
With soft-tags, branching or tagging only takes the time it takes the
user to add the new tag/branch definition. For us, that means adding
it in a CSV text file named versions.csv and committing the change.
The change is then translated by the post-commit trigger that we have
to an updated stags file on the CVS server. This process (pre-commit
validation, commit, post-commit processing) takes ~10 seconds. Quite a
difference from what we had.
As for using it in your own environment:
- you need to be sure users work in the mode specified above, of
having their source code aligned to a single branch.
- you will need some infrastructure changes to support this, unless
you trust the users to edit the stags file directly. I will be happy
to help anyone who needs help in this.

Looking forward to any input/remarks/questions,

--
Yaron Yogev
IT Developer
Jungo Software Technologies



reply via email to

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