SubGit is a server-side tool that helps to accomplish Svn to Git migration or Svn/Git synchronization task. This talk describes SubGit pros and cons and compares SubGit with its client-side Git-Svn alternative.
to translate at least part of the repository • Non-standard workflow • Part of standard Git package, but... • …git-svn is 5000 lines script of perl code
Subversion revision might be translated to multiple Git commits • From Git to Subversion • Heuristics help to detect target branch in complex cases • /shelves directory is used to store anonymous branches
r20 A /trunk/file.txt M /trunk/dir/file.txt A /trunk/dir/copy.txt from /trunk/file.txt@r10 D /trunk/dir/old_file.txt • Delta tracks copies • Git commit is always a full file tree
part of the delta is applied to the parent commit tree • From Git to Subversion • Renames and copies are detected at translation time • Branches and tags creation uses copy operation
• Revisions ranges (including cherry-picks) • Merge unit is file or a directory /trunk@r100 svn:mergeinfo=/branches/1.0.x:1-100,105 /trunk/file.txt@r100 svn:mergeinfo=/branches/1.0.x/file.txt:102
SubGit is free for Open Source and Start-Up Projects • Closed-source projects will have to register SubGit (purchase a registration key) • Dedicated technical support for SubGit