[Top][All Lists]

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

Re: Converting ClearCase to CVS

From: Kaz Kylheku
Subject: Re: Converting ClearCase to CVS
Date: Tue, 19 Feb 2002 07:18:06 GMT
User-agent: slrn/ (Linux)

In article <address@hidden>, Paul Sander wrote:
>Really?  The modules database was ill-conceived from the beginning (having
>at least two fundamental flaws in its design), and was never repaired or
>replaced.  Corner cases involving branch merging and add/remove keep being
>raised in this forum.  The exit status, after more than 10 years, is still
>unpredictable, limiting the robustness of scripts that invoke CVS.

I'm running into a little bit of that exit status business in Meta-CVS.
I treat a failed termination status seriously. I turn it into a condition
being raised; luckily there is enough grace and resilience in the Common
Lisp error handling system to deal with crap.

I solved the add and remove corner cases quite simply. Adds can ``never''
clash because each add creates a unique file with a 128 bit random
integer for a name. So the whole nonsense about ``file independently
added by second party'' won't happen, unless you win the 128 bit birthday
lottery. :)  Both users will successfully add the file locally. Then one
will commit and the other will get a problem in the file structure due
to the duplicate path, which Meta-CVS will detect, forcing that user to
repair the problem. Once the problem is repaired, the directory structure
will arrange itself into the resolved shape, and the user can fix any
remaining conflicts.

Remove races are gone, because files are never really removed. They are
just removed from the directory structure mapping, an action which does
not commit any revision to the file itself. Someone can remove a file,
you do an update, the file appears gone, yet the object is still
there in the MCVS/ directory of your local copy under a cryptic name. You
can even commit your unfinished changes, and perhaps at the same time
resurrect the file into the mapping.  Before long I will put in a
``garbage collect'' command that will look for unmapped objects and do
a cvs remove on them, to reduce the checkout footprint.

Meta-CVS: version control with directory structure versioning over top of CVS.

reply via email to

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