Jan Pešta [off-list ref] writes:
In inproperly merges, the ranges contains additional character "*".
Thanks, but -ECANNOTPARSE. What are "inproperly merges"?
See http://www.open.collab.net/community/subversion/articles/merge-info.html
Extract:
The range r30430:30435 that was added to 1.5.x in this merge has a '*'
suffix for 1.5.x\www.
This '*' is the marker for a non-inheritable mergeinfo range.
The '*' means that only the path on which the mergeinfo is explicitly set
has had this range merged into it.
If I am reading the above correctly, blindly removing '*' from the
range will record a wrong merge in the result, because on the SVN
side only the history of part of the tree is merged but we represent
the result as a full merge (and Git only records full merge of
histories), no?
My gut feeling tells me that failing the import, saying "We cannot
represent this history", might be a more honest and safe thing to
do.
quoted hunk
Signed-off-by: Jan Pesta <redacted>
---
perl/Git/SVN.pm | 1 +
1 file changed, 1 insertion(+)
diff --git a/perl/Git/SVN.pm b/perl/Git/SVN.pm
index 0ebc68a..6bd18e9 100644
--- a/perl/Git/SVN.pm
+++ b/perl/Git/SVN.pm
@@ -1493,6 +1493,7 @@ sub lookup_svn_merge {
my @merged_commit_ranges;
# find the tip
for my $range ( @ranges ) {
+ $range =~ s/[*]$//;
my ($bottom, $top) = split "-", $range;
$top ||= $bottom;
my $bottom_commit = $gs->find_rev_after( $bottom, 1, $top );
Hi Junio,
You have right. But I think if there is a "*" sign, it should be skiped, instead of failing on comparing string with a number.
I will prepare another patch.
Regards,
Jan
Kind regards / S pozdravem
Jan Pešta
SW Engineer Sr.
CertiCon a.s., www.certicon.cz
Vaclavska 12
12000 Prague 2
Czech Republic
Office Prague: +420 224 904 406
Mobile: +420 604 794 306
E-mail: jan.pesta@certicon.cz
-----Original Message-----
From: git-owner@vger.kernel.org [mailto:git-owner@vger.kernel.org] On Behalf Of Junio C Hamano
Sent: Friday, March 01, 2013 6:55 PM
To: Jan Pešta
Cc: git@vger.kernel.org; 'Matthieu Moy'
Subject: Re: [PATCH] In inproperly merges, the ranges contains additional character "*"
Jan Pešta [off-list ref] writes:
In inproperly merges, the ranges contains additional character "*".
Thanks, but -ECANNOTPARSE. What are "inproperly merges"?
See http://www.open.collab.net/community/subversion/articles/merge-info.html
Extract:
The range r30430:30435 that was added to 1.5.x in this merge has a '*'
suffix for 1.5.x\www.
This '*' is the marker for a non-inheritable mergeinfo range.
The '*' means that only the path on which the mergeinfo is explicitly set
has had this range merged into it.
If I am reading the above correctly, blindly removing '*' from the
range will record a wrong merge in the result, because on the SVN
side only the history of part of the tree is merged but we represent
the result as a full merge (and Git only records full merge of
histories), no?
My gut feeling tells me that failing the import, saying "We cannot
represent this history", might be a more honest and safe thing to
do.
quoted hunk
Signed-off-by: Jan Pesta <redacted>
---
perl/Git/SVN.pm | 1 +
1 file changed, 1 insertion(+)
diff --git a/perl/Git/SVN.pm b/perl/Git/SVN.pm
index 0ebc68a..6bd18e9 100644
--- a/perl/Git/SVN.pm
+++ b/perl/Git/SVN.pm
@@ -1493,6 +1493,7 @@ sub lookup_svn_merge {
my @merged_commit_ranges;
# find the tip
for my $range ( @ranges ) {
+ $range =~ s/[*]$//;
my ($bottom, $top) = split "-", $range;
$top ||= $bottom;
my $bottom_commit = $gs->find_rev_after( $bottom, 1, $top );