In article <[EMAIL PROTECTED]>, 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. http://users.footprints.net/~kaz/mcvs.html _______________________________________________ Info-cvs mailing list [EMAIL PROTECTED] http://mail.gnu.org/mailman/listinfo/info-cvs