From 8d2e5d2192aeee25890376bbcae68cdef891ff5a Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Mon, 16 Jan 2017 01:11:51 +0000 Subject: gitattributes: Issue a warning on un-defused .gitattributes Signed-off-by: Ian Jackson --- dgit | 34 ++++++++++++++++++++++++++++++++++ dgit.7 | 10 ++++++++++ 2 files changed, 44 insertions(+) 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 <(), 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 -- cgit v1.2.3