mirror of
https://github.com/git/git
synced 2024-08-26 19:19:18 +00:00
![Sergey Vlasov](/assets/img/avatar_default.png)
Adding dependencies on included files to the generated man pages is wrong - includes are processed by asciidoc, therefore the intermediate Docbook XML files really depend on included files. Because of these wrong dependencies the man pages were not rebuilt properly if the intermediate XML files were left in the tree. Signed-off-by: Sergey Vlasov <vsu@altlinux.ru> Signed-off-by: Junio C Hamano <junkio@cox.net>
47 lines
968 B
Perl
Executable file
47 lines
968 B
Perl
Executable file
#!/usr/bin/perl
|
|
|
|
my %include = ();
|
|
my %included = ();
|
|
|
|
for my $text (<*.txt>) {
|
|
open I, '<', $text || die "cannot read: $text";
|
|
while (<I>) {
|
|
if (/^include::/) {
|
|
chomp;
|
|
s/^include::\s*//;
|
|
s/\[\]//;
|
|
$include{$text}{$_} = 1;
|
|
$included{$_} = 1;
|
|
}
|
|
}
|
|
close I;
|
|
}
|
|
|
|
# Do we care about chained includes???
|
|
my $changed = 1;
|
|
while ($changed) {
|
|
$changed = 0;
|
|
while (my ($text, $included) = each %include) {
|
|
for my $i (keys %$included) {
|
|
# $text has include::$i; if $i includes $j
|
|
# $text indirectly includes $j.
|
|
if (exists $include{$i}) {
|
|
for my $j (keys %{$include{$i}}) {
|
|
if (!exists $include{$text}{$j}) {
|
|
$include{$text}{$j} = 1;
|
|
$included{$j} = 1;
|
|
$changed = 1;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
while (my ($text, $included) = each %include) {
|
|
if (! exists $included{$text} &&
|
|
(my $base = $text) =~ s/\.txt$//) {
|
|
print "$base.html $base.xml : ", join(" ", keys %$included), "\n";
|
|
}
|
|
}
|