summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Jackson <ijackson@chiark.greenend.org.uk>2023-09-02 12:55:36 +0100
committerIan Jackson <ijackson@chiark.greenend.org.uk>2023-09-02 12:58:26 +0100
commit309e67d7fc8ba4253d3f6bbfe715d1962592697e (patch)
tree1c027691a35988d7edb05dad297c26d208edc83e
parent7109bc566b2aa72fd49a383ef12c5d87b4f95dea (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-xdgit17
1 files changed, 16 insertions, 1 deletions
diff --git a/dgit b/dgit
index 36055ed..122651d 100755
--- a/dgit
+++ b/dgit
@@ -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)