[cvsnt] Betr.: CVSNT to CVS

Tony Hoyle tony.hoyle at march-hare.com
Wed Apr 8 10:28:16 BST 2009


Andreas Krey wrote:

> There isn't enough coffee in the universe to do that. To make that
> work you'd need a way to translate whatever your storage is into
> a git repository, and to be able to accept it back (in another
> repository). That and the way svn merge tracking works (or rather,
> does not), can simply not be made to work for the general case.

Not at all.  It merely needs to be pretend to be git.  It's probably not 
even that hard, provided you can export something that looks like a git 
repository, and accept that back.

Looking at the techincal docs I can't see anyting particularly 
challenging there (in fact as the client does all the work, it's 
actually a lot easier than some systems).  There doesn't appear to be 
any docmentation of the native protocol, but that's not unusual these days.

> It may be possible to have one EVS-with-former-svn-repo,
> and one EVS-with-former-git-repo, but I thing a generic
> bridge is impossible. If it weren't, the VCS were actually
> semantically the same, and they very definitely aren't.

evs is *already* a generic bridge.  It works.  There are rough edges, 
mostly due to time constraints, but the technical barrier has been sorted.

And yes the are all the same, at heart.  That's the depressing thing 
about it.. they all go off writing new ones instead of improving what's 
there already and end up with something that is basically the same thing 
with a new skin on it.

Sure, you can talk about client/server versus distributed (which is 
really server/server), or DAV vs something else, or having repository vs 
file versions.. but those aren't fundamental differences when you break 
it down to what you're doing.  The reason for that should be obvious - 
you're storing end user actions, and those actions don't change.  A 
rename will always be a rename, a file modification will always be a 
file modification.

Are there compromises in evs?  Yes.. tagging with the cvsnt client 
doesn't *quite* have the same semantics for example.  SVN doesn't 
support unicode, or renames (their rename command is just a 
copy/delete).  TFS is, well, TFS... Doesn't matter to us - since all 
clients are equal if someone wants to do something not supported on one 
clent they just use a different one.

> Alone the way how we work(ed) with cvsnt *cannot* be
> represented in git, because there merges always take
> the whole repository. No partial directory or file
> merges -- the latter also makes migration to svn
> hard. And you *need* to represent it since that
> is how the git 'client' talks.

That's an implementation detail.. I heard much the same when we talked 
about supporting SVN and CVSNT simutaneously.. they were supposed to be 
'too different'.

There's no fundamental difference between a repository merge and a 
directory/file merge in terms of what actually happens.  The only 
difference is the unit of change you're dealing with.  evs has more fine 
grained object tracking than any system currently out there (that I've 
seen) and at the same time can represent changes at the repository level 
   if required.  It was designed from the ground up to do that.

Migration to SVN is hard because it's SVN - The SVN server part of evs 
was 3 months of trying to work out why the hell they did it like that 
(and I'm still not sure I answered it).

Tony



More information about the cvsnt mailing list