git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Tracking and committing back to Subversion?

From
EWEric Wong <normalperson@yhbt.net>
Date
Feb 4, 2006, 05:40 UTC
Message-ID
<20060204054056.GB24314@Muzzle>
In-Reply-To
<1138834301.21899.40.camel@wilber.wgtn.cat-it.co.nz>
Sam Vilain <sam@vilain.net> wrote:
> Hi all,
> 
> Has anyone done any work on bidirectional access to SVN repositories?
> ie, tracking and committing.

AFAIK, Not yet. But it's something that's been on the back of my mind for a while. I've attempted similar things with Arch <-> SVN in the past but didn't get anything extremely robust going from Arch -> SVN although I'm pretty satisfied with my SVN -> Arch product (svn-arch-mirror).

> That would be porcelain that behaves like SVK (http://svk.elixus.org)
> 
> Ideally it would probably need to link against the Subversion RA (remote
> access) library, neon.

I prefer to use git-svnimport for pulling from svn since it's pretty good at what it does. That already depends on SVN::Core and SVN::Ra. SVK is really nice tool, just a bit slow after I've been using git for a while.

Show 7 quoted lines
> I can see forsee two potential issues;
> 
>   1. file properties - such as mime type, ignores and custom properties.
>      Linus, when I asked you about this in Dunedin, you mentioned that
>      there is a place at the end of the directory entry where this could
>      fit without breaking backwards compatibility.  Perhaps this could
>      be an optional pointer to another directory node;

Mostly ignore-able, imho. svn:executable is the one that makes the most sense (and is easiest) to support.

svn:ignore <-> .gitignore mapping are pretty close (identical, save for recursive properties that svn gets very wrong. I don't think svn:ignore is affected by line order, whereas .gitignore is a plain file and line order does matter.

svn:external is almost definitely better off ignored entirely when interfacing with other RCSes

svn:keywords: I don't think there's a way to disable this like there is with CVS, is there? keywords are evil imho.

I don't use or know much about the other properties...
Show 10 quoted lines
>   2. "forensic" file movement history - as opposed to the uncached,
>      (and unversioned), automatic "analytical" file movement history.
> 
>      It would be easy for a tool to provide 100% interface compatibility
>      with SVN client/SVK using properties, but properties that hang off
>      the head rather than the file itself (so that they don't stuff up
>      the ability to merge identical trees reached via independent
>      paths).  SVN calls these "revision properties".  If a good
>      convention is adopted for this, it could be used as a nice way to
>      supplement git's automatic analysis of the revision history.

Just parsing the output of diff-tree -C and marking them in SVN as copies/renames should be sufficient for letting SVN do its thing.

Doing this kind of file movement history on the git side sounds like overkill to me. I was a _huge_ fan of logical file-identities in GNU Arch in the past, but the complexity destroyed it from both a UI and performance perspective.

-- 
Eric Wong
Previous: Sam VilainNext: Seth Falcon
Message 2 of 12 in “Tracking and committing back to Subversion?”
  1. Sam VilainFeb 1, 2006
  2. Eric WongFeb 4, 2006
  3. Seth FalconFeb 4, 2006
  4. Sam VilainFeb 6, 2006
  5. Brian SmithFeb 4, 2006
  6. Sam VilainFeb 6, 2006
  7. Brian SmithFeb 10, 2006
  8. Junio C HamanoFeb 10, 2006
  9. Brian SmithFeb 10, 2006
  10. Sam VilainFeb 10, 2006
  11. Brian SmithFeb 10, 2006
  12. Sam VilainFeb 10, 2006

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.