This is an automated email from the git hooks/post-receive script. jamessan pushed a commit to branch master in repository devscripts.
commit 2d6a8bb3e2f9723f87d02eecf12deafd6035b6e3 Author: James McCoy <[email protected]> Date: Wed Oct 29 23:43:38 2014 -0400 mk-origtargz: Warn about unmatched Files-Excluded patterns Closes: #766641 Signed-off-by: James McCoy <[email protected]> --- debian/changelog | 2 ++ scripts/mk-origtargz.pl | 25 ++++++++++++++++++------- test/test_mk-origtargz | 24 ++++++++++++++++++++++++ 3 files changed, 44 insertions(+), 7 deletions(-) diff --git a/debian/changelog b/debian/changelog index bbee55a..8f8ce7f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -6,6 +6,8 @@ devscripts (2.14.11) UNRELEASED; urgency=medium [ James McCoy ] * debcommit: Correctly show --strip-message is the default in --help. (Closes: #766885) + * mk-origtargz: Warn about unmatched Files-Excluded patterns. (Closes: + #766641) -- Paul Wise <[email protected]> Sun, 19 Oct 2014 17:27:24 +0800 diff --git a/scripts/mk-origtargz.pl b/scripts/mk-origtargz.pl index 6419900..1723135 100755 --- a/scripts/mk-origtargz.pl +++ b/scripts/mk-origtargz.pl @@ -420,13 +420,22 @@ if (@exclude_globs) { chomp @files; # find out what to delete - my @exclude_regexes = map { glob_to_regex($_) } @exclude_globs; - my $regex = '^(?:[^/]*/)?' # Possible leading directory, ignore it - . '(?:' . join('|', @exclude_regexes) . ')' # User patterns - . '(?:/.*)?$'; # Possible trailing / for a directory + my @exclude_info = map { { glob => $_, used => 0, regex => glob_to_regex($_) } } @exclude_globs; for my $filename (@files) { - if ($filename =~ m/$regex/) { - push @to_delete, $filename; + for my $info (@exclude_info) { + if ($filename =~ m@^(?:[^/]*/)? # Possible leading directory, ignore it + (?:$info->{regex}) # User pattern + (?:/.*)?$ # Possible trailing / for a directory + @x) { + push @to_delete, $filename; + $info->{used} = 1; + } + } + } + + for my $info (@exclude_info) { + if (!$info->{used}) { + warn "No files matched excluded pattern: $info->{glob}\n"; } } @@ -559,7 +568,9 @@ sub glob_to_regex { for my $c ($glob =~ m/(.)/gs) { if ($c eq '.' || $c eq '(' || $c eq ')' || $c eq '|' || $c eq '+' || $c eq '^' || $c eq '$' || $c eq '@' || $c eq '%' || - $c eq '{' || $c eq '}' || $c eq '[' || $c eq ']') { + $c eq '{' || $c eq '}' || $c eq '[' || $c eq ']' || + # Escape '#' since we're using /x in the pattern match + $c eq '#') { $regex .= "\\$c"; } elsif ($c eq '*') { diff --git a/test/test_mk-origtargz b/test/test_mk-origtargz index 1bf4083..ad5a729 100755 --- a/test/test_mk-origtargz +++ b/test/test_mk-origtargz @@ -134,6 +134,18 @@ END } +makeUnmatchedExcludeCopyright() { + cat <<'END' > $TMPDIR/foo/debian/copyright +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Files-Excluded: exclude-this* + .exclude-this* + exclude-dir1 + exclude-dir2 + ;?echo?strange-file;?# + nomatch +END +} + expected_stderr_after_removal="WARNING: Files-Excluded pattern (exclude-dir2/) should not have a trailing /" expected_files_after_removal=$(sort <<END @@ -516,4 +528,16 @@ $PROGNAME: error: tar --list --auto-compress --file ../foo_0.1.orig.tar.xz gave ../foo-0.1.tar.gz --repack --compression xz } +testUnmatchedExclusion() { + makeTarBall gz + makeDebianDir + makeUnmatchedExcludeCopyright + run_mk_origtargz foo "No files matched excluded pattern: nomatch" \ + "Successfully repacked ../foo-0.1.tar.gz as ../foo_0.1.orig.tar.gz, deleting 19 files from it." \ + ../foo-0.1.tar.gz + assertTrue "result does not exist" "[ -e $TMPDIR/foo_0.1.orig.tar.gz ]" + assertType application/gzip $TMPDIR/foo_0.1.orig.tar.gz + assertEquals "file contents" "$expected_files_after_removal" "$(tar taf $TMPDIR/foo_0.1.orig.tar.gz | sort)" +} + . shunit2 -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/collab-maint/devscripts.git _______________________________________________ devscripts-devel mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/devscripts-devel
