[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Discussion of uscan enhancement 1 (Was: uscan enhancement take 3: script hook)



On Tue, Sep 04, 2012 at 07:14:21PM +0200, Andreas Tille wrote:

> You might like to check my last commit to
>     git://git.debian.org/git/users/tille/devscripts.git

(currently 4b3a4a6310ff1ff80ac1498cf92a99817c75ffce)

> and check whether it matches your expectations when injecting
> Files-Excluded field into debian/copyright.

At first view, your changes correct
- "foo" should match "foo", even if a directory.
but do not correct
- "foo" should not match "bar/foo", even if a file.
- "foo/" should never match, even if "foo" is a directory.

DEP5 does not distinguish files from directories, or whether paths
contain a slash. Why should you do these tests in your code? I suggest
the following patch.

diff --git a/scripts/uscan.pl b/scripts/uscan.pl
index 649f822..34e31a9 100755
--- a/scripts/uscan.pl
+++ b/scripts/uscan.pl
@@ -1494,17 +1494,9 @@ EOF
                 print STDERR "Error: $main_source_dir is no directory";
             }
             my $nfiles_before = `find $main_source_dir | wc -l`;
-            foreach (grep {/\//} split /\s+/, $data->{"files-excluded"}) {
-                # delete trailing '/' because otherwise find -path will fail
-                s?/+$?? ;
-                # use rm -rf to enable deleting non-empty directories
+            foreach (split /\s+/, $data->{"files-excluded"}) {
                 `find "$main_source_dir" -path "$main_source_dir/$_" -print0 | xargs -0 rm -rf`;
             };
-            foreach (grep {/^[^\/]+$/} split /\s+/, $data->{"files-excluded"}) {
-                `find "$main_source_dir" -type f -name "$_" -delete`;
-                # the statement above does not delete directories - just do it now
-                `rm -rf "$main_source_dir/$_" ` if ( -d "$main_source_dir/$_" ) ;
-            };
             my $nfiles_after = `find $main_source_dir | wc -l`;
             if ( $nfiles_before == $nfiles_after && ! $exclude__MACOSX ) {
                 print "-- Source tree remains identical - no need for repacking.\n" if $verbose;


Reply to: