My project has a Subversion repository on a network file system, and a new team would like to access it using Git, and be able to commit to it and get updates from it.
What I have in mind is to create a new bare git-svn
clone of the Subversion repository on the same network file system, and make sure the two repositories are always up to date with respect to each other.
The way to do this is probably to add a post-commit hook for both Subversion and the new Git repository, that will each update the other's repository.
The Subversion post-commit hook will include git svn rebase
, and the Git one git svn dcommit
.
The problem is that I will have to use some kind of lock to make sure no one commits to either repository while other is also being committed to, because they always have to be in sync before any commit. This has several disadvantages, among them the time it will take to commit to Subversion or to push to the Git repository (it has to wait for the hook to finish), and the fact that some users may not be able to run git svn
(because it's not installed on their machine), which means they can't update the other repository when committing/pushing.
How can I solve these problems? What will the Subversion and Git hooks look like?