chiark / gitweb /
list works again
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 26 Feb 2012 00:26:29 +0000 (00:26 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 26 Feb 2012 00:26:29 +0000 (00:26 +0000)
Topbloke.pm
tb-list.pl

index 130aa7b8a631a1a8be2a4cf965376ccd6d9c5c01..ec929ff69bd5d61cb1ae2dd290e4b18d1cc39c19 100644 (file)
@@ -11,6 +11,8 @@ use IPC::Open2;
 use File::Path qw(make_path remove_tree);
 use File::Basename;
 
 use File::Path qw(make_path remove_tree);
 use File::Basename;
 
+use Data::Dumper;
+
 BEGIN {
     use Exporter   ();
     our ($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS);
 BEGIN {
     use Exporter   ();
     our ($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS);
@@ -414,6 +416,7 @@ sub patch_matches_spec ($$) {
 
 sub foreach_patch ($$$$) {
     my ($spec, $deleted_ok, $want, $body) = @_;
 
 sub foreach_patch ($$$$) {
     my ($spec, $deleted_ok, $want, $body) = @_;
+print STDERR Dumper(\@_);
     # runs $body->($patch, $parsedname, \%meta)
     # where $meta{<metadata filename>} is, for <metadata filename> in @$want:
     #              undefined if metadata file doesn't exist
     # runs $body->($patch, $parsedname, \%meta)
     # where $meta{<metadata filename>} is, for <metadata filename> in @$want:
     #              undefined if metadata file doesn't exist
@@ -426,7 +429,7 @@ sub foreach_patch ($$$$) {
     #  which means to look in the corresponding base branch
     my @want = @$want;
     my $atfront = sub {
     #  which means to look in the corresponding base branch
     my @want = @$want;
     my $atfront = sub {
-       my $thing = @_;
+       my ($thing) = @_;
        @want = ($thing, grep { $_ ne $thing } @want);
     };
     $atfront->(' patch');
        @want = ($thing, grep { $_ ne $thing } @want);
     };
     $atfront->(' patch');
@@ -439,13 +442,16 @@ sub foreach_patch ($$$$) {
        my $parsedname;
        my $patch = substr($',19); #');
        my $wantix = 0;
        my $parsedname;
        my $patch = substr($',19); #');
        my $wantix = 0;
+print STDERR Dumper(\@want);
        foreach my $wantent (@want) {
            my $file = $wantent;
            my $stripnl = ($file =~ s/_$//);
            my $inbase = ($file =~ s/^B_//);
 
            if ($file eq ' patch') {
        foreach my $wantent (@want) {
            my $file = $wantent;
            my $stripnl = ($file =~ s/_$//);
            my $inbase = ($file =~ s/^B_//);
 
            if ($file eq ' patch') {
+print STDERR "has spc patch\n";
                if ($spec) {
                if ($spec) {
+print STDERR "hasspec\n";
                    $parsedname = parse_patch_name($patch);
                    if (!patch_matches_spec($parsedname, $spec)) {
                        debug("foreach_patch  mismatch");
                    $parsedname = parse_patch_name($patch);
                    if (!patch_matches_spec($parsedname, $spec)) {
                        debug("foreach_patch  mismatch");
index 8fc3c3bd8784067feb62c4fb4b604904461c61e7..e31304a37512f10964d3d3dc02a46c86cf66908a 100755 (executable)
@@ -57,11 +57,15 @@ foreach $sort (@sort) {
 
 our %patches;
 
 
 our %patches;
 
+use Data::Dumper;
+
 foreach_patch($relatedto || $leaves || !$spec ? { } : $spec, 
              $deleted || $deleted_only, 
              [qw(B_deps +included)],
              sub { 
                  my ($patch,$parsedname,$meta) = @_;
 foreach_patch($relatedto || $leaves || !$spec ? { } : $spec, 
              $deleted || $deleted_only, 
              [qw(B_deps +included)],
              sub { 
                  my ($patch,$parsedname,$meta) = @_;
+
+print Dumper($parsedname);
                  $patches{$patch}{Meta} = $meta;
                  $patches{$patch}{ParsedName} = $parsedname;
                  $patches{$patch}{Deps} =
                  $patches{$patch}{Meta} = $meta;
                  $patches{$patch}{ParsedName} = $parsedname;
                  $patches{$patch}{Deps} =
@@ -187,7 +191,10 @@ foreach my $p (@output) {
     my $v = $patches{$p};
     my $pa = $v->{ParsedName};
     my ($msgkind, $msg) = git_get_object("$pa->{Ref}:.topbloke/msg");
     my $v = $patches{$p};
     my $pa = $v->{ParsedName};
     my ($msgkind, $msg) = git_get_object("$pa->{Ref}:.topbloke/msg");
-    die "$p $msgkind ?" unless $msgkind eq 'blob';
+    if ($msgkind ne 'blob') {
+       warn "$p $msgkind ?";
+       next;
+    }
     my $subject =
        $msg =~ m/^Subject:\s*(?:\[[^][]*\]\s*)?(.*\S)\s*$/mi
        ? $1 : "[no subject]";  
     my $subject =
        $msg =~ m/^Subject:\s*(?:\[[^][]*\]\s*)?(.*\S)\s*$/mi
        ? $1 : "[no subject]";