From 86afd385b5e8972256500aec23a308d2abd78065 Mon Sep 17 00:00:00 2001 From: Kirill Smelkov Date: Sat, 18 Sep 2010 13:58:53 +0400 Subject: [PATCH] taskd/clone: ask git-svn to store branches under svn-origin/heads/* instead of svn-origin/* The trick originally suggested by Mikls Vajna does the following: refs/remotes/svn-origin/heads/* -> refs/heads/* refs/remotes/svn-origin/trunk -> refs/heads/master refs/remotes/svn-origin/tags/* -> refs/tags/* The problem is git-svn now stores svn branches under refs/remotes/svn-origin/* (not refs/remotes/svn-origin/heads/* as we used to expect), and so the first mapping does nothing, and we end up without svn branches in refs/heads/ namespace. So, to avoid the problem let's ask git-svn to put svn branches under svn-origin/heads/* -- then our mapping will work as expected, and it will fix girocco problem of not propagating svn branches (except trunk) to git refs/heads/ namespace. Note: we can't write ``+refs/remotes/svn-origin/*:refs/heads/*'' in the mapping instead, because then it will recursively put everything from under svn-origin/ into refs/heads/ , at least including tags/ . ( Eric, at least it seems a bit unflexible for storing svn branches right under $prefix/ -- as you can see for automated git mirroring of svn repos, I had to tweak git config by hand... ) Cc: Andrew Steinborn Cc: Miklos Vajna Cc: Eric Wong --- taskd/clone.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/taskd/clone.sh b/taskd/clone.sh index 8d56e1e..12363e5 100755 --- a/taskd/clone.sh +++ b/taskd/clone.sh @@ -26,6 +26,10 @@ case "$url" in # we just remote svn+ here, so svn+http://... becomes http://... svnurl="${url#svn+}" GIT_DIR=. git svn init -s --prefix=svn-origin/ "$svnurl" + # ask git-svn to store branches under svn-origin/heads/* instead of svn-origin/* + GIT_DIR=. git config svn-remote.svn.branches \ + "$(git config --get svn-remote.svn.branches | \ + sed 's|:refs/remotes/svn-origin/\*$|:refs/remotes/svn-origin/heads/*|')" GIT_DIR=. git svn fetch # Neat Trick suggested by Miklos Vajna GIT_DIR=. git config remote.origin.url . -- 2.11.4.GIT