diff options
author | Ian Jackson <ijackson@chiark.greenend.org.uk> | 2017-01-16 01:11:51 +0000 |
---|---|---|
committer | Ian Jackson <ijackson@chiark.greenend.org.uk> | 2017-01-16 01:25:19 +0000 |
commit | 8d2e5d2192aeee25890376bbcae68cdef891ff5a (patch) | |
tree | e505202b0e04db8bc8b3ce015cb7ffa7ee80e37c | |
parent | a2dcf75241e1c3b8e9961bd7905505e11908567d (diff) |
gitattributes: Issue a warning on un-defused .gitattributes
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
-rwxr-xr-x | dgit | 34 | ||||
-rw-r--r-- | dgit.7 | 10 |
2 files changed, 44 insertions, 0 deletions
@@ -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"; } @@ -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 |