linedep.pl #1

  • //
  • guest/
  • matthew_rice/
  • util/
  • cvs2p4/
  • extra/
  • linedep.pl
  • View
  • Commits
  • Open Download .zip Download (987 B)
#!/usr/bin/perl -w
#
# Use: linedep.pl <changes

my %deps = ();
$| = 1;

while (<>) {
    next if /^#/;
    @a = split /\001/;
    if ($a[3] ne 'dead' && $a[5] ne '-') {
	$a[4] = 'main' if $a[4] eq 'HEAD';
	for my $line (split /:/, $a[5]) {
	    $deps{$line}->{$a[4]} = 1;
	}
    }
}
print "dependencies:\n";
for (sort keys %deps) {
    print "$_: ", join(' ', keys %{$deps{$_}}), "\n";
}

print "\npossible import order:\n";
my %done = (main => 1);
while (keys %deps > 0) {
    my $changed = 0;
    for my $line (keys %deps) {
	for my $dep (keys %{$deps{$line}}) {
	    delete $deps{$line}->{$dep} if $done{$dep};
	}
	if (keys %{$deps{$line}} == 0) {
	    print "$line\n";
	    delete $deps{$line};
	    $done{$line} = 1;
	    $changed = 1;
  	}
    }
    if ($changed) {
	$broke = 0;
    } else {
	$broke++;
    }
    if ($broke == 10) {
        print "\nleft over dependencies:\n";
	for (sort keys %deps) {
    	    print "$_: ", join(' ', keys %{$deps{$_}}), "\n";
	}
	exit;
    }
}
# Change User Description Committed
#1 869 Matthew Rice Matt's cvs2p4 1.2.22 release