Subject: Re: Git / Subversion Interoperability

From: "Shawn O. Pearce" <[email-masked]>
Date: Sat, 24 Mar 2007 02:41:30 -0400

Karl Hasselstr??m <[email-masked]> wrote:
> On 2007-03-23 01:36:11 +0000, Julian Phillips wrote:
> > Indeed. That's what I was aiming at with the the last sentence (not
> > very clearly unfortunately). It would be nice if the server could
> > tell the client that properties are not supported ... but I doubt
> > that it can, since they are fundamental part of Subversion.
> >
> > In particular it's how the client finds out about things like
> > symlinks and line ending conversion. It may be necessary to provide
> > some basic support for some of the properties in the svn:...
> > namespace in order for the Subversion repo access library not to
> > refuse to talk to the git server.
> 
> Maybe the pragmatic solution would be to have built-in handling of a
> few properties such as svn:executable and svn:ignore that have git
> equivalents, and just emulate all other properties with files.

That is not a bad idea at all.  We could easily do

  svn:executable -> (mode & 0111);
  svn:ignore -> .gitignore;

I'm sure there are others, but they are the only two Karl mentioned,
and that I know of off the top of my head.  ;-)

Additional random properties could just be written out to .gitsvnprop
in the parent directory.

Here's another SVN feature that we might have to actually emulate:
locks.  Apparently clients can "lock" a file, preventing others
from editing that same file.  This is good for say artwork where
the file format is a binary thing that just cannot be merged.
Some users may actually be using SVN for exactly this reason.
Replacing it for some users may require that feature.

Heck, the F!@&@#*!@&@!*! POS (not SVN) that I have to use at my day
job can *only* work in this mode (exclusive lock file) and people
there still don't know how two different developers can safely edit
the same Java file at the same time without that exclusive lock
system in place.  They are absolutely terrified of auto-merges like
what Git does.  ;-)

Then they same users go off and incorrectly hand-merge stuff anyway.
Stuff that xdiff's 3-way file merge would have done correctly
without any problems.  Argh!

-- 
Shawn.