This is a quick step-by-step guide to importing and mirroring a remote Subversion project with the standard layout (trunk, branches, and tags) into a Git repository using SubGit.
Before you start
Make sure that you have SubGit binary files downloaded and Java (JRE) installed on your system.
Create a bare Git repository
Set up import and mirror configuration settings by running the following command:
$ subgit configure --layout auto --trunk TRUNK_PATH SVN_PROJECT_URL GIT_REPO_PATH
TRUNK_PATH
is a relative path to the trunk folder. Specify the path relative to a Subversion project URL.SVN_PROJECT_URL
is a URL to a Subversion project that you want to import or mirror.GIT_REPO_PATH
is a path to the directory for creating a bare Git repository ( a repository without a working tree ). Note that bare Git repository names end with.git
.
SubGit identifies the layout of a Subversion project (the trunk, branches, tags, and shelves) and creates a bare Git repository, where y our Subversion project will be imported or mirrored.On Windows, all commands should start with
subgit.bat
(e.g.subgit.bat configure
etc.)You will be asked to log in to a Subversion repository unless the Subversion credentials cache is already stored in the default Subversion configuration directory. For more information on the Subversion credentials cache and the default Subversion configuration directory, see the Using the Subversion credentials cache section.
Review and adjust the configuration settings
Branch mapping rules are specified in the
[svn]
section of the SubGit configuration file, located atGIT_REPO_PATH/subgit/config
Use the following format to map Subversion directories (such as the trunk, branches, tags, and shelves) to Git references:
<Subversion-Path-Pattern>:<Git-Reference-Pattern>
The paths to the Subversion directories are defined relative to a Subversion project URL.
The mapping rules for a Subversion project with the standard layout are the following:trunk = trunk:refs/heads/master
branches = branches/*:refs/heads/*
tags = tags/*:refs/tags/*
shelves = shelves/*:refs/shelves/*
For more information on the branch, tag, and shelves mapping see the Branches and tags mapping section.
Author mapping rules are specified in the
authors.txt
file, located atGIT_REPO_PATH/subgit/authors.txt
Use the following format to map Subversion users (
svnUser
) to Git authors (Author Name <email>
):
svnUser = Git User <user
@example
.com>
For more information on the author mapping, see the Authors' mapping section.
Import a Subversion project
Run:
$ subgit
import
GIT_REPO_PATH
After import, the synchronization between the Git and the Subversion repositories is disabled.
Mirror a Subversion project
Run:
$ subgit install GIT_REPO_PATH
This command installs SubGit binary files on the Git repository and enables the mirror.
The Git repository stays synchronized with the original Subversion repository. The changes committed either to Subversion or Git repositories are synchronized in both directions.
Clone the bare Git repository
To create the directory with the project working tree, run:
$ git clone GIT_REPO_PATH WORK_DIR_PATН
WORK_DIR_PATH
is a path to a working directory, in which you want to create the project working tree.If Git warns you that you clone an empty repository and after the command execution you don't see your project files in the working directory, most likely it means that the automatic branch and tag mapping hasn’t worked correctly. In this case, specify the mapping rules manually in the
[svn]
section of the SubGit config file and runsubgit install GIT_REPO_PATH
again.For more information on branches, tags, and shelves mapping see the Branches and tags mapping section.
Register your SubGit instance
Upload the file with the registration key to your Git server and run:
$ subgit register --key subgit.key GIT_REPO_PATH
You can use SubGit for an unlimited number of users without any registration key for 7 days.
You can use SubGit for an unlimited number of users for a trial period of 30 days. Apply for a registration key here .
For more information on SubGit licensing and registering Git repositories see the Licensing section.