#! /usr/bin/perl

# Remove indications that added files were copied in subversion
# working copies.

# Default to operating on '.'.
if ($#ARGV == -1) {
    @ARGV = (".");
}

# Find all the .svn directories.
$command = "find " . join(' ', @ARGV) . " -name .svn |";
open(FIND, $command) ||
    die "Error executing '$command': $!\n";

while (<FIND>) {
    chomp;
    $entries_file = $_ . '/entries';
    # Get the contents of the entries file.
    open(ENTRIES, $entries_file) || die;
    @entries = <ENTRIES>;
    close ENTRIES;
    # If the entries file mentions a copied file, process it.
    if (grep(/copied="true"/, @entries) > 0)
    {
	$new_file = $entries_file . ".tmp";
	$backup_file = $entries_file . "~";
	open(NEW, ">$new_file") || die;
	foreach $l (@entries) {
	    $l =~ s/copied="true"//;
	    $l =~ s/copyfrom-rev="\d+"//;
	    $l =~ s/copyfrom-url="[^"]+"//;
            print NEW $l;
        }
        ($x, $x, $mode) = stat($entries_file);
        chmod($mode, $new_file) || die;
        rename($entries_file, $backup_file) || die;
        rename($new_file, $entries_file) || die;
        print "$entries_file updated.\n";
    }
}


