summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xdgit34
-rw-r--r--dgit.710
2 files changed, 44 insertions, 0 deletions
diff --git a/dgit b/dgit
index be11a49..3d81558 100755
--- a/dgit
+++ b/dgit
@@ -144,6 +144,7 @@ our %opts_cfg_insertpos = map {
sub parseopts_late_defaults();
sub setup_gitattrs(;$);
+sub check_gitattrs($$);
our $keyid;
@@ -3256,6 +3257,8 @@ END
lrfetchref_used lrfetchref();
+ check_gitattrs($hash, "fetched source tree");
+
unshift @end, $del_lrfetchrefs;
return $hash;
}
@@ -3370,6 +3373,35 @@ sub setup_new_tree () {
setup_gitattrs();
}
+sub check_gitattrs ($$) {
+ my ($treeish, $what) = @_;
+
+ return if is_gitattrs_setup;
+
+ local $/="\0";
+ my @cmd = (@git, qw(ls-tree -lrz --), "${treeish}:");
+ debugcmd "|",@cmd;
+ my $gafl = new IO::File;
+ open $gafl, "-|", @cmd or die $!;
+ while (<$gafl>) {
+ chomp or die;
+ s/^\d+\s+\w+\s+\w+\s+(\d+)\t// or die;
+ next if $1 == 0;
+ next unless m{(?:^|/)\.gitattributes$};
+
+ # oh dear, found one
+ print STDERR <<END;
+dgit: warning: $what contains .gitattributes
+dgit: .gitattributes have not been defused. See GITATTRIBUTES in dgit(7).
+END
+ close $gafl;
+ return;
+ }
+ # tree contains no .gitattributes files
+ $?=0; $!=0; close $gafl or failedcmd @cmd;
+}
+
+
sub multisuite_suite_child ($$$) {
my ($tsuite, $merginputs, $fn) = @_;
# in child, sets things up, calls $fn->(), and returns undef
@@ -6103,6 +6135,8 @@ sub import_dsc_result {
my ($dstref, $newhash, $what_log, $what_msg) = @_;
my @cmd = (@git, qw(update-ref -m), $what_log, $dstref, $newhash);
runcmd @cmd;
+ check_gitattrs($newhash, "source tree");
+
progress "dgit: import-dsc: $what_msg";
}
diff --git a/dgit.7 b/dgit.7
index acc7cc1..09bb8f4 100644
--- a/dgit.7
+++ b/dgit.7
@@ -227,6 +227,16 @@ and dgit setup-new-tree
disable transforming gitattributes
by default,
by creating a .git/info/attributes.
+When fetching or importing sources
+dgit warns if it finds .gitattributes file
+and the transforming gitattributes have not been defused
+(e.g. in the case of a tree not made with dgit clone).
+
+See
+.B dgit setup-new-tree
+and
+.B dgit setup-gitattributes
+in dgit(1).
.SH PACKAGE SOURCE FORMATS
If you are not the maintainer, you do not need to worry about the
source format of the package. You can just make changes as you like