SVN Support in the Git Client SmartGit
SmartGit

A bridge to Subversion.

SmartGit combines the best of both worlds:
the power of a local Git repository with the
access control of a central Subversion server.

SmartGit - a Git client to access an SVN repository

Work faster and off-line

Fast execution of a merge

With SmartGit, you do not need permanent access to the Subversion server in order to perform most commands. A server connection only is required to send your commits back and to receive new commits from others.

Working offline is significantly faster and gives you more freedom with respect to where you work and when you share your results with your team.

Have you ever dreamed of merging hundreds of files within seconds? SmartGit makes this dream come true.

Local commits can be "modified"

Join and reorder commits

Though Git commits are immutable, Git allows to rewrite the branch structure with new commits (without losing the original commits). This provides many ways to rearrange your local work into cleanly separated logical units before syncing with the Subversion server. For example, you can:

  • Join multiple commits into one
  • Split one commit into multiple commits
  • Reorder commits
  • Relocate commits to other branches
  • Undo commits

Commits can be performed on a line level

Commit only a subset of a file

With Subversion Change Sets you frequently face the problem that files may contain changes which should go into different commits. When committing a file contained in a Change Set, the complete working copy state of this file is committed.

Git on the other hand uses a special "staging" area called Index which is independent of the working tree. This allows you to prepare commits in a more fine-grained way and to only commit the desired changes of each file.

Supported SVN functionality

SmartGit supports almost all of the functionality of SVN 1.9:

  • Local working copy operations
  • Checking out, updating, switching to different branches, committing, merging
  • Compare, Log
  • Tag and branch management
  • Support for SVN properties

Limitations of SmartGit

Comparison with git-svn

SmartGit is not simply a wrapper around git-svn, but extends git-svn concepts significantly:

  • Better performance, especially on Windows
  • Very fast initial clone
  • Tag and branch management
  • History tracking for directories (copy-from)
  • Transparent, bi-directional mapping of:
    • svn:mime-type and svn:eol-style to .gitattributes
    • svn:ignore to .gitignore
  • Submodule-like support via bi-directional mapping of svn:externals

How to Get Started?

If you are not familiar with Git, please check out the Tour: SmartGit as SVN Bridge explaining the most common Subversion workflows with SmartGit.