{"thread":{"id":"27754","subject":"[PATCH 2/5] svn-fe: allow svnadmin instead of svnrdump in svn helper","startedAt":"2011-07-05T16:45:45Z","lastAt":"2011-07-06T12:30:44Z","messageCount":12,"participants":["Dmitry Ivankov","Ramkumar Ramachandra","Jonathan Nieder"],"isPatch":true,"patchVersion":1,"patchTotal":5},"messages":[{"id":"170833","messageId":"1309884350-13415-1-git-send-email-divanorama@gmail.com","threadId":"27754","inReplyTo":null,"subject":"[PATCH 0/5] remote-svn-alpha updates","fromName":"Dmitry Ivankov","fromEmail":"divanorama@gmail.com","sentAt":"2011-07-05T16:45:45Z","receivedAt":"2011-07-05T16:45:45Z","isPatch":true,"sender":{"key":"divanorama@gmail.com","avatar":"https://avatars.githubusercontent.com/u/158999?v=4"},"body":"Most notable for this series is adding some tests for\nremote-svn-alpha helper and not (over)writing refs/heads/master.\n\nThe helper is able to import whole svn repository root as the only\nremote branch. But it doesn't reuse any previously imported data,\ni.e. each time whole history is imported. Also it can't yet push,\nand can't configure svn username other than Guest and password\nother than empty.\n\nWorks both in git clone and git remote add & git fetch scenarios.\n$ git clone -b master svn-alpha::http://some.org/svnrepo\n\"-b master\" tells to use remote branch master as a local HEAD to\nbe checked out. This is necessary because the helper can't tell\ngit that HEAD is a \"symlink\" to refs/heads/master and even can't\ntell it's sha1 (lists it as \"? HEAD\") before actually importing.\n$ git remote add svn svn-alpha::http://some.org/svnrepo\n$ git fetch svn\n\nKnown bugs are:\n1) absolutely empty (no r1) svn repo import fails\n2) git clone needs either --bare, -n or -b master\n\nThe patch base is svn-fe-pu at git://repo.or.cz/git/jrn.git\nalso a commit 7153183171de77d084a4c24ef19d23d6313ded2a can be used\nas an earlier patch base.\n\nFor the last two commits some new svn-fe options[1] are required.\n\nWhole git-remote-svn-alpha and a test script are cited at the bottom\nof this letter as a quick reference for those who don't track svn-fe-pu.\n\n[1] http://thread.gmane.org/gmane.comp.version-control.git/176578\n\nDmitry Ivankov (5):\n  svn-fe: use svnrdump --quiet in remote-svn-alpha\n  svn-fe: allow svnadmin instead of svnrdump in svn helper\n  svn-fe: add a test for remote-svn-alpha\n  svn-fe: use svn-fe --no-progress in remote-svn-alpha\n  svn-fe: use proper refspec in remote-svn-alpha\n\n contrib/svn-fe/git-remote-svn-alpha        |   42 ++++-\n contrib/svn-fe/t/.gitignore                |    3 +\n contrib/svn-fe/t/t9010-remote-svn-alpha.sh |  238 ++++++++++++++++++++++++++++\n 3 files changed, 274 insertions(+), 9 deletions(-)\n create mode 100644 contrib/svn-fe/t/.gitignore\n create mode 100755 contrib/svn-fe/t/t9010-remote-svn-alpha.sh\n\n-- \n1.7.3.4\n\ndiff --git a/contrib/svn-fe/git-remote-svn-alpha b/contrib/svn-fe/git-remote-svn-alpha\nnew file mode 100755\nindex 0000000..d4b90ae\n--- /dev/null\n+++ b/contrib/svn-fe/git-remote-svn-alpha\n@@ -0,0 +1,79 @@\n+#!/bin/bash\n+set -o pipefail\n+set -e\n+\n+die () {\n+\tprintf >&2 'fatal: %s\\n' \"$*\"\n+\texit 128\n+}\n+\n+usage () {\n+\tprintf >&2 'usage: %s\\n' \"$*\"\n+\texit 129\n+}\n+\n+try_svnrdump () {\n+\tcommand -v svnrdump >/dev/null &&\n+\techo \"svnrdump dump --non-interactive --username=Guest --password= \\\n+\t\t--quiet --incremental\" ||\n+\ttrue\n+}\n+\n+svnadmin_wrap () {\n+\tpath=${1##file://} &&\n+\ttest \"z$path\" != \"z$1\" &&\n+\tsvnadmin dump --incremental --deltas --quiet \"$path\" \"$2\"\n+}\n+\n+try_svnadmin () {\n+\tcommand -v svnadmin >/dev/null &&\n+\techo svnadmin_wrap ||\n+\ttrue\n+}\n+\n+SVNDUMP=\"\"\n+SVNDUMP=${SVNDUMP:-`try_svnrdump`}\n+SVNDUMP=${SVNDUMP:-`try_svnadmin`}\n+\n+do_import () {\n+\trevs=$1 url=$2 dst=$3\n+\t(eval \"$SVNDUMP \\\"$url\\\" -r\\\"$revs\\\"\" |\tsvn-fe --ref=\"$dst\" --no-progress) 3<&0 || die \"FAILURE\"\n+\texec 1>&-\n+}\n+\n+test \"${2+set}\" ||\n+usage 'git remote-svn-alpha <repository> <URL> < commandlist'\n+repo=$1\n+url=$2\n+need_import=\"\"\n+remote_ref=\"refs/heads/master\"\n+private_ref=\"refs/svn-alpha/$repo/SVNHEAD\"\n+\n+while read -r cmd args\n+do\n+\tcase $cmd in\n+\tcapabilities)\n+\t\techo import\n+\t\techo \"refspec HEAD:$private_ref\"\n+\t\techo \"refspec $remote_ref:$private_ref\"\n+\t\techo\n+\t\t;;\n+\tlist)\n+\t\techo \"? HEAD\"\n+\t\techo \"? $remote_ref\"\n+\t\techo\n+\t\t;;\n+\timport)\n+\t\ttest \"$args\" = \"HEAD\" || test \"$args\" = \"$remote_ref\" ||\n+\t\tdie \"remote-svn-alpha: unsupported import ref argument: $args\"\n+\t\tneed_import=\"yes\"\n+\t\t;;\n+\t'')\n+\t\ttest \"$need_import\" = \"yes\" || exit 0\n+\t\tdo_import 0:HEAD \"$url\" \"$private_ref\"\n+\t\tneed_import=\"\"\n+\t\t;;\n+\t*)\n+\t\tdie \"remote-svn-alpha: unsupported command: $cmd $args\"\n+\tesac\n+done\ndiff --git a/contrib/svn-fe/t/t9010-remote-svn-alpha.sh b/contrib/svn-fe/t/t9010-remote-svn-alpha.sh\nnew file mode 100755\nindex 0000000..786cc1f\n--- /dev/null\n+++ b/contrib/svn-fe/t/t9010-remote-svn-alpha.sh\n@@ -0,0 +1,238 @@\n+#!/bin/sh\n+\n+test_description='check svn-alpha remote helper'\n+\n+PATH=$(pwd)/..:$PATH\n+TEST_DIRECTORY=$(pwd)/../../../t\n+. $TEST_DIRECTORY/test-lib.sh\n+\n+if command -v svnrdump >/dev/null; then\n+\ttest_set_prereq SVNRDUMP\n+fi\n+\n+deinit_git () {\n+\trm -fr .git\n+}\n+\n+reinit_git () {\n+\tdeinit_git &&\n+\tgit init\n+}\n+\n+properties () {\n+\twhile test \"$#\" -ne 0\n+\tdo\n+\t\tproperty=\"$1\" &&\n+\t\tvalue=\"$2\" &&\n+\t\tprintf \"%s\\n\" \"K ${#property}\" &&\n+\t\tprintf \"%s\\n\" \"$property\" &&\n+\t\tprintf \"%s\\n\" \"V ${#value}\" &&\n+\t\tprintf \"%s\\n\" \"$value\" &&\n+\t\tshift 2 ||\n+\t\treturn 1\n+\tdone\n+}\n+\n+text_no_props () {\n+\ttext=\"$1\n+\" &&\n+\tprintf \"%s\\n\" \"Prop-content-length: 10\" &&\n+\tprintf \"%s\\n\" \"Text-content-length: ${#text}\" &&\n+\tprintf \"%s\\n\" \"Content-length: $((${#text} + 10))\" &&\n+\tprintf \"%s\\n\" \"\" \"PROPS-END\" &&\n+\tprintf \"%s\\n\" \"$text\"\n+}\n+\n+dump_to_svnrepo_uuid () {\n+\tdump=\"$1\" &&\n+\tpath=\"$2\" &&\n+\tuuid=\"$3\" &&\n+\tsvnadmin create \"$path\" &&\n+\tsvnadmin load \"$path\" < \"$dump\" &&\n+\teval \"svnadmin setuuid \\\"$path\\\" $uuid\"\n+}\n+\n+dump_to_svnrepo () {\n+\tdump_to_svnrepo_uuid \"$1\" \"$2\" \"\"\n+}\n+\n+svnurl () {\n+\tprintf \"svn-alpha::file://%s/%s\" \"$(pwd)\" \"$1\"\n+}\n+\n+test_expect_success 'svnadmin is present' '\n+\tcommand -v svnadmin &&\n+\ttest_set_prereq SVNADMIN\n+'\n+\n+test_expect_success SVNADMIN 'create empty svnrepo' '\n+\techo \"SVN-fs-dump-format-version: 2\" > empty.dump &&\n+\tdump_to_svnrepo empty.dump empty.svn &&\n+\ttest_set_prereq EMPTY_SVN\n+'\n+\n+test_expect_success SVNADMIN 'create tiny svnrepo' '\n+\t{\n+\t\tproperties \\\n+\t\t\tsvn:author author@example.com \\\n+\t\t\tsvn:date \"1999-02-01T00:01:002.000000Z\" \\\n+\t\t\tsvn:log \"add directory with some files in it\" &&\n+\t\techo PROPS-END\n+\t} >props &&\n+\t{\n+\t\tcat <<-EOF &&\n+\t\tSVN-fs-dump-format-version: 3\n+\n+\t\tRevision-number: 1\n+\t\tEOF\n+\t\techo Prop-content-length: $(wc -c <props) &&\n+\t\techo Content-length: $(wc -c <props) &&\n+\t\techo &&\n+\t\tcat props &&\n+\t\tcat <<-\\EOF &&\n+\n+\t\tNode-path: directory\n+\t\tNode-kind: dir\n+\t\tNode-action: add\n+\t\tProp-content-length: 10\n+\t\tContent-length: 10\n+\n+\t\tPROPS-END\n+\t\tNode-path: directory/somefile\n+\t\tNode-kind: file\n+\t\tNode-action: add\n+\t\tEOF\n+\t\ttext_no_props hi\n+\t} >tiny.dump &&\n+\tdump_to_svnrepo tiny.dump tiny.svn &&\n+\ttest_set_prereq TINY_SVN\n+'\n+\n+test_expect_success SVNADMIN 'create small svndump' '\n+\t{\n+\t\tproperties \\\n+\t\t\tsvn:author author@example.com \\\n+\t\t\tsvn:date \"1999-02-01T00:01:002.000000Z\" \\\n+\t\t\tsvn:log \"add directory with some files in it\" &&\n+\t\techo PROPS-END\n+\t} >props &&\n+\tcat >small.dump.r0 <<-EOF &&\n+\tSVN-fs-dump-format-version: 3\n+\tEOF\n+\tfor x in `seq 1 1 10`; do\n+\t\t{\n+\t\t\techo &&\n+\t\t\techo \"Revision-number: $x\" &&\n+\t\t\techo Prop-content-length: $(wc -c <props) &&\n+\t\t\techo Content-length: $(wc -c <props) &&\n+\t\t\techo &&\n+\t\t\tcat props &&\n+\t\t\tif test \"$x\" -eq \"1\"; then\n+\t\t\t\tcat <<-\\EOF\n+\n+\t\t\t\tNode-path: directory\n+\t\t\t\tNode-kind: dir\n+\t\t\t\tNode-action: add\n+\t\t\t\tProp-content-length: 10\n+\t\t\t\tContent-length: 10\n+\n+\t\t\t\tPROPS-END\n+\n+\t\t\t\tEOF\n+\t\t\tfi\n+\t\t\techo \"Node-path: directory/somefile$x\" &&\n+\t\t\techo \"Node-kind: file\" &&\n+\t\t\techo \"Node-action: add\" &&\n+\t\t\ttext_no_props hi\n+\t\t} >small.dump.r$x\n+\tdone &&\n+\ttest_set_prereq SMALL_SVNDUMP\n+'\n+\n+test_expect_success SMALL_SVNDUMP 'create small svnrepo' '\n+\tuuid=\"19fe5d53-e0aa-44a8-8179-255e62a5445c\" &&\n+\tcat small.dump.r0 >small.dump &&\n+\tfor x in `seq 1 1 10`; do\n+\t\tcat small.dump.r$x >>small.dump &&\n+\t\tdump_to_svnrepo_uuid small.dump small.svn.r0-$x \"$uuid\"\n+\tdone &&\n+\tdump_to_svnrepo_uuid small.dump small.svn \"$uuid\" &&\n+\ttest_set_prereq SMALL_SVN\n+'\n+\n+test_expect_failure EMPTY_SVN 'fetch empty' '\n+\treinit_git &&\n+\turl=$(svnurl empty.svn) &&\n+\tgit remote add svn \"$url\" &&\n+\tgit fetch svn\n+'\n+\n+test_expect_failure TINY_SVN 'clone tiny' '\n+\tdeinit_git &&\n+\turl=$(svnurl tiny.svn) &&\n+\tgit clone \"$url\" tiny1.git\n+'\n+\n+test_expect_success TINY_SVN 'clone --mirror tiny' '\n+\tdeinit_git &&\n+\turl=$(svnurl tiny.svn) &&\n+\tgit clone --mirror \"$url\" tiny2.git\n+'\n+\n+test_expect_success TINY_SVN 'clone --bare tiny' '\n+\tdeinit_git &&\n+\turl=$(svnurl tiny.svn) &&\n+\tgit clone --mirror \"$url\" tiny3.git\n+'\n+\n+test_expect_success TINY_SVN 'clone -b master tiny' '\n+\tdeinit_git &&\n+\turl=$(svnurl tiny.svn) &&\n+\tgit clone -b master \"$url\" tiny4.git\n+'\n+\n+test_expect_success SMALL_SVN 'clone -b master small' '\n+\tdeinit_git &&\n+\turl=$(svnurl small.svn) &&\n+\tgit clone -b master \"$url\" small.git\n+'\n+\n+test_expect_success TINY_SVN,SVNRDUMP 'no crash on clone url/path' '\n+\tdeinit_git &&\n+\turl=$(svnurl small.svn)/directory &&\n+\tgit clone -b master \"$url\" small_dir.git\n+'\n+\n+test_expect_success TINY_SVN,SVNRDUMP 'no crash on clone url/path/file' '\n+\tdeinit_git &&\n+\turl=$(svnurl small.svn)/directory/somefile3 &&\n+\tgit clone -b master \"$url\" small_dir_file.git\n+'\n+\n+test_expect_success SMALL_SVN 'fetch each rev of SMALL separately' '\n+\treinit_git &&\n+\turl=$(svnurl small.svn) &&\n+\n+\tfor x in `seq 1 1 10`; do\n+\t\tgit remote add svn_$x \"$url.r0-$x\"\n+\tdone &&\n+\tgit remote update &&\n+\n+\tgit remote add svn \"$url\" &&\n+\tgit fetch svn &&\n+\n+\tgit rev-parse -s remotes/svn_7/master~5 >ref7_2 &&\n+\tgit rev-parse -s remotes/svn/master~8 >ref_2 &&\n+\ttest_cmp ref7_2 ref_2\n+'\n+\n+test_expect_success TINY_SVN 'fetch TINY does not write to refs/heads/master' '\n+\treinit_git &&\n+\turl=$(svnurl tiny.svn) &&\n+\tgit remote add svn \"$url\" &&\n+\tgit fetch svn &&\n+\tgit show-ref --verify refs/remotes/svn/master &&\n+\ttest_must_fail git show-ref --verify refs/heads/master\n+'\n+\n+test_done\n"},{"id":"170829","messageId":"1309884350-13415-2-git-send-email-divanorama@gmail.com","threadId":"27754","inReplyTo":"1309884350-13415-1-git-send-email-divanorama@gmail.com","subject":"[PATCH 1/5] svn-fe: use svnrdump --quiet in remote-svn-alpha","fromName":"Dmitry Ivankov","fromEmail":"divanorama@gmail.com","sentAt":"2011-07-05T16:45:46Z","receivedAt":"2011-07-05T16:45:46Z","isPatch":true,"sender":{"key":"divanorama@gmail.com","avatar":"https://avatars.githubusercontent.com/u/158999?v=4"},"body":"svnrdump by default shows \"Dumped revision #n\" lines on stderr.\nsvn-fe does it too on each imported revision, so pass --quiet to\nsvnrdump. Once process indication is really needed it will be\ncustom formatted in either svn-fe or remote-svn-alpha.\n\nSigned-off-by: Dmitry Ivankov <divanorama@gmail.com>\n---\n contrib/svn-fe/git-remote-svn-alpha |    2 +-\n 1 files changed, 1 insertions(+), 1 deletions(-)\n\ndiff --git a/contrib/svn-fe/git-remote-svn-alpha b/contrib/svn-fe/git-remote-svn-alpha\nindex b2cca9f..61c9b07 100755\n--- a/contrib/svn-fe/git-remote-svn-alpha\n+++ b/contrib/svn-fe/git-remote-svn-alpha\n@@ -15,7 +15,7 @@ usage () {\n do_import () {\n \trevs=$1 url=$2\n \t(svnrdump dump --non-interactive --username=Guest --password= \\\n-\t\t-r\"$revs\" \"$url\" | svn-fe) 3<&0 || die \"FAILURE\"\n+\t\t-r\"$revs\" \"$url\" --quiet | svn-fe) 3<&0 || die \"FAILURE\"\n \texec 1>&-\n }\n \n-- \n1.7.3.4\n"},{"id":"170828","messageId":"1309884350-13415-3-git-send-email-divanorama@gmail.com","threadId":"27754","inReplyTo":"1309884350-13415-1-git-send-email-divanorama@gmail.com","subject":"[PATCH 2/5] svn-fe: allow svnadmin instead of svnrdump in svn helper","fromName":"Dmitry Ivankov","fromEmail":"divanorama@gmail.com","sentAt":"2011-07-05T16:45:47Z","receivedAt":"2011-07-05T16:45:47Z","isPatch":true,"sender":{"key":"divanorama@gmail.com","avatar":"https://avatars.githubusercontent.com/u/158999?v=4"},"body":"svnrdump produces the same stream as svnadmin dump. svnrdump is able\nto do it via any svn remote protocol while svnadmin needs access to\nthe repository filesystem and can't produce subdirectory dumps.\nBut svnrdump is a newer tool and may be unavailable on some systems.\n\nTry to use svnadmin dump for file:// repository urls if there is no\nsvnrdump in the PATH. First of all this is to be used in tests, where\nthe repository is indeed local most of the time.\n\nSigned-off-by: Dmitry Ivankov <divanorama@gmail.com>\n---\n contrib/svn-fe/git-remote-svn-alpha |   26 ++++++++++++++++++++++++--\n 1 files changed, 24 insertions(+), 2 deletions(-)\n\ndiff --git a/contrib/svn-fe/git-remote-svn-alpha b/contrib/svn-fe/git-remote-svn-alpha\nindex 61c9b07..84d841e 100755\n--- a/contrib/svn-fe/git-remote-svn-alpha\n+++ b/contrib/svn-fe/git-remote-svn-alpha\n@@ -12,10 +12,32 @@ usage () {\n \texit 129\n }\n \n+try_svnrdump () {\n+\tcommand -v svnrdump >/dev/null &&\n+\techo \"svnrdump dump --non-interactive --username=Guest --password= \\\n+\t\t--quiet --incremental\" ||\n+\ttrue\n+}\n+\n+svnadmin_wrap () {\n+\tpath=${1##file://} &&\n+\ttest \"z$path\" != \"z$1\" &&\n+\tsvnadmin dump --incremental --deltas --quiet \"$path\" \"$2\"\n+}\n+\n+try_svnadmin () {\n+\tcommand -v svnadmin >/dev/null &&\n+\techo svnadmin_wrap ||\n+\ttrue\n+}\n+\n+SVNDUMP=\"\"\n+SVNDUMP=${SVNDUMP:-`try_svnrdump`}\n+SVNDUMP=${SVNDUMP:-`try_svnadmin`}\n+\n do_import () {\n \trevs=$1 url=$2\n-\t(svnrdump dump --non-interactive --username=Guest --password= \\\n-\t\t-r\"$revs\" \"$url\" --quiet | svn-fe) 3<&0 || die \"FAILURE\"\n+\t(eval \"$SVNDUMP \\\"$url\\\" -r\\\"$revs\\\"\" |\tsvn-fe) 3<&0 || die \"FAILURE\"\n \texec 1>&-\n }\n \n-- \n1.7.3.4\n"},{"id":"170832","messageId":"1309884350-13415-4-git-send-email-divanorama@gmail.com","threadId":"27754","inReplyTo":"1309884350-13415-1-git-send-email-divanorama@gmail.com","subject":"[PATCH 3/5] svn-fe: add a test for remote-svn-alpha","fromName":"Dmitry Ivankov","fromEmail":"divanorama@gmail.com","sentAt":"2011-07-05T16:45:48Z","receivedAt":"2011-07-05T16:45:48Z","isPatch":true,"sender":{"key":"divanorama@gmail.com","avatar":"https://avatars.githubusercontent.com/u/158999?v=4"},"body":"The test creates a few svn repositories from fixed dumps using svnadmin.\nCurrently it checks for crashes on first time import mostly.\n\nSigned-off-by: Dmitry Ivankov <divanorama@gmail.com>\n---\n contrib/svn-fe/t/.gitignore                |    3 +\n contrib/svn-fe/t/t9010-remote-svn-alpha.sh |  229 ++++++++++++++++++++++++++++\n 2 files changed, 232 insertions(+), 0 deletions(-)\n create mode 100644 contrib/svn-fe/t/.gitignore\n create mode 100755 contrib/svn-fe/t/t9010-remote-svn-alpha.sh\n\ndiff --git a/contrib/svn-fe/t/.gitignore b/contrib/svn-fe/t/.gitignore\nnew file mode 100644\nindex 0000000..4e731dc\n--- /dev/null\n+++ b/contrib/svn-fe/t/.gitignore\n@@ -0,0 +1,3 @@\n+/trash directory*\n+/test-results\n+/.prove\ndiff --git a/contrib/svn-fe/t/t9010-remote-svn-alpha.sh b/contrib/svn-fe/t/t9010-remote-svn-alpha.sh\nnew file mode 100755\nindex 0000000..30dc726\n--- /dev/null\n+++ b/contrib/svn-fe/t/t9010-remote-svn-alpha.sh\n@@ -0,0 +1,229 @@\n+#!/bin/sh\n+\n+test_description='check svn-alpha remote helper'\n+\n+PATH=$(pwd)/..:$PATH\n+TEST_DIRECTORY=$(pwd)/../../../t\n+. $TEST_DIRECTORY/test-lib.sh\n+\n+if command -v svnrdump >/dev/null; then\n+\ttest_set_prereq SVNRDUMP\n+fi\n+\n+deinit_git () {\n+\trm -fr .git\n+}\n+\n+reinit_git () {\n+\tdeinit_git &&\n+\tgit init\n+}\n+\n+properties () {\n+\twhile test \"$#\" -ne 0\n+\tdo\n+\t\tproperty=\"$1\" &&\n+\t\tvalue=\"$2\" &&\n+\t\tprintf \"%s\\n\" \"K ${#property}\" &&\n+\t\tprintf \"%s\\n\" \"$property\" &&\n+\t\tprintf \"%s\\n\" \"V ${#value}\" &&\n+\t\tprintf \"%s\\n\" \"$value\" &&\n+\t\tshift 2 ||\n+\t\treturn 1\n+\tdone\n+}\n+\n+text_no_props () {\n+\ttext=\"$1\n+\" &&\n+\tprintf \"%s\\n\" \"Prop-content-length: 10\" &&\n+\tprintf \"%s\\n\" \"Text-content-length: ${#text}\" &&\n+\tprintf \"%s\\n\" \"Content-length: $((${#text} + 10))\" &&\n+\tprintf \"%s\\n\" \"\" \"PROPS-END\" &&\n+\tprintf \"%s\\n\" \"$text\"\n+}\n+\n+dump_to_svnrepo_uuid () {\n+\tdump=\"$1\" &&\n+\tpath=\"$2\" &&\n+\tuuid=\"$3\" &&\n+\tsvnadmin create \"$path\" &&\n+\tsvnadmin load \"$path\" < \"$dump\" &&\n+\teval \"svnadmin setuuid \\\"$path\\\" $uuid\"\n+}\n+\n+dump_to_svnrepo () {\n+\tdump_to_svnrepo_uuid \"$1\" \"$2\" \"\"\n+}\n+\n+svnurl () {\n+\tprintf \"svn-alpha::file://%s/%s\" \"$(pwd)\" \"$1\"\n+}\n+\n+test_expect_success 'svnadmin is present' '\n+\tcommand -v svnadmin &&\n+\ttest_set_prereq SVNADMIN\n+'\n+\n+test_expect_success SVNADMIN 'create empty svnrepo' '\n+\techo \"SVN-fs-dump-format-version: 2\" > empty.dump &&\n+\tdump_to_svnrepo empty.dump empty.svn &&\n+\ttest_set_prereq EMPTY_SVN\n+'\n+\n+test_expect_success SVNADMIN 'create tiny svnrepo' '\n+\t{\n+\t\tproperties \\\n+\t\t\tsvn:author author@example.com \\\n+\t\t\tsvn:date \"1999-02-01T00:01:002.000000Z\" \\\n+\t\t\tsvn:log \"add directory with some files in it\" &&\n+\t\techo PROPS-END\n+\t} >props &&\n+\t{\n+\t\tcat <<-EOF &&\n+\t\tSVN-fs-dump-format-version: 3\n+\n+\t\tRevision-number: 1\n+\t\tEOF\n+\t\techo Prop-content-length: $(wc -c <props) &&\n+\t\techo Content-length: $(wc -c <props) &&\n+\t\techo &&\n+\t\tcat props &&\n+\t\tcat <<-\\EOF &&\n+\n+\t\tNode-path: directory\n+\t\tNode-kind: dir\n+\t\tNode-action: add\n+\t\tProp-content-length: 10\n+\t\tContent-length: 10\n+\n+\t\tPROPS-END\n+\t\tNode-path: directory/somefile\n+\t\tNode-kind: file\n+\t\tNode-action: add\n+\t\tEOF\n+\t\ttext_no_props hi\n+\t} >tiny.dump &&\n+\tdump_to_svnrepo tiny.dump tiny.svn &&\n+\ttest_set_prereq TINY_SVN\n+'\n+\n+test_expect_success SVNADMIN 'create small svndump' '\n+\t{\n+\t\tproperties \\\n+\t\t\tsvn:author author@example.com \\\n+\t\t\tsvn:date \"1999-02-01T00:01:002.000000Z\" \\\n+\t\t\tsvn:log \"add directory with some files in it\" &&\n+\t\techo PROPS-END\n+\t} >props &&\n+\tcat >small.dump.r0 <<-EOF &&\n+\tSVN-fs-dump-format-version: 3\n+\tEOF\n+\tfor x in `seq 1 1 10`; do\n+\t\t{\n+\t\t\techo &&\n+\t\t\techo \"Revision-number: $x\" &&\n+\t\t\techo Prop-content-length: $(wc -c <props) &&\n+\t\t\techo Content-length: $(wc -c <props) &&\n+\t\t\techo &&\n+\t\t\tcat props &&\n+\t\t\tif test \"$x\" -eq \"1\"; then\n+\t\t\t\tcat <<-\\EOF\n+\n+\t\t\t\tNode-path: directory\n+\t\t\t\tNode-kind: dir\n+\t\t\t\tNode-action: add\n+\t\t\t\tProp-content-length: 10\n+\t\t\t\tContent-length: 10\n+\n+\t\t\t\tPROPS-END\n+\n+\t\t\t\tEOF\n+\t\t\tfi\n+\t\t\techo \"Node-path: directory/somefile$x\" &&\n+\t\t\techo \"Node-kind: file\" &&\n+\t\t\techo \"Node-action: add\" &&\n+\t\t\ttext_no_props hi\n+\t\t} >small.dump.r$x\n+\tdone &&\n+\ttest_set_prereq SMALL_SVNDUMP\n+'\n+\n+test_expect_success SMALL_SVNDUMP 'create small svnrepo' '\n+\tuuid=\"19fe5d53-e0aa-44a8-8179-255e62a5445c\" &&\n+\tcat small.dump.r0 >small.dump &&\n+\tfor x in `seq 1 1 10`; do\n+\t\tcat small.dump.r$x >>small.dump &&\n+\t\tdump_to_svnrepo_uuid small.dump small.svn.r0-$x \"$uuid\"\n+\tdone &&\n+\tdump_to_svnrepo_uuid small.dump small.svn \"$uuid\" &&\n+\ttest_set_prereq SMALL_SVN\n+'\n+\n+test_expect_failure EMPTY_SVN 'fetch empty' '\n+\treinit_git &&\n+\turl=$(svnurl empty.svn) &&\n+\tgit remote add svn \"$url\" &&\n+\tgit fetch svn\n+'\n+\n+test_expect_failure TINY_SVN 'clone tiny' '\n+\tdeinit_git &&\n+\turl=$(svnurl tiny.svn) &&\n+\tgit clone \"$url\" tiny1.git\n+'\n+\n+test_expect_success TINY_SVN 'clone --mirror tiny' '\n+\tdeinit_git &&\n+\turl=$(svnurl tiny.svn) &&\n+\tgit clone --mirror \"$url\" tiny2.git\n+'\n+\n+test_expect_success TINY_SVN 'clone --bare tiny' '\n+\tdeinit_git &&\n+\turl=$(svnurl tiny.svn) &&\n+\tgit clone --mirror \"$url\" tiny3.git\n+'\n+\n+test_expect_success TINY_SVN 'clone -b master tiny' '\n+\tdeinit_git &&\n+\turl=$(svnurl tiny.svn) &&\n+\tgit clone -b master \"$url\" tiny4.git\n+'\n+\n+test_expect_success SMALL_SVN 'clone -b master small' '\n+\tdeinit_git &&\n+\turl=$(svnurl small.svn) &&\n+\tgit clone -b master \"$url\" small.git\n+'\n+\n+test_expect_success TINY_SVN,SVNRDUMP 'no crash on clone url/path' '\n+\tdeinit_git &&\n+\turl=$(svnurl small.svn)/directory &&\n+\tgit clone -b master \"$url\" small_dir.git\n+'\n+\n+test_expect_success TINY_SVN,SVNRDUMP 'no crash on clone url/path/file' '\n+\tdeinit_git &&\n+\turl=$(svnurl small.svn)/directory/somefile3 &&\n+\tgit clone -b master \"$url\" small_dir_file.git\n+'\n+\n+test_expect_success SMALL_SVN 'fetch each rev of SMALL separately' '\n+\treinit_git &&\n+\turl=$(svnurl small.svn) &&\n+\n+\tfor x in `seq 1 1 10`; do\n+\t\tgit remote add svn_$x \"$url.r0-$x\"\n+\tdone &&\n+\tgit remote update &&\n+\n+\tgit remote add svn \"$url\" &&\n+\tgit fetch svn &&\n+\n+\tgit rev-parse -s remotes/svn_7/master~5 >ref7_2 &&\n+\tgit rev-parse -s remotes/svn/master~8 >ref_2 &&\n+\ttest_cmp ref7_2 ref_2\n+'\n+\n+test_done\n-- \n1.7.3.4\n"},{"id":"170830","messageId":"1309884350-13415-5-git-send-email-divanorama@gmail.com","threadId":"27754","inReplyTo":"1309884350-13415-1-git-send-email-divanorama@gmail.com","subject":"[PATCH 4/5] svn-fe: use svn-fe --no-progress in remote-svn-alpha","fromName":"Dmitry Ivankov","fromEmail":"divanorama@gmail.com","sentAt":"2011-07-05T16:45:49Z","receivedAt":"2011-07-05T16:45:49Z","isPatch":true,"sender":{"key":"divanorama@gmail.com","avatar":"https://avatars.githubusercontent.com/u/158999?v=4"},"body":"svn-fe by default  produces a progress line for each imported revision.\nFor large repos it stresses the terminal and a user, possibly scrolls\naway error messages.\n\nJust disable progress lines for now.\n\nSigned-off-by: Dmitry Ivankov <divanorama@gmail.com>\n---\n contrib/svn-fe/git-remote-svn-alpha |    2 +-\n 1 files changed, 1 insertions(+), 1 deletions(-)\n\ndiff --git a/contrib/svn-fe/git-remote-svn-alpha b/contrib/svn-fe/git-remote-svn-alpha\nindex 84d841e..d75bc2a 100755\n--- a/contrib/svn-fe/git-remote-svn-alpha\n+++ b/contrib/svn-fe/git-remote-svn-alpha\n@@ -37,7 +37,7 @@ SVNDUMP=${SVNDUMP:-`try_svnadmin`}\n \n do_import () {\n \trevs=$1 url=$2\n-\t(eval \"$SVNDUMP \\\"$url\\\" -r\\\"$revs\\\"\" |\tsvn-fe) 3<&0 || die \"FAILURE\"\n+\t(eval \"$SVNDUMP \\\"$url\\\" -r\\\"$revs\\\"\" |\tsvn-fe --no-progress) 3<&0 || die \"FAILURE\"\n \texec 1>&-\n }\n \n-- \n1.7.3.4\n"},{"id":"170831","messageId":"1309884350-13415-6-git-send-email-divanorama@gmail.com","threadId":"27754","inReplyTo":"1309884350-13415-1-git-send-email-divanorama@gmail.com","subject":"[PATCH 5/5] svn-fe: use proper refspec in remote-svn-alpha","fromName":"Dmitry Ivankov","fromEmail":"divanorama@gmail.com","sentAt":"2011-07-05T16:45:50Z","receivedAt":"2011-07-05T16:45:50Z","isPatch":true,"sender":{"key":"divanorama@gmail.com","avatar":"https://avatars.githubusercontent.com/u/158999?v=4"},"body":"Create a per repository name private refs namespace as suggested by\nthe remote helpers documentation. This allows to have several svn\nremotes at the same time. And also this way we don't overwrite the\nlocal branch master.\n\nThe refpec is:\nHEAD:refs/svn-alpha/$reponame/SVNHEAD\nrefs/heads/master:refs/svn-alpha/$reponame/SVNHEAD\n\nSigned-off-by: Dmitry Ivankov <divanorama@gmail.com>\n---\n contrib/svn-fe/git-remote-svn-alpha        |   18 ++++++++++--------\n contrib/svn-fe/t/t9010-remote-svn-alpha.sh |    9 +++++++++\n 2 files changed, 19 insertions(+), 8 deletions(-)\n\ndiff --git a/contrib/svn-fe/git-remote-svn-alpha b/contrib/svn-fe/git-remote-svn-alpha\nindex d75bc2a..d4b90ae 100755\n--- a/contrib/svn-fe/git-remote-svn-alpha\n+++ b/contrib/svn-fe/git-remote-svn-alpha\n@@ -36,8 +36,8 @@ SVNDUMP=${SVNDUMP:-`try_svnrdump`}\n SVNDUMP=${SVNDUMP:-`try_svnadmin`}\n \n do_import () {\n-\trevs=$1 url=$2\n-\t(eval \"$SVNDUMP \\\"$url\\\" -r\\\"$revs\\\"\" |\tsvn-fe --no-progress) 3<&0 || die \"FAILURE\"\n+\trevs=$1 url=$2 dst=$3\n+\t(eval \"$SVNDUMP \\\"$url\\\" -r\\\"$revs\\\"\" |\tsvn-fe --ref=\"$dst\" --no-progress) 3<&0 || die \"FAILURE\"\n \texec 1>&-\n }\n \n@@ -46,29 +46,31 @@ usage 'git remote-svn-alpha <repository> <URL> < commandlist'\n repo=$1\n url=$2\n need_import=\"\"\n+remote_ref=\"refs/heads/master\"\n+private_ref=\"refs/svn-alpha/$repo/SVNHEAD\"\n \n while read -r cmd args\n do\n \tcase $cmd in\n \tcapabilities)\n \t\techo import\n-\t\techo \"refspec HEAD:refs/heads/master\"\n-\t\techo \"refspec refs/heads/master:refs/heads/master\"\n+\t\techo \"refspec HEAD:$private_ref\"\n+\t\techo \"refspec $remote_ref:$private_ref\"\n \t\techo\n \t\t;;\n \tlist)\n-\t\techo '? HEAD'\n-\t\techo '? refs/heads/master'\n+\t\techo \"? HEAD\"\n+\t\techo \"? $remote_ref\"\n \t\techo\n \t\t;;\n \timport)\n-\t\ttest \"$args\" = \"HEAD\" || test \"$args\" = \"refs/heads/master\" ||\n+\t\ttest \"$args\" = \"HEAD\" || test \"$args\" = \"$remote_ref\" ||\n \t\tdie \"remote-svn-alpha: unsupported import ref argument: $args\"\n \t\tneed_import=\"yes\"\n \t\t;;\n \t'')\n \t\ttest \"$need_import\" = \"yes\" || exit 0\n-\t\tdo_import 0:HEAD \"$url\"\n+\t\tdo_import 0:HEAD \"$url\" \"$private_ref\"\n \t\tneed_import=\"\"\n \t\t;;\n \t*)\ndiff --git a/contrib/svn-fe/t/t9010-remote-svn-alpha.sh b/contrib/svn-fe/t/t9010-remote-svn-alpha.sh\nindex 30dc726..786cc1f 100755\n--- a/contrib/svn-fe/t/t9010-remote-svn-alpha.sh\n+++ b/contrib/svn-fe/t/t9010-remote-svn-alpha.sh\n@@ -226,4 +226,13 @@ test_expect_success SMALL_SVN 'fetch each rev of SMALL separately' '\n \ttest_cmp ref7_2 ref_2\n '\n \n+test_expect_success TINY_SVN 'fetch TINY does not write to refs/heads/master' '\n+\treinit_git &&\n+\turl=$(svnurl tiny.svn) &&\n+\tgit remote add svn \"$url\" &&\n+\tgit fetch svn &&\n+\tgit show-ref --verify refs/remotes/svn/master &&\n+\ttest_must_fail git show-ref --verify refs/heads/master\n+'\n+\n test_done\n-- \n1.7.3.4\n"},{"id":"170890","messageId":"CALkWK0mrpy2bho9ExHaCSenzZLoEKSo-T0K_FVDz9VtaQcY-2g@mail.gmail.com","threadId":"27754","inReplyTo":"1309884350-13415-5-git-send-email-divanorama@gmail.com","subject":"Re: [PATCH 4/5] svn-fe: use svn-fe --no-progress in remote-svn-alpha","fromName":"Ramkumar Ramachandra","fromEmail":"artagnon@gmail.com","sentAt":"2011-07-06T09:56:40Z","receivedAt":"2011-07-06T09:56:40Z","isPatch":true,"sender":{"key":"r@artagnon.com","avatar":"https://avatars.githubusercontent.com/u/37226?v=4"},"body":"Hi again,\n\nDmitry Ivankov writes:\n> svn-fe by default  produces a progress line for each imported revision.\n> For large repos it stresses the terminal and a user, possibly scrolls\n> away error messages.\n>\n> Just disable progress lines for now.\n>\n> Signed-off-by: Dmitry Ivankov <divanorama@gmail.com>\n> ---\n>  contrib/svn-fe/git-remote-svn-alpha |    2 +-\n>  1 files changed, 1 insertions(+), 1 deletions(-)\n\nPerhaps squash this into the patch that introduces --[no]-progress in svn-fe?\n\n-- Ram\n"},{"id":"170894","messageId":"CALkWK0=Lqg4vMOdD8zah5RM3GOkBorJ80kBfs4BHEjZrG+rNVg@mail.gmail.com","threadId":"27754","inReplyTo":"1309884350-13415-3-git-send-email-divanorama@gmail.com","subject":"Re: [PATCH 2/5] svn-fe: allow svnadmin instead of svnrdump in svn helper","fromName":"Ramkumar Ramachandra","fromEmail":"artagnon@gmail.com","sentAt":"2011-07-06T10:12:48Z","receivedAt":"2011-07-06T10:12:48Z","isPatch":true,"sender":{"key":"r@artagnon.com","avatar":"https://avatars.githubusercontent.com/u/37226?v=4"},"body":"Hi,\n\nDmitry Ivankov writes:\n> svnrdump produces the same stream as svnadmin dump. svnrdump is able\n> to do it via any svn remote protocol while svnadmin needs access to\n> the repository filesystem and can't produce subdirectory dumps.\n> But svnrdump is a newer tool and may be unavailable on some systems.\n>\n> Try to use svnadmin dump for file:// repository urls if there is no\n> svnrdump in the PATH. First of all this is to be used in tests, where\n> the repository is indeed local most of the time.\n\nsvnrdump's output is not identical to svnadmin's output.  You'd\nperhaps want to document the differences, and the impact they might\nhave?\n\n> diff --git a/contrib/svn-fe/git-remote-svn-alpha b/contrib/svn-fe/git-remote-svn-alpha\n> index 61c9b07..84d841e 100755\n> --- a/contrib/svn-fe/git-remote-svn-alpha\n> +++ b/contrib/svn-fe/git-remote-svn-alpha\n> @@ -12,10 +12,32 @@ usage () {\n>        exit 129\n>  }\n>\n> +try_svnrdump () {\n> +       command -v svnrdump >/dev/null &&\n> +       echo \"svnrdump dump --non-interactive --username=Guest --password= \\\n> +               --quiet --incremental\" ||\n> +       true\n> +}\n\nI saw this '--username', '--password' in other patches too.  I'm\nprobably missing context, but I'm curious to know why this is required\nand what you're planning to do to fix it in the future.\n\nThanks.\n\n-- Ram\n"},{"id":"170903","messageId":"CA+gfSn-mX-Uny1dy=1Xwo42r_pTYosWJibNGafV=sLrsmc-e+A@mail.gmail.com","threadId":"27754","inReplyTo":"CALkWK0=Lqg4vMOdD8zah5RM3GOkBorJ80kBfs4BHEjZrG+rNVg@mail.gmail.com","subject":"Re: [PATCH 2/5] svn-fe: allow svnadmin instead of svnrdump in svn helper","fromName":"Dmitry Ivankov","fromEmail":"divanorama@gmail.com","sentAt":"2011-07-06T11:02:10Z","receivedAt":"2011-07-06T11:02:10Z","isPatch":true,"sender":{"key":"divanorama@gmail.com","avatar":"https://avatars.githubusercontent.com/u/158999?v=4"},"body":"On Wed, Jul 6, 2011 at 4:12 PM, Ramkumar Ramachandra <artagnon@gmail.com> wrote:\n> Hi,\n>\n> Dmitry Ivankov writes:\n>> svnrdump produces the same stream as svnadmin dump. svnrdump is able\n>> to do it via any svn remote protocol while svnadmin needs access to\n>> the repository filesystem and can't produce subdirectory dumps.\n>> But svnrdump is a newer tool and may be unavailable on some systems.\n>>\n>> Try to use svnadmin dump for file:// repository urls if there is no\n>> svnrdump in the PATH. First of all this is to be used in tests, where\n>> the repository is indeed local most of the time.\n>\n> svnrdump's output is not identical to svnadmin's output.  You'd\n> perhaps want to document the differences, and the impact they might\n> have?\nHm, I don't see much differences.\nData format is the same SVN-fs-dump-format-version: 3. In my case I\nobserve following differences:\n- svnadmin writes sha1 checksums along with md5 ones\n- hashtable dumps can have different elements dump order\n- svnrdump sets Prop-delta: true for empty props\n- text deltas can be encoded differently (does it affect svn:ann?)\nMy svnadmin is version 1.6.16 (r1073529)\nsvnrdump is from r1135490\n\nAnything else I'm missing in a simple dump of a repository root?\n\n>\n>> diff --git a/contrib/svn-fe/git-remote-svn-alpha b/contrib/svn-fe/git-remote-svn-alpha\n>> index 61c9b07..84d841e 100755\n>> --- a/contrib/svn-fe/git-remote-svn-alpha\n>> +++ b/contrib/svn-fe/git-remote-svn-alpha\n>> @@ -12,10 +12,32 @@ usage () {\n>>        exit 129\n>>  }\n>>\n>> +try_svnrdump () {\n>> +       command -v svnrdump >/dev/null &&\n>> +       echo \"svnrdump dump --non-interactive --username=Guest --password= \\\n>> +               --quiet --incremental\" ||\n>> +       true\n>> +}\n>\n> I saw this '--username', '--password' in other patches too.  I'm\n> probably missing context, but I'm curious to know why this is required\n> and what you're planning to do to fix it in the future.\nFor repos with no read restrictions this isn't necessary, like those\nin the test script supplied.\nIt's a placeholder for quick local patch if anyone wants to test a\nrepo with permissions.\nIn future it should be allowed to configure credentials in\ncorresponding remote section of git.config and\npass all these options to helpers. Using ~/.subversion/ configuration\nis a valid option too.\n\n>\n> Thanks.\n>\n> -- Ram\n>\n"},{"id":"170904","messageId":"CALkWK0=UKvvVVeRKcMq1L5ywV0WcAn4BNvEeQuTTZtZAmubanA@mail.gmail.com","threadId":"27754","inReplyTo":"CA+gfSn-mX-Uny1dy=1Xwo42r_pTYosWJibNGafV=sLrsmc-e+A@mail.gmail.com","subject":"Re: [PATCH 2/5] svn-fe: allow svnadmin instead of svnrdump in svn helper","fromName":"Ramkumar Ramachandra","fromEmail":"artagnon@gmail.com","sentAt":"2011-07-06T11:11:56Z","receivedAt":"2011-07-06T11:11:56Z","isPatch":true,"sender":{"key":"r@artagnon.com","avatar":"https://avatars.githubusercontent.com/u/37226?v=4"},"body":"Hi again,\n\nDmitry Ivankov writes:\n> On Wed, Jul 6, 2011 at 4:12 PM, Ramkumar Ramachandra <artagnon@gmail.com> wrote:\n>> svnrdump's output is not identical to svnadmin's output.  You'd\n>> perhaps want to document the differences, and the impact they might\n>> have?\n> Hm, I don't see much differences.\n> Data format is the same SVN-fs-dump-format-version: 3. In my case I\n> observe following differences:\n> - svnadmin writes sha1 checksums along with md5 ones\n> - hashtable dumps can have different elements dump order\n> - svnrdump sets Prop-delta: true for empty props\n> - text deltas can be encoded differently (does it affect svn:ann?)\n> My svnadmin is version 1.6.16 (r1073529)\n> svnrdump is from r1135490\n>\n> Anything else I'm missing in a simple dump of a repository root?\n\nYes, those are the differences.  Both of us know this, but an new\nreader might naively assume that they are exactly the same -- that's\nwhy I suggested that you document the fact somewhere.  Once you've\ndocumented it, it's clear that these subtle differences have no impact\non how svn-fe deals with the streams.\n\n>> I saw this '--username', '--password' in other patches too.  I'm\n>> probably missing context, but I'm curious to know why this is required\n>> and what you're planning to do to fix it in the future.\n> For repos with no read restrictions this isn't necessary, like those\n> in the test script supplied.\n> It's a placeholder for quick local patch if anyone wants to test a\n> repo with permissions.\n> In future it should be allowed to configure credentials in\n> corresponding remote section of git.config and\n> pass all these options to helpers. Using ~/.subversion/ configuration\n> is a valid option too.\n\nI see.  However, I think you should just have one dedicated test for\ntesting credentials -- once that passes, you don't need to complicate\nthe other tests with information about credentials.  Try to test only\none aspect in each test; the report summarizing failed tests will make\nmore sense then.\n\nThanks.\n\n-- Ram\n"},{"id":"170908","messageId":"20110706112817.GN15682@elie","threadId":"27754","inReplyTo":"CALkWK0=UKvvVVeRKcMq1L5ywV0WcAn4BNvEeQuTTZtZAmubanA@mail.gmail.com","subject":"Re: [PATCH 2/5] svn-fe: allow svnadmin instead of svnrdump in svn helper","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2011-07-06T11:28:17Z","receivedAt":"2011-07-06T11:28:17Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Ramkumar Ramachandra wrote:\n> Dmitry Ivankov writes:\n\n>> Hm, I don't see much differences.\n>> Data format is the same SVN-fs-dump-format-version: 3. In my case I\n>> observe following differences:\n>> - svnadmin writes sha1 checksums along with md5 ones\n>> - hashtable dumps can have different elements dump order\n>> - svnrdump sets Prop-delta: true for empty props\n>> - text deltas can be encoded differently (does it affect svn:ann?)\n>> My svnadmin is version 1.6.16 (r1073529)\n>> svnrdump is from r1135490\n>>\n>> Anything else I'm missing in a simple dump of a repository root?\n>\n> Yes, those are the differences.\n\nAre the differences documented somewhere (e.g., the svnbook)?\n\n>>> I saw this '--username', '--password' in other patches too.  I'm\n>>> probably missing context, but I'm curious to know why this is required\n>>> and what you're planning to do to fix it in the future.\n[...]\n>> It's a placeholder for quick local patch if anyone wants to test a\n>> repo with permissions.\n\nI suspect it snuck in from tests with the cvs2svn repository. :)\n\nDo you know another small repository that's entertaining to test with?\n\n>> In future it should be allowed to configure credentials in\n>> corresponding remote section of git.config\n\nYep, something along those lines sounds sensible.  In the short term,\nI think there's been some talk of a configuration option to override\nthe svnrdump command; that could be used to pass credentials.\n\nInspired by the old HTTP convention, I tried\n\n\tsvn log http://Guest:@cvs2svn.tigris.org/svn/cvs2svn\n\nand\n\n\tsvn log http://Guest:pass@cvs2svn.tigris.org/svn/cvs2svn\n\nbut alas, neither works.\n"},{"id":"170916","messageId":"20110706123044.GR15682@elie","threadId":"27754","inReplyTo":"CALkWK0mrpy2bho9ExHaCSenzZLoEKSo-T0K_FVDz9VtaQcY-2g@mail.gmail.com","subject":"Re: [PATCH 4/5] svn-fe: use svn-fe --no-progress in remote-svn-alpha","fromName":"Jonathan Nieder","fromEmail":"jrnieder@gmail.com","sentAt":"2011-07-06T12:30:44Z","receivedAt":"2011-07-06T12:30:44Z","isPatch":true,"sender":{"key":"jrnieder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/281595?v=4"},"body":"Ramkumar Ramachandra wrote:\n> Dmitry Ivankov writes:\n\n>> Just disable progress lines for now.\n>>\n>> Signed-off-by: Dmitry Ivankov <divanorama@gmail.com>\n>> ---\n>>  contrib/svn-fe/git-remote-svn-alpha |    2 +-\n>>  1 files changed, 1 insertions(+), 1 deletions(-)\n>\n> Perhaps squash this into the patch that introduces --[no]-progress in svn-fe?\n\nSince git-remote-svn-alpha is a slushy codebase and svn-fe is a little\nmore stable, it seems best to keep patches to the two separate for\nnow.  Even so, mentioning remote-svn's needs can still be a useful way\nto make svn-fe changes easier to understand (which is what I think you\nare getting at here); thanks for the hint.\n"}]}