git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH/rfc] git-svn.perl: workaround assertions in svn library 1.5.0
@ 2008-07-06 19:28 Gerrit Pape
  2008-07-07  9:06 ` Eric Wong
  2008-07-17 14:08 ` Gerrit Pape
  0 siblings, 2 replies; 8+ messages in thread
From: Gerrit Pape @ 2008-07-06 19:28 UTC (permalink / raw)
  To: git, Eric Wong

With subversion 1.5.0 (C and perl libraries) the git-svn selftest
t9101-git-svn-props.sh fails at test 25 and 26.  The following commands
cause assertions in the svn library

 $ cd deeply
 $ git-svn propget svn:ignore .
 perl: /build/buildd/subversion-1.5.0dfsg1/subversion/libsvn_ra/ra_loader.c:674: svn_ra_get_dir: Assertion `*path != '/'' failed.
 Aborted

 $ git-svn propget svn:ignore ..
 perl: /build/buildd/subversion-1.5.0dfsg1/subversion/libsvn_subr/path.c:120: svn_path_join: Assertion `is_canonical(component, clen)' failed.

With this commit, git-svn makes sure the path doesn't start with a
slash, and is not a dot, working around these assertions.

The breakage was reported by Lucas Nussbaum through
 http://bugs.debian.org/489108

Signed-off-by: Gerrit Pape <pape@smarden.org>
---
 git-svn.perl |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

I ran into this on Debian/unstable.  With svn 1.5.0 the selftest fails
without the patch, with svn 1.4.6 it succeeds with and without the
patch.  I'm not familar with the svn interfaces, not sure whether this
is a regression in subversion, or a bug in git-svn.


diff --git a/git-svn.perl b/git-svn.perl
index f789a6e..a366c89 100755
--- a/git-svn.perl
+++ b/git-svn.perl
@@ -643,6 +643,8 @@ sub canonicalize_path {
 	$path =~ s#/[^/]+/\.\.##g;
 	$path =~ s#/$##g;
 	$path =~ s#^\./## if $dot_slash_added;
+	$path =~ s#^/##;
+	$path =~ s#^\.$##;
 	return $path;
 }
 
-- 
1.5.6

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH/rfc] git-svn.perl: workaround assertions in svn library 1.5.0
  2008-07-06 19:28 [PATCH/rfc] git-svn.perl: workaround assertions in svn library 1.5.0 Gerrit Pape
@ 2008-07-07  9:06 ` Eric Wong
  2008-07-17 14:08 ` Gerrit Pape
  1 sibling, 0 replies; 8+ messages in thread
From: Eric Wong @ 2008-07-07  9:06 UTC (permalink / raw)
  To: Gerrit Pape, Junio C Hamano; +Cc: git

Gerrit Pape <pape@smarden.org> wrote:
> With subversion 1.5.0 (C and perl libraries) the git-svn selftest
> t9101-git-svn-props.sh fails at test 25 and 26.  The following commands
> cause assertions in the svn library
> 
>  $ cd deeply
>  $ git-svn propget svn:ignore .
>  perl: /build/buildd/subversion-1.5.0dfsg1/subversion/libsvn_ra/ra_loader.c:674: svn_ra_get_dir: Assertion `*path != '/'' failed.
>  Aborted
> 
>  $ git-svn propget svn:ignore ..
>  perl: /build/buildd/subversion-1.5.0dfsg1/subversion/libsvn_subr/path.c:120: svn_path_join: Assertion `is_canonical(component, clen)' failed.
> 
> With this commit, git-svn makes sure the path doesn't start with a
> slash, and is not a dot, working around these assertions.
> 
> The breakage was reported by Lucas Nussbaum through
>  http://bugs.debian.org/489108
> 
> Signed-off-by: Gerrit Pape <pape@smarden.org>

Thanks Gerrit,

This works with svn 1.4.3 here

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

