#!/usr/bin/perl -- # # Show svn pl -v for all files at a directory of a 1st argment. # Fri,04 Sep,2009 # Copyright(C)2009 G-HAL (fenix.ne.jp) # use strict; use File::Find; sub a_file_parser { my $filename = $_[0]; if ($filename =~ /^(|.*\/)(\.\.|\.svn)(|\/.*)$/) { return; } my $type_dir = 0; if (-d $filename) { $type_dir = 1; } my @ret = `env LC_ALL=C svn pl -v \"$filename\" 2>&1`; my $result = (0 == $?) ? '' : '?'; { # Convert result strings to $result my $last_line_type = 0; # 0: none, 1: propname, 2: propval, 3: et-al. my $skip_propval = 0; foreach my $i (@ret) { if ($i =~ /^svn: warning: /) { $result = $result .'?'; } elsif ($i =~ /^ ([^ ].*)$/) { my $propname = $1; if ($propname =~ /^svn:(mergeinfo|executable)$/) { $skip_propval = 1; } else { $skip_propval = 0; } if (0 == $last_line_type) { } elsif (1 == $last_line_type) { $result = $result . ','; } elsif (2 == $last_line_type) { $result = $result . ','; } elsif (3 == $last_line_type) { } $result = $result . $propname; $last_line_type = 1; } elsif ($i =~ /^ ([^ ].*)$/) { my $propval = $1; if (! $skip_propval) { if (0 == $last_line_type) { } elsif (1 == $last_line_type) { $result = $result . '='; } elsif (2 == $last_line_type) { $result = $result . '='; } elsif (3 == $last_line_type) { } $result = $result .'"'. $propval .'"'; } $last_line_type = 2; } else { $last_line_type = 3; } } } if ($type_dir) { print '