diff options
author | Ian Jackson <ijackson@chiark.greenend.org.uk> | 2023-09-02 12:55:36 +0100 |
---|---|---|
committer | Ian Jackson <ijackson@chiark.greenend.org.uk> | 2023-09-02 12:58:26 +0100 |
commit | 309e67d7fc8ba4253d3f6bbfe715d1962592697e (patch) | |
tree | 1c027691a35988d7edb05dad297c26d208edc83e | |
parent | 7109bc566b2aa72fd49a383ef12c5d87b4f95dea (diff) |
Detect tar-ignore in d/s/options
Distinguish situations where it's going to fail (until #908747 is
fixed), from ones where we are probably working with a defective tree
produced by importing a defective .dsc produced from a non-dgit
upload.
Closes: #1050709
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
-rwxr-xr-x | dgit | 17 |
1 files changed, 16 insertions, 1 deletions
@@ -7029,13 +7029,28 @@ sub build_or_push_prep_early () { } sub build_or_push_prep_modes () { - my ($format) = get_source_format(); + my ($format, $fopts) = get_source_format(); determine_whether_split_brain($format); fail __ "dgit: --include-dirty is not supported with split view". " (including with view-splitting quilt modes)" if do_split_brain() && $includedirty; + if (grep m{^tar-ignore$}, @$fopts) { + if ((cmdoutput qw(git ls-files :.gitignore :*/.gitignore)) ne '') { + # The source package won't be faithful; bail with an explanation. + fail __ <<'END'; +tree has .gitignore(s) but debian/source/options has 'tar-ignore' +Try 'tar-ignore=.git' in d/s/options instead. (See #908747.) +END + } else { + print STDERR f_ <<'END', $us; +%s: warning: debian/source/options contains bare 'tar-ignore' +This can cause .gitignore files to be improperly omitted. See #908747. +END + } + } + if (madformat_wantfixup $format and $quilt_mode =~ m/baredebian$/) { ($quilt_upstream_commitish, $quilt_upstream_commitish_used, $quilt_upstream_commitish_message) |