[PATCH (girocco) 2/3] 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 <g33kdyoo@gmail.com>
Cc: Miklos Vajna <vmiklos@frugalware.org>
Cc: Eric Wong <normalperson@yhbt.net>
---
taskd/clone.sh | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)
Show changes to taskd/clone.sh +4 −0
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 .
--
1.7.3.rc2.1.g63647