Search code examples
git-svnprefix

How can I change the Prefix Mapping in a Git-Svn Repository?


I've created a Git Clone of a SVN repository using git-svn. When doing this I specified the --prefix option to prefix my remote branches. I now want to get rid of this prefix.

Is there a way to update or remove the prefix without re-cloning the repository?

Essentially I did the initial clone using --prefix=Project so I ended up with Project/trunk and Project/feature-branch as my remote tracking branches. What I want is to have the trunk just be called trunk and the feature-branch be called svn/feature-branch.


Solution

  • Note: the current solution might not work anymore with git 2.0+ (April 2014)

    See commit fe191fc by Johan Herland (jherland), which highlight the fact you now are supposed to have a prefix (and not have a svn branch without prefix like 'trunk'):

    Git 2.0: git svn: Set default --prefix='origin/' if --prefix is not given

    Having no prefix by default was problematic:

    git-svn by default puts its Subversion-tracking refs directly in refs/remotes/*.
    This runs counter to Git's convention of using refs/remotes/$remote/* for storing remote-tracking branches.

    Furthermore, combining git-svn with regular git remotes run the risk of clobbering refs under refs/remotes (e.g. if you have a git remote called "tags" with a "v1" branch, it will overlap with the git-svn's tracking branch for the "v1" tag from Subversion.