Migrating from Bitbucket


I’m working to migrate a subversion <-> git mirror out of self-hosted Atlassian Bitbucket (where we use the subgit plugin) and onto a standalone subgit installation. For the git repo, we’ll be migrating from Bitbucket to Phabricator; since Phabricator is similar to Github and has a commit database on top of the git repo itself, we’ll be following the Github setup guide:


Anyway, I have two questions:

(1) The initial subversion -> git import takes a very long time, owing to the size of the repo. In the past when the mirror has broken and svn/git histories diverged, within Bitbucket we’ve had to reimport the git repo from svn, which freezes the git repo for a long time. On the current standalone version (3.3.10), if both svn and git commits continue while mirror operations are down for an extended period, is subgit sophisticated enough to Do The Right Thing™ and re-merge commit histories seamlessly, or does this require a fresh reimport from one of the sources, and we’d lose deltas committed in the interim to the other?

(2) As we’re already a paying customer and will continue to be a paying customer (simply switching from the Atlassian Bitbucket plugin to the standalone daemon), I was wondering if it might be possible to request an extension to the 7-day trial. We haven’t hit the 7-day limit, yet, but I wanted to inquire in advance of that eventuality as we continue to test the migration path.

Thanks so much!

David Goerger
Systems Engineer
Hudson River Trading, NYC


Hello David!

If the mirror between Git and SVN repositories is down and new commits are made both to SVN and to the Git repository, then I’m afraid, SubGit won’t be able to pick up the mirror and continue by merging all the commits made on both sides as it is diverged-history situation. If the mirror is re-established after a period of inactivity and the SVN and Git repositories history has diverged (that is, new commits were made both on Git and SVN side) then SubGit will move new Git commits (those that are not present in SVN) to ‘unsynced’ namespace thus resetting the Git repository state to the last synchronized state, and then will translate all new SVN revisions to the Git repository thus restoring the synchronization. The new Git commits will still be available in the repository, so it will be possible to merge them manually after the mirror is restored.

Sure, it’s perfectly possible to extend the trial period to 30 days, you would just need to install 30-days trial key. It can be obtained on the following page:


Select " Trial" license kind. After sending the form on the website, you will receive and email with the key and to extend the trial period a mirrored repository should be registered with that key. To register the repository, run the following command:

subgit register --key <path to key file> <path to mirrored repository>

This command require root privileges as it writes to system directories.