Re: [PATCH] git-svn: avoid crashing svnserve when creating new directories
- From
- Eric Wong <normalperson@yhbt.net>
- Date
- May 19, 2007, 10:58 UTC
- Message-ID
- <20070519105800.GA22230@muzzle>
- In-Reply-To
- <vpqtzu9m7za.fsf@bauges.imag.fr>
Matthieu Moy <Matthieu.Moy@imag.fr> wrote:
Show 12 quoted lines
> Eric Wong <normalperson@yhbt.net> writes:
>
> > foreach (sort { $b =~ tr#/#/# <=> $a =~ tr#/#/# } keys %$bat) {
> > + next if $_ eq '';
> > $self->close_directory($bat->{$_}, $p);
> > }
> > + $self->close_directory($bat->{''}, $p);
>
> Works for me. Thanks a lot!
>
> BTW, I didn't have time to write my script as a real testcase for
> git-svn, but it should probably be added to the testsuite.I have a modified version of the test I posted earlier based on your test. However, I'm not comfortable binding to any port (even without ssh) on a users machine or potentially leaving a daemon running if the test is interrupted.
>From bfbd67e31e952489098c2a10df259fbf1e7863fb Mon Sep 17 00:00:00 2001
From: Eric Wong <normalperson@yhbt.net> Date: Sun, 13 May 2007 17:38:21 -0700 Subject: [PATCH] git-svn: test for creating new directories over svn://
As reported by Matthieu Moy, this is causing svnserve to terminate connections (because it segfaults) segfault.
Signed-off-by: Eric Wong <normalperson@yhbt.net> --- t/t9112-git-svn-dcommit-new-file.sh | 37 +++++++++++++++++++++++++++++++++++ 1 files changed, 37 insertions(+), 0 deletions(-) create mode 100755 t/t9112-git-svn-dcommit-new-file.sh
diff --git a/t/t9112-git-svn-dcommit-new-file.sh b/t/t9112-git-svn-dcommit-new-file.sh new file mode 100755 index 0000000..b186fce --- /dev/null +++ b/t/t9112-git-svn-dcommit-new-file.sh @@ -0,0 +1,37 @@ +#!/bin/sh +# +# Copyright (c) 2007 Eric Wong +# + +test_description='git-svn dcommit new files over svn:// test' + +. ./lib-git-svn.sh + +# standard svnserve runs on 3690, so lets not conflict with that +SVNSERVE_PORT=${SVNSERVE_PORT-'3691'} + +start_svnserve () { + svnserve --listen-port $SVNSERVE_PORT \ + --root $rawsvnrepo \ + --listen-once \ + --listen-host 127.0.0.1 & +} + +test_expect_success 'start tracking an empty repo' " + svn mkdir -m 'empty dir' $svnrepo/empty-dir && + echo anon-access = write >> $rawsvnrepo/conf/svnserve.conf && + start_svnserve && + git svn init svn://127.0.0.1:$SVNSERVE_PORT && + git svn fetch + " + +test_expect_success 'create files in new directory with dcommit' " + mkdir git-new-dir && + echo hello > git-new-dir/world && + git update-index --add git-new-dir/world && + git commit -m hello && + start_svnserve && + git svn dcommit + " + +test_done
-- Eric Wong