Alien-SVN
view release on metacpan or search on metacpan
src/subversion/tools/client-side/svn-graph.pl view on Meta::CPAN
$tracking{$path} = $revision;
}
$path =~ s:/[^/]*$::;
} until ($path eq '');
}
}
# Write a descriptor for the graph in GraphViz .dot format to stdout.
sub write_graph_descriptor
{
# Begin writing the graph descriptor.
print "digraph tree {\n";
print "\tgraph [bgcolor=white];\n";
print "\tnode [color=lightblue2, style=filled];\n";
print "\tedge [color=black, labeljust=r];\n";
print "\n";
# Retrieve the requested history.
$ra->get_log(['/'], $startrev, $youngest, 0, 1, 0, \&process_revision);
# Now ensure that everything is linked.
foreach my $codeline_change (keys %codeline_changes_forward)
{
# If this node is not the first in its codeline chain, and it isn't
# the source of a copy, it won't be the source of an edge
if (exists($codeline_changes_back{$codeline_change}) &&
!exists($copysource{$codeline_change}))
{
next;
}
# If this node is the first in its chain, or the source of
# a copy, then we'll print it, and then find the next in
# the chain that needs to be printed too
if (!exists($codeline_changes_back{$codeline_change}) or
exists($copysource{$codeline_change}) )
{
print "\t\"$codeline_change\" -> ";
my $nextchange = $codeline_changes_forward{$codeline_change};
my $changecount = 1;
while (defined($nextchange))
{
if (exists($copysource{$nextchange}) or
!exists($codeline_changes_forward{$nextchange}) )
{
print "\"$nextchange\" [label=\"$changecount change";
if ($changecount > 1)
{
print 's';
}
print '"];';
last;
}
$changecount++;
$nextchange = $codeline_changes_forward{$nextchange};
}
print "\n";
}
}
# Complete the descriptor (delaying write of font size to avoid
# inheritance by any subgraphs).
#my $title = "Family Tree\n$startpath, $startrev through $youngest";
#print "\tgraph [label=\"$title\", fontsize=18];\n";
print "}\n";
}
( run in 3.705 seconds using v1.01-cache-2.11-cpan-5735350b133 )