> ---
>  git-svn.perl |    2 ++
>  1 files changed, 2 insertions(+), 0 deletions(-)
> 
> I ran into this on Debian/unstable.  With svn 1.5.0 the selftest fails
> without the patch, with svn 1.4.6 it succeeds with and without the
> patch.  I'm not familar with the svn interfaces, not sure whether this
> is a regression in subversion, or a bug in git-svn.
> 
> 
> diff --git a/git-svn.perl b/git-svn.perl
> index f789a6e..a366c89 100755
> --- a/git-svn.perl
> +++ b/git-svn.perl
> @@ -643,6 +643,8 @@ sub canonicalize_path {
>  	$path =~ s#/[^/]+/\.\.##g;
>  	$path =~ s#/$##g;
>  	$path =~ s#^\./## if $dot_slash_added;
> +	$path =~ s#^/##;
> +	$path =~ s#^\.$##;
>  	return $path;
>  }
>  
> -- 
> 1.5.6

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH/rfc] git-svn.perl: workaround assertions in svn library 1.5.0
  2008-07-06 19:28 [PATCH/rfc] git-svn.perl: workaround assertions in svn library 1.5.0 Gerrit Pape
  2008-07-07  9:06 ` Eric Wong
@ 2008-07-17 14:08 ` Gerrit Pape
  2008-07-17 18:37   ` Dmitry Potapov
  1 sibling, 1 reply; 8+ messages in thread
From: Gerrit Pape @ 2008-07-17 14:08 UTC (permalink / raw)
  To: git, Eric Wong

On Sun, Jul 06, 2008 at 07:28:50PM +0000, Gerrit Pape wrote:
> With subversion 1.5.0 (C and perl libraries) the git-svn selftest
> t9101-git-svn-props.sh fails at test 25 and 26.  The following commands

> The breakage was reported by Lucas Nussbaum through
>  http://bugs.debian.org/489108

> ---
>  git-svn.perl |    2 ++
>  1 files changed, 2 insertions(+), 0 deletions(-)
> 
> I ran into this on Debian/unstable.  With svn 1.5.0 the selftest fails
> without the patch, with svn 1.4.6 it succeeds with and without the
> patch.  I'm not familar with the svn interfaces, not sure whether this
> is a regression in subversion, or a bug in git-svn.

Hi, while this commit fixed the selftests, it unfortunately is a
regression

 http://thread.gmane.org/gmane.comp.version-control.git/87822/
 http://bugs.debian.org/490400

I'm still not sure whether this is a git-svn problem, or actually a
problem in subversion 1.5.0

 $ perl -MSVN::Client -e \
 'sub print_names { print "<$_[0]>\n"; } $ctx=new SVN::Client;
 $ctx->status(".", "BASE", \&print_names, 1, 1, 0, 1);' | head -5
 perl:
 /build/buildd/subversion-1.5.0dfsg1/subversion/libsvn_subr/path.c:119: svn_path_join: Assertion `is_canonical(base, blen)' failed.
 $ 
 [0]

Regards, Gerrit.

[0] http://bugs.debian.org/359679

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH/rfc] git-svn.perl: workaround assertions in svn library 1.5.0
  2008-07-17 14:08 ` Gerrit Pape
@ 2008-07-17 18:37   ` Dmitry Potapov
  2008-07-20  1:27     ` Junio C Hamano
  0 siblings, 1 reply; 8+ messages in thread
From: Dmitry Potapov @ 2008-07-17 18:37 UTC (permalink / raw)
  To: Gerrit Pape; +Cc: git, Eric Wong

On Thu, Jul 17, 2008 at 6:08 PM, Gerrit Pape <pape@smarden.org> wrote:
>
> Hi, while this commit fixed the selftests, it unfortunately is a
> regression
>
>  http://thread.gmane.org/gmane.comp.version-control.git/87822/
>  http://bugs.debian.org/490400

This particular breakage is easy to fix:

diff --git a/git-svn.perl b/git-svn.perl
index 3750e47..a5a5b1b 100755
--- a/git-svn.perl
+++ b/git-svn.perl
@@ -1226,7 +1226,7 @@ sub linearize_history {

 sub find_file_type_and_diff_status {
        my ($path) = @_;
-       return ('dir', '') if $path eq '.';
+       return ('dir', '') if $path eq '';

        my $diff_output =
            command_oneline(qw(diff --cached --name-status --), $path) || "";

but it could be some other places in git-svn that may need correction too.

>
> I'm still not sure whether this is a git-svn problem, or actually a
> problem in subversion 1.5.0

Accordingly to SVN developers you do not use SVN API correctly,
therefore you got assert. So, the problem in git-svn.
http://svn.haxx.se/dev/archive-2008-01/0425.shtml

Dmitry

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH/rfc] git-svn.perl: workaround assertions in svn library 1.5.0
  2008-07-17 18:37   ` Dmitry Potapov
