use strict;
use warnings;
use SVN::Client;
use File::Path qw(rmtree);
my $repo = 'file:///nfs/pdx/disks/mdo_cttr_prod/dev/tmp/repo_test/repo1';
my $path = '/nfs/pdx/disks/mdo_cttr_prod/dev/tmp/repo_test/wc1';
my $client = new SVN::Client(
auth => [ SVN::Client::get_username_provider() ],
);
# checkout a working copy
my $rev = $client->checkout( $repo, $path, 'HEAD', 0 );
# eliminate the client
$client = undef;
# attempt to remove wc
# this produces the warning for being unable to remove directory
rmtree $path;
####
cannot remove directory for /nfs/pdx/disks/mdo_cttr_prod/dev/tmp/repo_test/wc1/.svn: Directory not empty at tmp.pl line 21.
cannot remove directory for /nfs/pdx/disks/mdo_cttr_prod/dev/tmp/repo_test/wc1: Directory not empty at tmp.pl line 21.
####
plxcf4060> ls -alrt wc1/.svn
total 132
-rw-r----- 1 rptrdev rptrusrs 122880 Oct 6 10:54 .nfs000000000711c5da000000c9
drwxr-s--- 2 rptrdev rptrusrs 4096 Oct 6 10:54 .
drwxr-s--- 3 rptrdev rptrusrs 4096 Oct 6 10:54 ..
####
# Currently, the below code is unable to release the sqlite
# database file used to store data because SVN::Client module has
# no perl code for releasing the lock it aquires on the .svn
# working copy db.wc file. In order to accomplish this, it seems
# that svn_wc_context_destroy must be called. This seems to be
# built into the XS code written for the perl bindings, but there
# does not seem to be a perl binding written to utilize it. Until
# this is resolved, the only way to release the lock on the
# database file is to terminate the process that acquired it.