chiark
/
gitweb
/
~ian
/
topbloke.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
wip new metadata
[topbloke.git]
/
tb-list.pl
diff --git
a/tb-list.pl
b/tb-list.pl
index 385e031c4fa22c6df28599c1b9d6e0ebe5d72588..8fc3c3bd8784067feb62c4fb4b604904461c61e7 100755
(executable)
--- a/
tb-list.pl
+++ b/
tb-list.pl
@@
-59,11
+59,16
@@
our %patches;
foreach_patch($relatedto || $leaves || !$spec ? { } : $spec,
$deleted || $deleted_only,
foreach_patch($relatedto || $leaves || !$spec ? { } : $spec,
$deleted || $deleted_only,
- [
0, !!$leaves, 0, $toposort || !!$relatedto
],
+ [
qw(B_deps +included)
],
sub {
sub {
- my ($patch,$parsedname,
@info
) = @_;
- $patches{$patch}{
Info} = \@info
;
+ my ($patch,$parsedname,
$meta
) = @_;
+ $patches{$patch}{
Meta} = $meta
;
$patches{$patch}{ParsedName} = $parsedname;
$patches{$patch}{ParsedName} = $parsedname;
+ $patches{$patch}{Deps} =
+ grep { m/^[^-]/ } split /\n/, $meta->{'B_deps'};
+ $patches{$patch}{Included} = { };
+ $patches{$patch}{Included}{$_} = 1
+ foreach split /\n/, $meta->{'+included'};
});
#----- selection -----
});
#----- selection -----
@@
-73,8
+78,8
@@
if ($leaves) {
foreach my $p (keys %patches) {
debug("leaves $p");
my $v = $patches{$p};
foreach my $p (keys %patches) {
debug("leaves $p");
my $v = $patches{$p};
- next if
$v->{Info}[0]{Deleted
};
- foreach my $dep (
keys %{ $v->{Info}[1]
}) {
+ next if
defined $v->{Meta}{'deleted'
};
+ foreach my $dep (
@{ $v->{Deps}
}) {
debug("leaves $p $dep");
next unless exists $patches{$dep};
$patches{$dep}{NotLeaf} = 1;
debug("leaves $p $dep");
next unless exists $patches{$dep};
$patches{$dep}{NotLeaf} = 1;
@@
-86,7
+91,7
@@
if ($relatedto) {
foreach my $p (keys %patches) {
my $v = $patches{$p};
# mark Related=1 if any patch matching $relatedto includes us
foreach my $p (keys %patches) {
my $v = $patches{$p};
# mark Related=1 if any patch matching $relatedto includes us
- foreach my $dep (keys %{ $v->{In
fo}[3]
}) {
+ foreach my $dep (keys %{ $v->{In
cluded}
}) {
next unless exists $patches{$dep};
my $depv = $patches{$dep};
next unless patch_matches_spec($depv->{ParsedName}, $relatedto);
next unless exists $patches{$dep};
my $depv = $patches{$dep};
next unless patch_matches_spec($depv->{ParsedName}, $relatedto);
@@
-95,7
+100,7
@@
if ($relatedto) {
}
if (patch_matches_spec($v->{ParsedName}, $relatedto)) {
# if we match $relatedto, mark all our inclusions as Related=1
}
if (patch_matches_spec($v->{ParsedName}, $relatedto)) {
# if we match $relatedto, mark all our inclusions as Related=1
- foreach my $dep (keys %{ $v->{In
fo}[3]
}) {
+ foreach my $dep (keys %{ $v->{In
cluded}
}) {
next unless exists $patches{$dep};
$patches{$dep}{Related} = 1;
}
next unless exists $patches{$dep};
$patches{$dep}{Related} = 1;
}
@@
-109,8
+114,8
@@
our @output;
foreach my $p (keys %patches) {
my $v = $patches{$p};
foreach my $p (keys %patches) {
my $v = $patches{$p};
- next if !$deleted &&
$v->{Info}[0]{Deleted
};
- next if $deleted_only && !
$v->{Info}[0]{Deleted
};
+ next if !$deleted &&
defined $v->{Meta}{'deleted'
};
+ next if $deleted_only && !
defined $v->{Meta}{'deleted'
};
next if $leaves && $v->{NotLeaf};
next if $relatedto && !$v->{Related};
next if $spec && !patch_matches_spec($v->{ParsedName}, $spec);
next if $leaves && $v->{NotLeaf};
next if $relatedto && !$v->{Related};
next if $spec && !patch_matches_spec($v->{ParsedName}, $spec);
@@
-151,7
+156,7
@@
sub sortsub () {
my $ab = (qw(a b))[$ix];
my $ba = (qw(b a))[$ix];
my $r = (qw(1 -1))[$ix];
my $ab = (qw(a b))[$ix];
my $ba = (qw(b a))[$ix];
my $r = (qw(1 -1))[$ix];
- $txt .= " return $r if \$v${ab}->{In
fo}[3]
{\$$ba};\n";
+ $txt .= " return $r if \$v${ab}->{In
cluded}
{\$$ba};\n";
}
} else {
die $sort;
}
} else {
die $sort;
@@
-188,7
+193,7
@@
foreach my $p (@output) {
? $1 : "[no subject]";
printf("%1s%1s %s\@%s/%s/%-20s %s\n",
$p eq $current_patch ? $ifcurrent : '',
? $1 : "[no subject]";
printf("%1s%1s %s\@%s/%s/%-20s %s\n",
$p eq $current_patch ? $ifcurrent : '',
-
$v->{Info}[0]{Deleted
} ? 'D' : '',
+
defined $v->{Meta}{'deleted'
} ? 'D' : '',
$pa->{Email}, $pa->{Domain}, $pa->{Date}, $pa->{Nick},
$subject)
or die $!;
$pa->{Email}, $pa->{Domain}, $pa->{Date}, $pa->{Nick},
$subject)
or die $!;