All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eric Wong <normalperson@yhbt.net>
To: Kevin Ballard <kevin@sb.org>
Cc: git@vger.kernel.org
Subject: Re: [PATCH resend 2/2] Don't try and percent-escape existing percent escapes in git-svn URIs
Date: Thu, 20 Mar 2008 23:51:30 -0700	[thread overview]
Message-ID: <20080321065130.GA28144@muzzle> (raw)
In-Reply-To: <1206043729-61810-2-git-send-email-kevin@sb.org>

Kevin Ballard <kevin@sb.org> wrote:
> 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>

Acked-by: Eric Wong <normalperson@yhbt.net>

> ---
>  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 bba22c1..0c2b791 100755
> --- a/git-svn.perl
> +++ b/git-svn.perl
> @@ -3665,7 +3665,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.5.rc0.10.g0fd43

  reply	other threads:[~2008-03-21  6:52 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-03-20 20:08 [PATCH resend 1/2] Make git-svn tests behave better on OS X Kevin Ballard
2008-03-20 20:08 ` [PATCH resend 2/2] Don't try and percent-escape existing percent escapes in git-svn URIs Kevin Ballard
2008-03-21  6:51   ` Eric Wong [this message]
2008-03-21  6:52     ` Junio C Hamano
2008-03-21  6:58 ` [PATCH resend 1/2] Make git-svn tests behave better on OS X Eric Wong
2008-03-21  7:04   ` Junio C Hamano
2008-03-21  7:27     ` [PATCH] " Kevin Ballard
2008-03-22 19:35       ` Eric Wong

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20080321065130.GA28144@muzzle \
    --to=normalperson@yhbt.net \
    --cc=git@vger.kernel.org \
    --cc=kevin@sb.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.