diff options
author | Ian Jackson <ijackson@chiark.greenend.org.uk> | 2019-06-29 00:11:49 +0100 |
---|---|---|
committer | Ian Jackson <ijackson@chiark.greenend.org.uk> | 2019-06-29 00:52:30 +0100 |
commit | 06d4233815988df7f7583ef16444ed84dc5d8a58 (patch) | |
tree | 7ed31c49eafaf4d87460e6fa7faf602d8e0376f2 /Debian | |
parent | cd800af2e4ca8fcf72e17555472af9aa37000b3e (diff) |
Dgit.pm: Move read-tree wrappers from git-debrebase
No functional change other than to no longer honour @git.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Diffstat (limited to 'Debian')
-rw-r--r-- | Debian/Dgit.pm | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/Debian/Dgit.pm b/Debian/Dgit.pm index 912a524..f1ea1e8 100644 --- a/Debian/Dgit.pm +++ b/Debian/Dgit.pm @@ -60,6 +60,8 @@ BEGIN { git_for_each_tag_referring is_fast_fwd git_check_unmodified git_reflog_action_msg git_update_ref_cmd + rm_subdir_cached read_tree_subdir + read_tree_debian read_tree_upstream make_commit_text reflog_cache_insert reflog_cache_lookup $package_re $component_re $deliberately_re @@ -678,6 +680,35 @@ sub git_update_ref_cmd { return qw(git update-ref -m), $msg, @_; } +sub rm_subdir_cached ($) { + my ($subdir) = @_; + runcmd qw(git rm --quiet -rf --cached --ignore-unmatch), $subdir; +} + +sub read_tree_subdir ($$) { + my ($subdir, $new_tree_object) = @_; + rm_subdir_cached $subdir; + runcmd qw(git read-tree), "--prefix=$subdir/", $new_tree_object; +} + +sub read_tree_debian ($) { + my ($treeish) = @_; + read_tree_subdir 'debian', "$treeish:debian"; + rm_subdir_cached 'debian/patches'; +} + +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. + my $debian = + $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; + rm_subdir_cached 'debian/patches' unless $keep_patches; +} + sub changedir ($) { my ($newdir) = @_; printdebug "CD $newdir\n"; |