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

[PATCH] Don't try and percent-escape existing percent escapes in git-svn URIs

From
Kevin Ballard <kevin@sb.org>
Date
Mar 8, 2008, 23:20 UTC
Message-ID
<1205018447-18344-1-git-send-email-kevin@sb.org>

git-svn: project names are percent-escaped ever since f5530b. Unfortunately this breaks the scenario where the user hands git-svn an already-escaped URI. Fix the regexp to skip over what looks like existing percent escapes, and test this scenario.

Signed-off-by: Kevin Ballard <kevin@sb.org>
---
 git-svn.perl                                  |    2 +-
 t/t9120-git-svn-clone-with-percent-escapes.sh |   31 +++++++++++++++++++++++++
 2 files changed, 32 insertions(+), 1 deletions(-)
 create mode 100755 t/t9120-git-svn-clone-with-percent-escapes.sh
diff --git a/git-svn.perl b/git-svn.perl
index 9e2faf9..cec664f 100755
--- a/git-svn.perl
+++ b/git-svn.perl
@@ -3658,7 +3658,7 @@ sub escape_uri_only {
 	my ($uri) = @_;
 	my @tmp;
 	foreach (split m{/}, $uri) {
-		s/([^\w.-])/sprintf("%%%02X",ord($1))/eg;
+		s/([^\w.%-]|%(?![a-fA-F0-9]{2}))/sprintf("%%%02X",ord($1))/eg;
 		push @tmp, $_;
 	}
 	join('/', @tmp);
diff --git a/t/t9120-git-svn-clone-with-percent-escapes.sh b/t/t9120-git-svn-clone-with-percent-escapes.sh
new file mode 100755
index 0000000..9a4eabe
--- /dev/null
+++ b/t/t9120-git-svn-clone-with-percent-escapes.sh
@@ -0,0 +1,31 @@
+#!/bin/sh
+#
+# Copyright (c) 2008 Kevin Ballard
+#
+
+test_description='git-svn clone with percent escapes'
+. ./lib-git-svn.sh
+
+test_expect_success 'setup svnrepo' "
+	mkdir project project/trunk project/branches project/tags &&
+	echo foo > project/trunk/foo &&
+	svn import -m '$test_description' project '$svnrepo/pr ject' &&
+	rm -rf project &&
+	start_httpd
+"
+
+if test "$SVN_HTTPD_PORT" = ""
+then
+	test_expect_failure 'test clone with percent escapes - needs SVN_HTTPD_PORT set' 'false'
+else
+	test_expect_success 'test clone with percent escapes' '
+		git svn clone "$svnrepo/pr%20ject" clone &&
+		cd clone &&
+			git rev-parse refs/remotes/git-svn &&
+		cd ..
+	'
+fi
+
+stop_httpd
+
+test_done
-- 
1.5.4.3.487.g1eab2.dirty
Next: Eric Wong
Message 1 of 4 in “Don't try and percent-escape existing percent escapes in git-svn URIs”
  1. Don't try and percent-escape existing percent escapes in git-svn URIsKevin Ballard, Mar 8, 2008
  2. Eric WongMar 9, 2008
  3. Kevin BallardMar 9, 2008
  4. Eric WongMar 10, 2008

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.