chiark
/
gitweb
/
~ianmdlvl
/
dgit.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
git-debrebase: convert-from-*: snag on discarding comments in series
[dgit.git]
/
git-debrebase
diff --git
a/git-debrebase
b/git-debrebase
index 4bfe0952518214203c5e3ac397b27c53ceb93354..5fabfd6762e7a3d407521cafe17047ad5bb242e0 100755
(executable)
--- a/
git-debrebase
+++ b/
git-debrebase
@@
-196,10
+196,12
@@
sub get_tree ($;$$) {
return () if $type eq 'missing';
}
return () if $type eq 'missing';
}
+ $recurse = !!$recurse;
+
confess "get_tree needs object not $x ?" unless $x =~ m{^[0-9a-f]+\:};
our (@get_tree_memo, %get_tree_memo);
confess "get_tree needs object not $x ?" unless $x =~ m{^[0-9a-f]+\:};
our (@get_tree_memo, %get_tree_memo);
- my $memo = $get_tree_memo{$x};
+ my $memo = $get_tree_memo{$
recurse,$
x};
return @$memo if $memo;
local $Debian::Dgit::debugcmd_when_debuglevel = 3;
return @$memo if $memo;
local $Debian::Dgit::debugcmd_when_debuglevel = 3;
@@
-216,7
+218,7
@@
sub get_tree ($;$$) {
push @l, [ $n, $i ];
confess "$x need $last < $n ?" unless $last lt $n;
}
push @l, [ $n, $i ];
confess "$x need $last < $n ?" unless $last lt $n;
}
- $get_tree_memo{$x} = \@l;
+ $get_tree_memo{$
recurse,$
x} = \@l;
push @get_tree_memo, $x;
if (@get_tree_memo > 10) {
delete $get_tree_memo{ shift @get_tree_memo };
push @get_tree_memo, $x;
if (@get_tree_memo > 10) {
delete $get_tree_memo{ shift @get_tree_memo };
@@
-225,15
+227,18
@@
sub get_tree ($;$$) {
}
sub trees_diff_walk ($$$;$) {
}
sub trees_diff_walk ($$$;$) {
- # trees_diff_walk [
$all
,] $x, $y, sub {... }
- # calls sub->($name, $ix, $iy) for each difference
(with $all, each name)
+ # trees_diff_walk [
{..opts...}
,] $x, $y, sub {... }
+ # calls sub->($name, $ix, $iy) for each difference
# $x and $y are as for get_tree
# where $name, $ix, $iy are $name and $info from get_tree
# $x and $y are as for get_tree
# where $name, $ix, $iy are $name and $info from get_tree
- my $all = shift @_ if @_>=4;
+ # opts are all call even for names same in both
+ # recurse call even for names same in both
+ my $opts = shift @_ if @_>=4;
my ($x,$y,$call) = @_;
my ($x,$y,$call) = @_;
+ my $all = $opts->{all};
return if !$all and $x eq $y;
return if !$all and $x eq $y;
- my @x = get_tree $x;
- my @y = get_tree $y;
+ my @x = get_tree $x
, 0, $opts->{recurse}
;
+ my @y = get_tree $y
, 0, $opts->{recurse}
;
printdebug "trees_diff_walk(..$x,$y..) ".Dumper(\@x,\@y)
if $debuglevel >= 3;
while (@x || @y) {
printdebug "trees_diff_walk(..$x,$y..) ".Dumper(\@x,\@y)
if $debuglevel >= 3;
while (@x || @y) {
@@
-305,13
+310,16
@@
sub get_differs ($$) {
my $xp = $ix && "$xd/patches";
my $yp = $iy && "$yd/patches";
my $xp = $ix && "$xd/patches";
my $yp = $iy && "$yd/patches";
- trees_diff_walk $xp, $yp, sub {
+ trees_diff_walk
{ recurse=>1 },
$xp, $yp, sub {
my ($n,$ix,$iy) = @_;
# analyse difference in debian/patches
my $ok;
my ($n,$ix,$iy) = @_;
# analyse difference in debian/patches
my $ok;
- if ($n !~ m/\.series$/s && !$ix && $plain->($iy)) {
+ if ($n =~ m{/$}s) {
+ # we are recursing; directories may appear and disappear
+ $ok = 1;
+ } elsif ($n !~ m/\.series$/s && !$ix && $plain->($iy)) {
$ok = 1;
} elsif ($n eq 'series' && $plain->($ix) && $plain->($iy)) {
my $x_s = (git_cat_file "$xp/series", 'blob');
$ok = 1;
} elsif ($n eq 'series' && $plain->($ix) && $plain->($iy)) {
my $x_s = (git_cat_file "$xp/series", 'blob');
@@
-2441,7
+2449,14
@@
sub check_series_has_all_patches ($) {
[qw(blob missing)];
$series //= '';
my %series;
[qw(blob missing)];
$series //= '';
my %series;
+ our $comments_snagged;
foreach my $f (grep /\S/, grep {!m/^\s\#/} split /\n/, $series) {
foreach my $f (grep /\S/, grep {!m/^\s\#/} split /\n/, $series) {
+ if ($f =~ m/^\s*\#/) {
+ snag 'series-comments',
+ "$seriesfn contains comments, which will be discarded"
+ unless $comments_snagged++;
+ next;
+ }
fail "patch $f repeated in $seriesfn !" if $series{$f}++;
}
foreach my $patchfile (get_tree "$head:debian/patches", 1,1) {
fail "patch $f repeated in $seriesfn !" if $series{$f}++;
}
foreach my $patchfile (get_tree "$head:debian/patches", 1,1) {