On Mon, Jul 19, 2004 at 04:21:40PM +0200, Klaus Rennecke <kre@tigris.org> wrote:
> pwc@u.washington.edu wrote:
>
> >[...]
> >I have over a thousand files in which we have
> >been using ID when we need to verify that the
> >user has a correct version. The need to do a
> >propset for so many files is onerous
> >[...]
>
> What is wrong with something like
>
> $ find . \( -type d -a -name .svn -a -prune \) \
> -o \( -type f -a -print0 \) | \
> xargs -0 svn propset svn:keywords Id
>
> in a working copy? Takes a few seconds for the 1108 files in the current
> subversion source tree. Combine with -a -name \*.[ch] or similar in the
> second parenthesized expression to limit to specific file types.
>
> See find(1L), xargs(1L).
>
Or here's a perl script that'll list only text files that already have
the '$Id' keyword in them:
#!/usr/bin/perl
use strict;
use warnings;
use File::Find;
use Getopt::Std;
our $opt_0;
getopts("0");
my $term = "\n";
if ($opt_0){
$term = "\0";
}
die "usage: find_id [-0] DIR ...\n" unless @ARGV;
find(\&process, @ARGV);
sub process {
return unless -f $_; # only interested in plain files
return unless -T $_; # only interested in text files
return if ($File::Find::name =~ m|/\.svn/|);
open FILE, $_;
while (<FILE>){
if (/\$Id/){
print $File::Find::name, $term;
last;
}
}
close FILE;
}
You can then save and examine the output or pipe it directly to xargs.
If your filenames might have spaces, use the '-0' option to this script
(as well as to xargs).
Someone familiar with the Perl bindings could probably add the 'svn propset'
directly to the script as well...
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org
Received on Mon Jul 19 19:16:10 2004