From: Ian Jackson Date: Sat, 29 Jun 2019 16:08:39 +0000 (+0100) Subject: Dgit.pm: read_tree_*: Treat '' as meaning 'delete this' X-Git-Tag: archive/debian/9.0~50 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=dgit.git;a=commitdiff_plain;h=c974b978761dfae45cf673ca0a7852f21bc39956 Dgit.pm: read_tree_*: Treat '' as meaning 'delete this' No functional change with existing callers. Signed-off-by: Ian Jackson --- diff --git a/Debian/Dgit.pm b/Debian/Dgit.pm index d60de77b..887fbb59 100644 --- a/Debian/Dgit.pm +++ b/Debian/Dgit.pm @@ -689,8 +689,11 @@ sub rm_subdir_cached ($) { sub read_tree_subdir ($$) { my ($subdir, $new_tree_object) = @_; + # If $new_tree_object is '', the subtree is deleted. + confess unless defined $new_tree_object; rm_subdir_cached $subdir; - runcmd qw(git read-tree), "--prefix=$subdir/", $new_tree_object; + runcmd qw(git read-tree), "--prefix=$subdir/", $new_tree_object + if length $new_tree_object; } sub read_tree_debian ($) { @@ -702,9 +705,10 @@ sub read_tree_debian ($) { sub read_tree_upstream ($;$$) { my ($treeish, $keep_patches, $tree_with_debian) = @_; # if $tree_with_debian is supplied, will use that for debian/ - # otherwise will save and restore it. + # otherwise will save and restore it. If $tree_with_debian + # is '' then debian/ is deleted. my $debian = - $tree_with_debian ? "$tree_with_debian:debian" + defined $tree_with_debian ? "$tree_with_debian:debian" : cmdoutput qw(git write-tree --prefix=debian/); runcmd qw(git read-tree), $treeish; read_tree_subdir 'debian', $debian;