[MPlayer-dev-eng] Re: CVS alternatives

Kaz Kylheku kaz at ashi.footprints.net
Thu Oct 31 18:49:06 CET 2002


On Oct 1, 2002 Arpi wrote:
>- file renaming/moving/cloning etc... you know. - yes i know there is
>  meta-cvs which has own file database over teh cvs repository to
>  workaround handle this, but it's messy hack.

Hi, I'm the author of Meta-CVS and I object to your characterization of
the software as a ``messy hack''.  

That extra information that is kept in CVS has a straightforward
structure that is human readable and editable.  

Its internals are actually clean and maintainable.  Here is evidence.
Initially I had no plans to support symbolic links; I explicitly
rejected that as a requirement. It took two afternoons of refactoring
to put that support in.  I also had no plans for versioning execute
permissions, and that was done in a couple of days, and actually
resulted in more general support for versioned property lists.

Building on top of an existing version control ``kernel'' makes a lot
of sense; by using CVS as a substrate, Meta-CVS benefits from more than
a decade of debugging. On the downside, it also means that the program
can't address certain performance and reliability problems inherent in
CVS; it's a messy hack to the extent that CVS is a messy hack. 
I wrote an extension to CVS because I mostly like CVS, and don't care
about the transaction atomicity issues that some people are obsessed
with. Tagging every file to make a branch or release does bite; that's
something I will be looking into after 1.0.

Just because one program uses another as a subprogram for some
operations does not make it a hack, and it does not necessarily mean
that the first program is just some wrapper for the second. At some
point, a layer takes on semantics of its own. E.g. the Python language
isn't just a wrapper for the machine instruction set.

The combination of Meta-CVS and CVS is actually less of a hack than
naked CVS, because certain silly things that can happen to a CVS user
are not ``tickled'' by the Meta-CVS logic. For example, the error that
``file was independently added by a third party'' does not exist. Each
added file is a unique object; adding two objects under the same name
results in a directory structure conflict that can be resolved without
blocking the actual add operation. The race condition that happens when
one user removes a file while another one has uncommitted changes to it
also goes away; removed files are merely unlinked from the directory
structure, and can be recovered. No ``cvs remove'' is done unless you
run the ``purge'' command.

The program has a nice third party code importing feature that
intelligently figures out file moves, symbolic link reconfigurations,
and permission changes. I'm not aware of any free version control tool
which currently has anything like this. So you see there are
substantial operations in the program, not just calls to CVS.

If you actually use it for a while, you will find that it just
works and works. With the exception of one report of a build problem, I
have received only favorable reports from satisfied users. No bug
reports at all. I'm using it for all new projects, and have converted a
few of my old ones.

>meta-cvs and other cvs wrappers/extensions - dunno, they are all
>hacks.

What other CVS wrappers and extensions?  Can you give a link to a
program built around CVS which does anything close?




More information about the MPlayer-dev-eng mailing list