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

[PATCH] t9117: test specifying full url to git svn init -T

From
Adam Dinwoodie <adam@dinwoodie.org>
Date
Mar 16, 2016, 19:09 UTC
Message-ID
<20160316190954.GR29016@dinwoodie.org>

According to the documentation, full URLs can be specified in the `-T` argument to `git svn init`. However, the canonicalization of such arguments squashes together consecutive "/"s, which unsurprisingly breaks http://, svn://, etc URLs. Add a failing test case to provide evidence of that.

On systems where Subversion provides svn_path_canonicalize but not svn_dirent_canonicalize (Subversion 1.6 and earlier?), this test passes, as svn_path_canonicalize doesn't mangle the consecutive "/"s.

Signed-off-by: Adam Dinwoodie <adam@dinwoodie.org>
---

I think the bug here is in using perl/Git/SVN/Utils.pm's `canonicalize_path` on the `-T` argument. If it's available, that function calls Subversion's `svn_dirent_canonicalize`. The Subversion code[0] makes it clear that this function is fine for relative and absolute local paths, and for UNC paths on Windows, but it isn't suitable for use on URLs.

[0]: https://svn.apache.org/repos/asf/subversion/trunk/subversion/include/svn_dirent_uri.h

It occurs to me that the correct "fix" here may simply be to stop claiming support for specifying URLs as arguments to -T, and mandate users use the `git svn init $url -T $dirent` syntax instead, but I figured providing the failing testcase would be a good start to that discussion regardless.

 t/t9117-git-svn-init-clone.sh | 6 ++++++
 1 file changed, 6 insertions(+)
diff --git a/t/t9117-git-svn-init-clone.sh b/t/t9117-git-svn-init-clone.sh
index a66f43c..2ba003d 100755
--- a/t/t9117-git-svn-init-clone.sh
+++ b/t/t9117-git-svn-init-clone.sh
@@ -119,4 +119,10 @@ test_expect_success 'clone with -s/-T/-b/-t and --prefix "" still works' '
        rm -f warning
        '

+test_expect_failure 'init with -T as a full url works' '
+       test ! -d project &&
+       git svn init -T "$svnrepo"/project/trunk project &&
+       rm -rf project
+       '
+
 test_done
--
2.7.0
Next: Eric Wong
Message 1 of 4 in “t9117: test specifying full url to git svn init -T”
  1. t9117: test specifying full url to git svn init -TAdam Dinwoodie, Mar 16, 2016
  2. Eric WongMar 16, 2016
  3. Adam DinwoodieMar 16, 2016
  4. 2/1 git-svn: fix URL canonicalization during init w/ SVN 1.7+Eric Wong, Mar 16, 2016

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.