chiark
/
gitweb
/
~ianmdlvl
/
dgit.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
bb4bf5d
)
git-debrebase: wip debug, fixes etc.
author
Ian Jackson
<ijackson@chiark.greenend.org.uk>
Fri, 14 Jul 2017 11:23:31 +0000
(12:23 +0100)
committer
Ian Jackson
<ijackson@chiark.greenend.org.uk>
Sat, 16 Jun 2018 11:25:49 +0000
(12:25 +0100)
git-debrebase
patch
|
blob
|
history
diff --git
a/git-debrebase
b/git-debrebase
index 15196fe42eba2214e4835ee62c84c62d6455eb45..982423a68b8c84d05a34be738879c7d497e4dcfb 100755
(executable)
--- a/
git-debrebase
+++ b/
git-debrebase
@@
-108,6
+108,7
@@
use Memoize;
use Carp;
use POSIX;
use Data::Dumper;
use Carp;
use POSIX;
use Data::Dumper;
+use Getopt::Long qw(:config posix_default gnu_compat bundling);
use Debian::Dgit qw(:DEFAULT $wa);
use Debian::Dgit qw(:DEFAULT $wa);
@@
-155,25
+156,24
@@
sub get_differs ($$) {
my $differs = 0;
my $differs = 0;
- my $f;
my $rundiff = sub {
my ($opts, $sfx, $fn) = @_;
$opts //= [qw(--name-only)];
my @cmd = (@git, qw(diff-tree -z --no-renames));
push @cmd, @$opts;
push @cmd, "$_:$sfx" foreach $x, $y;
my $rundiff = sub {
my ($opts, $sfx, $fn) = @_;
$opts //= [qw(--name-only)];
my @cmd = (@git, qw(diff-tree -z --no-renames));
push @cmd, @$opts;
push @cmd, "$_:$sfx" foreach $x, $y;
- my $diffs = cmdoutput @cmd
, $x, $y
;
- foreach
$f
(split /\0/, $diffs) { $fn->(); }
+ my $diffs = cmdoutput @cmd;
+ foreach (split /\0/, $diffs) { $fn->(); }
};
$rundiff->(undef, '', sub {
};
$rundiff->(undef, '', sub {
- $differs |= $
f
eq 'debian' ? D_DEB : D_UPS;
+ $differs |= $
_
eq 'debian' ? D_DEB : D_UPS;
});
if ($differs & D_DEB) {
$differs &= ~D_DEB;
$rundiff->(undef, ':debian', sub {
});
if ($differs & D_DEB) {
$differs &= ~D_DEB;
$rundiff->(undef, ':debian', sub {
- $differs |= $
f
eq 'patches' ? D_PAT_OTH : D_DEB;
+ $differs |= $
_
eq 'patches' ? D_PAT_OTH : D_DEB;
});
die "mysterious debian changes $x..$y"
unless $differs & (D_PAT_OTH|D_DEB);
});
die "mysterious debian changes $x..$y"
unless $differs & (D_PAT_OTH|D_DEB);
@@
-189,12
+189,12
@@
sub get_differs ($$) {
$rundiff->([qw(--name-status)], ':debian/patches', sub {
no warnings qw(exiting);
if (!defined $mode) {
$rundiff->([qw(--name-status)], ':debian/patches', sub {
no warnings qw(exiting);
if (!defined $mode) {
- $mode = $
f
; next;
+ $mode = $
_
; next;
}
my $ok;
}
my $ok;
- if ($mode eq 'A' &&
$f !~
m/(?:^|\.)series$/s) {
+ if ($mode eq 'A' &&
!
m/(?:^|\.)series$/s) {
$ok = 1;
$ok = 1;
- } elsif ($mode eq 'M' && $
f
eq 'series') {
+ } elsif ($mode eq 'M' && $
_
eq 'series') {
my $x_s = git_cat_file "$x:debian/patches/series", 'blob';
my $y_s = git_cat_file "$y:debian/patches/series", 'blob';
chomp $x_s; $x_s .= "\n";
my $x_s = git_cat_file "$x:debian/patches/series", 'blob';
my $y_s = git_cat_file "$y:debian/patches/series", 'blob';
chomp $x_s; $x_s .= "\n";
@@
-209,6
+209,8
@@
sub get_differs ($$) {
unless $differs & (D_PAT_ADD|D_PAT_OTH);
}
unless $differs & (D_PAT_ADD|D_PAT_OTH);
}
+ printdebug sprintf "get_differs %s, %s = %#x\n", $x, $y, $differs;
+
return $differs;
}
return $differs;
}
@@
-267,7
+269,7
@@
sub classify ($) {
my ($h,$m) = get_commit $objid;
my ($t) = $h =~ m/^tree (\w+)$/m or die $objid;
my ($h,$m) = get_commit $objid;
my ($t) = $h =~ m/^tree (\w+)$/m or die $objid;
- my (@ph) = $h =~ m/^parent (\w+)$/m;
+ my (@ph) = $h =~ m/^parent (\w+)$/m
g
;
my @p;
my $r = {
my @p;
my $r = {
@@
-286,14
+288,24
@@
sub classify ($) {
};
}
};
}
+ printdebug "classify $objid \$t=$t \@p",
+ (map { sprintf " %s/%#x", $_->{CommitId}, $_->{Differs} } @p),
+ "\n";
+
my $classify = sub {
my ($type, @rest) = @_;
$r = { %$r, Type => $type, @rest };
my $classify = sub {
my ($type, @rest) = @_;
$r = { %$r, Type => $type, @rest };
+ if ($debuglevel) {
+ my $dd = new Data::Dumper [ $r ];
+ Terse $dd 1; Indent $dd 0; Useqq $dd 1;
+ printdebug " = $type ".(Dump $dd)."\n";
+ }
return $r;
};
my $unknown = sub {
my ($why) = @_;
$r = { %$r, Type => qw(Unknown) };
return $r;
};
my $unknown = sub {
my ($why) = @_;
$r = { %$r, Type => qw(Unknown) };
+ printdebug " ** Unknown\n";
return $r;
};
return $r;
};
@@
-474,7
+486,7
@@
sub walk ($;$$) {
$cur = $p0;
next;
} elsif ($ty eq 'Pseudomerge') {
$cur = $p0;
next;
} elsif ($ty eq 'Pseudomerge') {
- print $report " Contributor=$
ty
->{Contributor}" if $report;
+ print $report " Contributor=$
cl
->{Contributor}" if $report;
push @pseudomerges, $cl;
$rewrite_from_here->();
$cur = $ty->{Contributor};
push @pseudomerges, $cl;
$rewrite_from_here->();
$cur = $ty->{Contributor};
@@
-665,10
+677,13
@@
sub cmd_analyse () {
$old = get_head();
}
my ($dummy,$breakwater) = walk $old, 1,*STDOUT;
$old = get_head();
}
my ($dummy,$breakwater) = walk $old, 1,*STDOUT;
- print "$breakwater BREAKWATER\n";
STDOUT->error and die $!;
}
STDOUT->error and die $!;
}
+GetOptions("D+" => \$debuglevel) or die badusage "bad options\n";
+initdebug('git-debrebase ');
+enabledebug if $debuglevel;
+
my $toplevel = cmdoutput @git, qw(rev-parse --show-toplevel);
chdir $toplevel or die "chdir $toplevel: $!";
my $toplevel = cmdoutput @git, qw(rev-parse --show-toplevel);
chdir $toplevel or die "chdir $toplevel: $!";