@ 2008-07-20  1:27     ` Junio C Hamano
  2008-07-20 20:14       ` Dmitry Potapov
  0 siblings, 1 reply; 8+ messages in thread
From: Junio C Hamano @ 2008-07-20  1:27 UTC (permalink / raw)
  To: Dmitry Potapov; +Cc: Gerrit Pape, git, Eric Wong

"Dmitry Potapov" <dpotapov@gmail.com> writes:

> On Thu, Jul 17, 2008 at 6:08 PM, Gerrit Pape <pape@smarden.org> wrote:
>>
>> Hi, while this commit fixed the selftests, it unfortunately is a
>> regression
>>
>>  http://thread.gmane.org/gmane.comp.version-control.git/87822/
>>  http://bugs.debian.org/490400
>
> This particular breakage is easy to fix:
>
> diff --git a/git-svn.perl b/git-svn.perl
> index 3750e47..a5a5b1b 100755
> --- a/git-svn.perl
> +++ b/git-svn.perl
> @@ -1226,7 +1226,7 @@ sub linearize_history {
>
>  sub find_file_type_and_diff_status {
>         my ($path) = @_;
> -       return ('dir', '') if $path eq '.';
> +       return ('dir', '') if $path eq '';
>
>         my $diff_output =
>             command_oneline(qw(diff --cached --name-status --), $path) || "";
>
> but it could be some other places in git-svn that may need correction too.
>
>>
>> I'm still not sure whether this is a git-svn problem, or actually a
>> problem in subversion 1.5.0
>
> Accordingly to SVN developers you do not use SVN API correctly,
> therefore you got assert. So, the problem in git-svn.
> http://svn.haxx.se/dev/archive-2008-01/0425.shtml

So what's the conclusion of this issue?

I'll just revert 2fe403e (git-svn.perl: workaround assertions in svn
library 1.5.0, 2008-07-06) for 1.6.0-rc0 unless I hear better
suggestions.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH/rfc] git-svn.perl: workaround assertions in svn library 1.5.0
  2008-07-20  1:27     ` Junio C Hamano
@ 2008-07-20 20:14       ` Dmitry Potapov
  2008-07-21  1:29         ` Eric Wong
  0 siblings, 1 reply; 8+ messages in thread
From: Dmitry Potapov @ 2008-07-20 20:14 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Gerrit Pape, git, Eric Wong

On Sat, Jul 19, 2008 at 06:27:36PM -0700, Junio C Hamano wrote:
> 
> So what's the conclusion of this issue?
> 
> I'll just revert 2fe403e (git-svn.perl: workaround assertions in svn
> library 1.5.0, 2008-07-06) for 1.6.0-rc0 unless I hear better
> suggestions.

I have tested the change that I proposed, and it seems to solve the
problem and, as far as I can tell, no other correction is necessary.
Yet, I don't really understand git-svn well, so I could be wrong.

Reverting 2fe403e will only help users of svn library 1.4, while all
new linux distributives, which will include Git 1.6.0, are going to
install svn library 1.5.0, and if you use svn library 1.5.0, reverting
2fe403e does not fix anything but only add one more bug. Thus, unless
we are going to require to install git-svn only with svn library 1.4,
reverting this change does not seem to be very helpful for most users.

So, I hope my patch is better solution...

Dmitry

-- 8< --
From: Dmitry Potapov <dpotapov@gmail.com>
Date: Thu, 17 Jul 2008 22:32:02 +0400
Subject: [PATCH] git-svn: fix git svn info to work without arguments

commit 2fe403e7452bd6e1e8232445cf5434ce8f1af973 broke "git-svn info ."
due to replacing '.' with '' in canonicalize_path for the top directory,
while find_file_type_and_diff_status was not corrected.

Bug reports:

http://thread.gmane.org/gmane.comp.version-control.git/87822/
http://bugs.debian.org/490400

Signed-off-by: Dmitry Potapov <dpotapov@gmail.com>
---
 git-svn.perl |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/git-svn.perl b/git-svn.perl
index a366c89..b00a91a 100755
--- a/git-svn.perl
+++ b/git-svn.perl
@@ -1226,7 +1226,7 @@ sub linearize_history {
 
 sub find_file_type_and_diff_status {
 	my ($path) = @_;
-	return ('dir', '') if $path eq '.';
+	return ('dir', '') if $path eq '';
 
 	my $diff_output =
 	    command_oneline(qw(diff --cached --name-status --), $path) || "";
-- 
1.5.6.3

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH/rfc] git-svn.perl: workaround assertions in svn library 1.5.0
  2008-07-20 20:14       ` Dmitry Potapov
