return $&;
}
-sub rm_subdir_cached ($) {
- my ($subdir) = @_;
- runcmd @git, qw(rm --quiet -rf --cached --ignore-unmatch), $subdir;
-}
-
-sub read_tree_subdir ($$) {
- my ($subdir, $new_tree_object) = @_;
- rm_subdir_cached $subdir;
- runcmd @git, qw(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 @git, qw(write-tree --prefix=debian/);
- runcmd @git, qw(read-tree), $treeish;
- read_tree_subdir 'debian', $debian;
- rm_subdir_cached 'debian/patches' unless $keep_patches;
-};
-
-sub make_commit ($$) {
- my ($parents, $message_paras) = @_;
- my $tree = cmdoutput @git, qw(write-tree);
- my @cmd = (@git, qw(commit-tree), $tree);
- push @cmd, qw(-p), $_ foreach @$parents;
- push @cmd, qw(-m), $_ foreach @$message_paras;
- return cmdoutput @cmd;
-}
-
our @snag_force_opts;
sub snag ($$;@) {
my ($tag,$msg) = @_; # ignores extra args, for benefit of keycommits
open C, ">", "../mcommit" or confess "$!";
print C $commit or confess "$!";
close C or confess "$!";
- $build = cmdoutput @git, qw(hash-object -w -t commit ../mcommit);
+ $build = hash_commit '../mcommit';
}
$result = $build;
mwrecknote($wrecknotes, 'merged-result', $result);
stitch($dangling_head, $ffq_prev, $gdrlast, $ffq_prev_commitish, $prose);
}
-sub resolve_upstream_version ($$) {
- my ($new_upstream, $upstream_version) = @_;
-
- my $used = $new_upstream;
- if (!defined $new_upstream) {
- my @tried;
- $new_upstream = upstream_commitish_search $upstream_version, \@tried;
- if (!length $new_upstream) {
- fail f_
- "Could not determine appropriate upstream commitish.\n".
- " (Tried these tags: %s)\n".
- " Check version, and specify upstream commitish explicitly.",
- "@tried";
- }
- $used = $tried[-1];
- }
- $new_upstream = git_rev_parse $new_upstream;
-
- return ($new_upstream, $used);
- # used is a human-readable idea of what we found
-}
-
sub cmd_new_upstream () {
# automatically and unconditionally launders before rebasing
# if rebase --abort is used, laundering has still been done