47

Reasons for doing this aside, is there a reasonable way to convert an entire git repository to subversion?

I can find only tons on information on migrating from subversion to git, and exchanging changesets between the two, but not for doing a simple conversion of the entire git repository to svn.

2
  • 1
    Duplicated here: stackoverflow.com/questions/661018/… Commented Aug 10, 2009 at 22:32
  • 23
    Sad that you had to preface with "Reasons for doing this aside" in order to prevent a flame war or such... Commented Nov 9, 2012 at 20:15

2 Answers 2

16

The general problem with doing conversions this direction is that Git repositories can contain more than just a linear history of revisions, as Subversion would expect. Multiple ancestries with divergent histories and frequent merge commits are all possible, which can't be easily represented in a Subversion repository.

For simple cases where you do have a linear history in your Git repository, you can use git-svn dcommit to push the lot up to an otherwise empty Subversion repository.

Sign up to request clarification or add additional context in comments.

2 Comments

Sorry to stir this up again after a few years, but can you give a concrete example of how to do this? Say I have a clone of a git repository at ~/my-git-repo, and I want to copy the commit history into some SVN repo, say svn://foo.com/empty-svn-repo/
@SchighSchagh: Have a look at this recent question, it might be more suited to what you need: possible to recreate svn repository from (full) git-svn clone?
6

It's very easy to perform with SubGit.

$ svnadmin create svn.repo
$ subgit configure svn.repo
$ nano svn.repo/conf/subgit.conf to specify a path to your bare repository (you may use "git clone --bare <URL>" if you have none locally)
$ subgit install svn.repo

After conversion your SVN and linked Git repository will be in sync: every Git push will be translated to SVN commit and vice versa. To break translation run

$ subgit uninstall svn.repo

While translation SubGit will try to preserve commit dates, tags, ignores, merges, EOLs, branches and so on, as it is possible. I can't say the same about git-svn repository.

1 Comment

This doesn't work. See stackoverflow.com/a/11084905/785194 for a working subgit solution.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.