I am working in a team for a company that has made the decision to migrate to Bitbucket from SVN.
The team currently thinks that we want to do the migration with history.
Our team is also about to upgrade our development toolset in conjunction with the migration.
This new toolset is not 100 % compatible with the old one and thus opening a project with the
new toolset will automatically make changes to the project structure, so that it cannot be
opened with the current/old toolset anymore. Therefore, the idea is to separate the code bases so
that they cannot mix with each other. Related to this, I would like to ask if it is possible to
configure SubGit so that for certain repos there is only one-way sync (SVN To Git) ?
What we would like to explore is a set-up where we could combine SVN and Bitbucket so that the
team-members could gradually move over to Git. Ideally that would mean that we could use SVN and Bitbucket side-by-side, get familiar with Git and gradually cease using SVN.
Having studied SubGit a bit it sounds quite promising for our needs. However, to be on the safe side,
I would like to double check what are the deployment options and their cost. Our team has currently
8-9 persons (5 actively making code commits), SVN is running on a Windows server, Bitbucket is bought
as a service from Atlassian (the company has way more Bitbucket users in total, but they will not
use SubGit).
SubGit is definitely the right choice for a smooth migration from SVN to Git and it is able to meet all the requirements. The setup with Bitbucket cloud (which, as I understood, you’ve bought) on the Git side has some specifics, however, because SubGit requires direct file access to Git repositories, but it’s is possible with an interim SubGit server standing between SVN server and Bitbucket cloud. The following our documentation article describes this setup in more details:
It describes GitHub as an example target, but the approach is the same for any remote Git server, including Bitbucket cloud.
I’m afraid that SubGit has no feature to run one-way mirror, the mirror is always a two-way full synchronization, but there are approaches that allow to make a mirror effectively one-way. The best approach it to mirror SVN branches into a separate namespace in Git, so that all the branches are in, say, from_svn namespace and are in sync with SVN, but changes from SVN can be merged manually in “production” branches that are used for development in Git.
On the other hand, it can be possible to use separate branches for the new code base and synchronize the SVN repository with two different Bitbucket repositories, so that one Git repository is synchronized with branches with the new code base and another only has those with old code base, for example.
For team with up to 10 developers actively committing to a mirrored repository we have the cost-free Starter license:
So, it looks in your case the setup is possible at no charge (not counting Bitbucket fees, of course) yet the setup will require an additional server to host and run SubGit and some time to configure the overall setup.