Christopher Baines writes ("Bug#793671: dgit clone python-numpy experimental
fails"):
> Thanks for your prompt response and patch!
You're welcome. I'm sorry it wsn't correct. I should have been more
thorough.
> I have tried it out, and it seems to work, however there is a similar
> looking issue when building the package.
Thanks very much for your quick response and retest. I think I have
got all the relevant places this time.
I have updated the git branch (fast forward for now, although it will
not be an ancestor of 1.1):
http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=dgit.git;a=shortlog;h=refs/heads/fix.793671
and the revised patch is below.
Thanks,
Ian.
diff --git a/Debian/Dgit.pm b/Debian/Dgit.pm
index edb338c..ba3e688 100644
--- a/Debian/Dgit.pm
+++ b/Debian/Dgit.pm
@@ -25,7 +25,7 @@ BEGIN {
initdebug enabledebug enabledebuglevel
printdebug debugcmd
$debugprefix *debuglevel *DEBUG
- shellquote printcmd);
+ shellquote printcmd messagequote);
# implicitly uses $main::us
%EXPORT_TAGS = ( policyflags => [qw(NOFFCHECK FRESHREPO)] );
@EXPORT_OK = @{ $EXPORT_TAGS{policyflags} };
@@ -73,6 +73,16 @@ sub printdebug {
print DEBUG $debugprefix, @_ or die $! if $debuglevel>0;
}
+sub messagequote ($) {
+ local ($_) = @_;
+ s{\\}{\\\\}g;
+ s{\n}{\\n}g;
+ s{\x08}{\\b}g;
+ s{\t}{\\t}g;
+ s{[\000-\037\177]}{ sprintf "\\x%02x", ord $& }ge;
+ $_;
+}
+
sub shellquote {
my @out;
local $_;
diff --git a/debian/changelog b/debian/changelog
index e9b934b..e77e8f9 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+dgit (1.1~~) UNRELEASED; urgency=low
+
+ * When source package contains things called .git (even files, and even
+ in subdirectories), remove them. Closes:#793671.
+
+ --
+
dgit (1.0) unstable; urgency=medium
Improvements:
diff --git a/dgit b/dgit
index 9e2e66e..550d8e1 100755
--- a/dgit
+++ b/dgit
@@ -1139,6 +1139,22 @@ sub git_write_tree () {
return $tree;
}
+sub remove_stray_gits () {
+ my @gitscmd = qw(find -name .git -prune -print0);
+ debugcmd "|",@gitscmd;
+ open GITS, "-|", @gitscmd or failedcmd @gitscmd;
+ {
+ local $/="\0";
+ while (<GITS>) {
+ chomp or die;
+ print STDERR "$us: warning: removing from source package: ",
+ (messagequote $_), "\n";
+ rmtree $_;
+ }
+ }
+ $!=0; $?=0; close GITS or failedcmd @gitscmd;
+}
+
sub mktree_in_ud_from_only_subdir () {
# changes into the subdir
my (@dirs) = <*/.>;
@@ -1146,7 +1162,8 @@ sub mktree_in_ud_from_only_subdir () {
$dirs[0] =~ m#^([^/]+)/\.$# or die;
my $dir = $1;
changedir $dir;
- fail "source package contains .git directory" if stat_exists '.git';
+
+ remove_stray_gits();
mktree_in_ud_here();
my $format=get_source_format();
if (madformat($format)) {
@@ -2345,6 +2362,7 @@ sub quiltify ($$) {
# should be contained within debian/patches.
changedir '../fake';
+ remove_stray_gits();
mktree_in_ud_here();
rmtree '.pc';
runcmd @git, 'add', '.';
--
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]