git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 5/5] svn-fe: use proper refspec in remote-svn-alpha

From
Dmitry Ivankov <divanorama@gmail.com>
Date
Jul 5, 2011, 16:45 UTC
Message-ID
<1309884350-13415-6-git-send-email-divanorama@gmail.com>
In-Reply-To
<1309884350-13415-1-git-send-email-divanorama@gmail.com>

Create a per repository name private refs namespace as suggested by the remote helpers documentation. This allows to have several svn remotes at the same time. And also this way we don't overwrite the local branch master.

The refpec is: HEAD:refs/svn-alpha/$reponame/SVNHEAD refs/heads/master:refs/svn-alpha/$reponame/SVNHEAD

Signed-off-by: Dmitry Ivankov <divanorama@gmail.com>
---
 contrib/svn-fe/git-remote-svn-alpha        |   18 ++++++++++--------
 contrib/svn-fe/t/t9010-remote-svn-alpha.sh |    9 +++++++++
 2 files changed, 19 insertions(+), 8 deletions(-)
diff --git a/contrib/svn-fe/git-remote-svn-alpha b/contrib/svn-fe/git-remote-svn-alpha
index d75bc2a..d4b90ae 100755
--- a/contrib/svn-fe/git-remote-svn-alpha
+++ b/contrib/svn-fe/git-remote-svn-alpha
@@ -36,8 +36,8 @@ SVNDUMP=${SVNDUMP:-`try_svnrdump`}
 SVNDUMP=${SVNDUMP:-`try_svnadmin`}
 
 do_import () {
-	revs=$1 url=$2
-	(eval "$SVNDUMP \"$url\" -r\"$revs\"" |	svn-fe --no-progress) 3<&0 || die "FAILURE"
+	revs=$1 url=$2 dst=$3
+	(eval "$SVNDUMP \"$url\" -r\"$revs\"" |	svn-fe --ref="$dst" --no-progress) 3<&0 || die "FAILURE"
 	exec 1>&-
 }
 
@@ -46,29 +46,31 @@ usage 'git remote-svn-alpha <repository> <URL> < commandlist'
 repo=$1
 url=$2
 need_import=""
+remote_ref="refs/heads/master"
+private_ref="refs/svn-alpha/$repo/SVNHEAD"
 
 while read -r cmd args
 do
 	case $cmd in
 	capabilities)
 		echo import
-		echo "refspec HEAD:refs/heads/master"
-		echo "refspec refs/heads/master:refs/heads/master"
+		echo "refspec HEAD:$private_ref"
+		echo "refspec $remote_ref:$private_ref"
 		echo
 		;;
 	list)
-		echo '? HEAD'
-		echo '? refs/heads/master'
+		echo "? HEAD"
+		echo "? $remote_ref"
 		echo
 		;;
 	import)
-		test "$args" = "HEAD" || test "$args" = "refs/heads/master" ||
+		test "$args" = "HEAD" || test "$args" = "$remote_ref" ||
 		die "remote-svn-alpha: unsupported import ref argument: $args"
 		need_import="yes"
 		;;
 	'')
 		test "$need_import" = "yes" || exit 0
-		do_import 0:HEAD "$url"
+		do_import 0:HEAD "$url" "$private_ref"
 		need_import=""
 		;;
 	*)
diff --git a/contrib/svn-fe/t/t9010-remote-svn-alpha.sh b/contrib/svn-fe/t/t9010-remote-svn-alpha.sh
index 30dc726..786cc1f 100755
--- a/contrib/svn-fe/t/t9010-remote-svn-alpha.sh
+++ b/contrib/svn-fe/t/t9010-remote-svn-alpha.sh
@@ -226,4 +226,13 @@ test_expect_success SMALL_SVN 'fetch each rev of SMALL separately' '
 	test_cmp ref7_2 ref_2
 '
 
+test_expect_success TINY_SVN 'fetch TINY does not write to refs/heads/master' '
+	reinit_git &&
+	url=$(svnurl tiny.svn) &&
+	git remote add svn "$url" &&
+	git fetch svn &&
+	git show-ref --verify refs/remotes/svn/master &&
+	test_must_fail git show-ref --verify refs/heads/master
+'
+
 test_done
-- 
1.7.3.4
Previous: Jonathan Nieder
Message 12 of 12 in “remote-svn-alpha updates”
  1. 0/5 remote-svn-alpha updatesDmitry Ivankov, Jul 5, 2011
  2. 1/5 svn-fe: use svnrdump --quiet in remote-svn-alphaDmitry Ivankov, Jul 5, 2011
  3. 2/5 svn-fe: allow svnadmin instead of svnrdump in svn helperDmitry Ivankov, Jul 5, 2011
  4. Ramkumar RamachandraJul 6, 2011
  5. Dmitry IvankovJul 6, 2011
  6. Ramkumar RamachandraJul 6, 2011
  7. Jonathan NiederJul 6, 2011
  8. 3/5 svn-fe: add a test for remote-svn-alphaDmitry Ivankov, Jul 5, 2011
  9. 4/5 svn-fe: use svn-fe --no-progress in remote-svn-alphaDmitry Ivankov, Jul 5, 2011
  10. Ramkumar RamachandraJul 6, 2011
  11. Jonathan NiederJul 6, 2011
  12. 5/5 svn-fe: use proper refspec in remote-svn-alphaDmitry Ivankov, Jul 5, 2011

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.