2018-08-06 22:31:10 +03:00
|
|
|
|
|
|
|
resolvemsg="
|
|
|
|
$(gettext 'Resolve all conflicts manually, mark them as resolved with
|
|
|
|
"git add/rm <conflicted_files>", then run "git rebase --continue".
|
|
|
|
You can instead skip this commit: run "git rebase --skip".
|
|
|
|
To abort and get back to the state before "git rebase", run "git rebase --abort".')
|
|
|
|
"
|
|
|
|
|
|
|
|
write_basic_state () {
|
|
|
|
echo "$head_name" > "$state_dir"/head-name &&
|
|
|
|
echo "$onto" > "$state_dir"/onto &&
|
|
|
|
echo "$orig_head" > "$state_dir"/orig-head &&
|
git-rebase, sequencer: extend --quiet option for the interactive machinery
While 'quiet' and 'interactive' may sound like antonyms, the interactive
machinery actually has logic that implements several
interactive_rebase=implied cases (--exec, --keep-empty, --rebase-merges)
which won't pop up an editor. The rewrite of interactive rebase in C
added a quiet option, though it only turns stats off. Since we want to
make the interactive machinery also take over for git-rebase--merge, it
should fully implement the --quiet option.
git-rebase--interactive was already somewhat quieter than
git-rebase--merge and git-rebase--am, possibly because cherry-pick has
just traditionally been quieter. As such, we only drop a few
informational messages -- "Rebasing (n/m)" and "Successfully rebased..."
Also, for simplicity, remove the differences in how quiet and verbose
options were recorded. Having one be signalled by the presence of a
"verbose" file in the state_dir, while the other was signalled by the
contents of a "quiet" file was just weirdly inconsistent. (This
inconsistency pre-dated the rewrite into C.) Make them consistent by
having them both key off the presence of the file.
Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2018-12-11 19:11:36 +03:00
|
|
|
test t = "$GIT_QUIET" && : > "$state_dir"/quiet
|
2018-08-06 22:31:10 +03:00
|
|
|
test t = "$verbose" && : > "$state_dir"/verbose
|
|
|
|
test -n "$strategy" && echo "$strategy" > "$state_dir"/strategy
|
|
|
|
test -n "$strategy_opts" && echo "$strategy_opts" > \
|
|
|
|
"$state_dir"/strategy_opts
|
|
|
|
test -n "$allow_rerere_autoupdate" && echo "$allow_rerere_autoupdate" > \
|
|
|
|
"$state_dir"/allow_rerere_autoupdate
|
|
|
|
test -n "$gpg_sign_opt" && echo "$gpg_sign_opt" > "$state_dir"/gpg_sign_opt
|
|
|
|
test -n "$signoff" && echo "$signoff" >"$state_dir"/signoff
|
2018-12-10 22:04:58 +03:00
|
|
|
test -n "$reschedule_failed_exec" && : > "$state_dir"/reschedule-failed-exec
|
2018-08-06 22:31:10 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
apply_autostash () {
|
|
|
|
if test -f "$state_dir/autostash"
|
|
|
|
then
|
|
|
|
stash_sha1=$(cat "$state_dir/autostash")
|
|
|
|
if git stash apply $stash_sha1 >/dev/null 2>&1
|
|
|
|
then
|
|
|
|
echo "$(gettext 'Applied autostash.')" >&2
|
|
|
|
else
|
|
|
|
git stash store -m "autostash" -q $stash_sha1 ||
|
|
|
|
die "$(eval_gettext "Cannot store \$stash_sha1")"
|
|
|
|
gettext 'Applying autostash resulted in conflicts.
|
|
|
|
Your changes are safe in the stash.
|
|
|
|
You can run "git stash pop" or "git stash drop" at any time.
|
|
|
|
' >&2
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
move_to_original_branch () {
|
|
|
|
case "$head_name" in
|
|
|
|
refs/*)
|
|
|
|
message="rebase finished: $head_name onto $onto"
|
|
|
|
git update-ref -m "$message" \
|
|
|
|
$head_name $(git rev-parse HEAD) $orig_head &&
|
|
|
|
git symbolic-ref \
|
|
|
|
-m "rebase finished: returning to $head_name" \
|
|
|
|
HEAD $head_name ||
|
|
|
|
die "$(eval_gettext "Could not move back to \$head_name")"
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
}
|
|
|
|
|
|
|
|
output () {
|
|
|
|
case "$verbose" in
|
|
|
|
'')
|
|
|
|
output=$("$@" 2>&1 )
|
|
|
|
status=$?
|
|
|
|
test $status != 0 && printf "%s\n" "$output"
|
|
|
|
return $status
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
"$@"
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
}
|