summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 7d944c3)
raw | patch | inline | side by side (parent: 7d944c3)
author | Sam Vilain <sam@vilain.net> | |
Sat, 19 Dec 2009 16:22:42 +0000 (05:22 +1300) | ||
committer | Eric Wong <normalperson@yhbt.net> | |
Mon, 21 Dec 2009 10:32:50 +0000 (02:32 -0800) |
SVN's list of commit ranges in mergeinfo tickets is inclusive, whereas
git commit ranges are exclusive on the left hand side. Also, the end
points of the commit ranges may not exist; they simply delineate
ranges of commits which may or may not exist. Fix these two mistakes.
Signed-off-by: Sam Vilain <sam@vilain.net>
Acked-by: Eric Wong <normalperson@yhbt.net>
git commit ranges are exclusive on the left hand side. Also, the end
points of the commit ranges may not exist; they simply delineate
ranges of commits which may or may not exist. Fix these two mistakes.
Signed-off-by: Sam Vilain <sam@vilain.net>
Acked-by: Eric Wong <normalperson@yhbt.net>
git-svn.perl | patch | blob | history | |
t/t9151-svn-mergeinfo.sh | patch | blob | history |
diff --git a/git-svn.perl b/git-svn.perl
index 1e106f064b7ab32f9210db7a076e88b29b40eb27..a4a45ef3986453571f3063dfd6aee75c7c127744 100755 (executable)
--- a/git-svn.perl
+++ b/git-svn.perl
for my $range ( @ranges ) {
my ($bottom, $top) = split "-", $range;
$top ||= $bottom;
- my $bottom_commit =
- $gs->rev_map_get($bottom, $uuid) ||
- $gs->rev_map_get($bottom+1, $uuid);
- my $top_commit;
- for (; !$top_commit && $top >= $bottom; --$top) {
- $top_commit =
- $gs->rev_map_get($top, $uuid);
- }
+ my $bottom_commit = $gs->find_rev_after( $bottom, 1, $top );
+ my $top_commit = $gs->find_rev_before( $top, 1, $bottom );
unless ($top_commit and $bottom_commit) {
warn "W:unknown path/rev in svn:mergeinfo "
}
push @merged_commit_ranges,
- "$bottom_commit..$top_commit";
+ "$bottom_commit^..$top_commit";
if ( !defined $tip or $top > $tip ) {
$tip = $top;
index dc3478fbbc8cc52bb2877806164e75559aff9824..f6e00ea30bab3e65c3a1a2c8565216e848229efb 100755 (executable)
--- a/t/t9151-svn-mergeinfo.sh
+++ b/t/t9151-svn-mergeinfo.sh
[ -z "$bad_non_merges" ]
'
-test_expect_failure 'everything got merged in the end' '
+test_expect_success 'everything got merged in the end' '
unmerged=$(git rev-list --all --not master)
[ -z "$unmerged" ]
'