@ 2008-07-21  1:29         ` Eric Wong
  2008-07-21  1:54           ` Junio C Hamano
  0 siblings, 1 reply; 8+ messages in thread
From: Eric Wong @ 2008-07-21  1:29 UTC (permalink / raw)
  To: Dmitry Potapov; +Cc: Junio C Hamano, Gerrit Pape, git

Dmitry Potapov <dpotapov@gmail.com> wrote:
> On Sat, Jul 19, 2008 at 06:27:36PM -0700, Junio C Hamano wrote:
> > 
> > So what's the conclusion of this issue?
> > 
> > I'll just revert 2fe403e (git-svn.perl: workaround assertions in svn
> > library 1.5.0, 2008-07-06) for 1.6.0-rc0 unless I hear better
> > suggestions.
> 
> I have tested the change that I proposed, and it seems to solve the
> problem and, as far as I can tell, no other correction is necessary.
> Yet, I don't really understand git-svn well, so I could be wrong.
> 
> Reverting 2fe403e will only help users of svn library 1.4, while all
> new linux distributives, which will include Git 1.6.0, are going to
> install svn library 1.5.0, and if you use svn library 1.5.0, reverting
> 2fe403e does not fix anything but only add one more bug. Thus, unless
> we are going to require to install git-svn only with svn library 1.4,
> reverting this change does not seem to be very helpful for most users.
> 
> So, I hope my patch is better solution...
> 
> Dmitry

Thanks Dmitry,

Your patch works for me on 1.4.3, so if it works with
1.5.0, consider it: Acked-by: Eric Wong <normalperson@yhbt.net>

-- 
Eric Wong

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH/rfc] git-svn.perl: workaround assertions in svn library 1.5.0
  2008-07-21  1:29         ` Eric Wong
@ 2008-07-21  1:54           ` Junio C Hamano
  0 siblings, 0 replies; 8+ messages in thread
From: Junio C Hamano @ 2008-07-21  1:54 UTC (permalink / raw)
  To: Eric Wong; +Cc: Dmitry Potapov, Gerrit Pape, git

Thanks, both.

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2008-07-21  1:55 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-07-06 19:28 [PATCH/rfc] git-svn.perl: workaround assertions in svn library 1.5.0 Gerrit Pape
2008-07-07  9:06 ` Eric Wong
2008-07-17 14:08 ` Gerrit Pape
2008-07-17 18:37   ` Dmitry Potapov
2008-07-20  1:27     ` Junio C Hamano
2008-07-20 20:14       ` Dmitry Potapov
2008-07-21  1:29         ` Eric Wong
2008-07-21  1:54           ` Junio C Hamano

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).