From e509db990b2ecae642efe3cdef4014d57d525f24 Mon Sep 17 00:00:00 2001 From: Steffen Prohaska Date: Sat, 26 Jan 2008 10:54:06 +0100 Subject: cvsserver: Fix for histories with multiple roots Git histories may have multiple roots, which can cause git merge-base to fail and this caused git cvsserver to die. This commit teaches git cvsserver to handle a failing git merge-base gracefully, and modifies the test case to verify this. All the test cases now use a history with two roots. Signed-off-by: Steffen Prohaska git-cvsserver.perl | 9 ++++++++- t/t9400-git-cvsserver-server.sh | 10 +++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) Signed-off-by: Junio C Hamano --- git-cvsserver.perl | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'git-cvsserver.perl') diff --git a/git-cvsserver.perl b/git-cvsserver.perl index ecded3b9c..afe3d0b7f 100755 --- a/git-cvsserver.perl +++ b/git-cvsserver.perl @@ -2543,8 +2543,15 @@ sub update if ($parent eq $lastpicked) { next; } - my $base = safe_pipe_capture('git-merge-base', + my $base = eval { + safe_pipe_capture('git-merge-base', $lastpicked, $parent); + }; + # The two branches may not be related at all, + # in which case merge base simply fails to find + # any, but that's Ok. + next if ($@); + chomp $base; if ($base) { my @merged; -- cgit v1.2.1