Thread (4 messages) flat view 4 messages, 3 authors, 2016-06-15

Re: New converstion tool: svn2git.py

From: Daniel Barkalow <hidden>
Date: 2016-06-15 22:45:40

On Wed, 19 Nov 2008, Neil Schemenauer wrote:
Hi,

I'm working on a tool to do conversions from SVN to git using a SVN
dump.  It's in early development but perhaps some people would be
interested in it:

    http://python.ca/nas/python/svn2git.py

I would like to improve it so that it intelligently converts SVN
branches and tags into git branches (when possible).  The basic idea
is to map SVN paths into git branches, e.g. trunk -> master,
branches/foo -> branch-foo, tags/bar -> tags-bar.  Next, specific
SVN dump actions like:

    Node-path: branches/foo
    Node-kind: dir
    Node-action: add
    Node-copyfrom-rev: 3
    Node-copyfrom-path: trunk

need to be detected and the commit needs to performed with the
correct parent.  One complication is that SVN can create a branch or
tag from anywhere, for example, the action

    Node-path: tags/bar
    Node-kind: dir
    Node-action: add
    Node-copyfrom-rev: 3
    Node-copyfrom-path: trunk/subdir

would create tags/bar based on revision 3 of trunk/subdir.  There
doesn't seem to be a good way to convert that into git.  I was
thinking that the tags-bar branch in that case would have no parent.
Probably the best thing in git would be to have the parent of the initial 
commit on that branch be revision 3 of trunk; it will look like a big 
rename of everything from subdir/* into the project root directory, which 
is essentially what happened.
Would git still efficently pack that or would you end up with extra
blobs?
git will only ever store a single copy of identical file contents, 
regardless of anything at all. Furthermore, when making a pack, git 
compresses everything in the pack against everything else in the pack. Its 
heuristics also ignore the leading directory names in guessing which blobs 
are likely to help in compression (because there's a good chance that 
anything named "Makefile" anywhere is useful in compressing anything else 
named "Makefile").

	-Daniel
*This .sig left intentionally blank*
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help