SVN Client Features

Work and commit offline

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.

Local commits

Local commits can be "modified"

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:

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

Join and reorder commits

Commits can be performed on a line level

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.

Commit only a subset of a file

Fast execution of commands

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.

Fast execution of a merge

Supported SVN functionality

SmartGit supports almost all of the functionality of SVN 1.6:

  • Local working copy operations
  • Checking out, updating, switching to different branches, committing, merging
  • Compare, Log
  • Tag and branch management
  • Support for pre-defined SVN properties: svn:executable, svn:mime-type, svn:eol-style, svn:ignore, svn:externals, svn:special, svn:mergeinfo

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

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.