Using Git SVN

Many development projects use Subversion (SVN) to manage their source code. It’s the most popular open source VCS and has been around for nearly a decade. It’s also very similar in many ways to CVS, which was the big boy of the source-control world before that.

One of Git’s great features is a bidirectional bridge to Subversion called git svn. This tool allows you to use Git as a valid client to a Subversion server, so you can use all the local features of Git and then push to a Subversion server as if you were using Subversion locally.

The gitman git svn support allows you to resolve SVN source dependencies. The gitman does resolve a specified SVN revision (e.g. HEAD) of an SVN repository source dependency (from whole branches to particular subdirectories).


The gitman git svn support does currently not track any changes in the imported svn repository. The focus of this feature is to just import svn dependencies in a readonly fashion. In this matter any changes in the imported svn repository will be overridden by an update/install process (like an implicit --force for each gitman command).

To import svn repositories it is required to specify the repo source parameter type to git-svn for the corresponding entries.

Example Configuration:

location: imports

- name: MyDirectory
  type: git-svn
  repo: http:http://my-svn-repo/trunk/MyDirectory
  rev: HEAD

- name: MySecondDirectory
  type: git-svn
  repo: http:http://my-svn-repo/trunk/MySecondDirectory
  rev: 72846

- name: lz4
  type: git
  rev: v1.8.1.2

By default the repo source parameter type is git.


The gitman git svn support uses internally shell $ git svn clone -r <rev> <repo> to resolve the individual SVN source dependency. In this matter only the specified svn revsion will be fetched (shallow history).