With SmartGit, you do not need permanent access to the Subversion server in order to commit, to switch branches, to use the log or to check out older commits. A connection is required only when new Git commits are sent to the Subversion server as SVN revisions, or when fetching revisions from other users. This gives you more freedom with respect to where you work and when you share your results with your team.
Git commits are immutable, but 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 synching with the Subversion server. For example, you can:
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 add the desired subset of the changes in each file to a commit.
Because the complete repository is available locally, repository operations do not suffer from delays due to network connectivity or server overload. This results in an significantly faster execution of commands.
Have you ever dreamed of merging hundreds of files within seconds? SmartGit makes this dream come true.
SmartGit supports almost all of the functionality of SVN 1.6:
SmartGit is not simply a wrapper around git-svn, but extends git-svn concepts significantly:
SmartGit is compatible with existing git-svn repositories, although it's strongly recommended to freshly clone repositories from SVN with SmartGit in order to have access to all features.