[PATCH (girocco) 2/3] taskd/clone: ask git-svn to store branches under svn-origin/heads/* instead of svn-origin/*

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxx>
Cc: Miklos Vajna <vmiklos@xxxxxxxxxxxxxx>
Cc: Eric Wong <normalperson@xxxxxxxx>
---
 taskd/clone.sh |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)

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
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]