зеркало из https://github.com/microsoft/git.git
rebase -i: honor --rerere-autoupdate
Interactive rebase was ignoring '--rerere-autoupdate'. Fix this by reading it appropriate file when restoring the sequencer state for an interactive rebase and passing '--rerere-autoupdate' to merge and cherry-pick when rebasing with '--preserve-merges'. Reported-by: Junio C Hamano <gitster@pobox.com> Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
5fb415b57f
Коммит
9b6d7a6245
|
@ -281,7 +281,7 @@ pick_one () {
|
|||
|
||||
test -d "$rewritten" &&
|
||||
pick_one_preserving_merges "$@" && return
|
||||
output eval git cherry-pick \
|
||||
output eval git cherry-pick $allow_rerere_autoupdate \
|
||||
${gpg_sign_opt:+$(git rev-parse --sq-quote "$gpg_sign_opt")} \
|
||||
"$strategy_args" $empty_args $ff "$@"
|
||||
|
||||
|
@ -393,7 +393,8 @@ pick_one_preserving_merges () {
|
|||
merge_args="--no-log --no-ff"
|
||||
if ! do_with_author output eval \
|
||||
'git merge ${gpg_sign_opt:+"$gpg_sign_opt"} \
|
||||
$merge_args $strategy_args -m "$msg_content" $new_parents'
|
||||
$allow_rerere_autoupdate $merge_args \
|
||||
$strategy_args -m "$msg_content" $new_parents'
|
||||
then
|
||||
printf "%s\n" "$msg_content" > "$GIT_DIR"/MERGE_MSG
|
||||
die_with_patch $sha1 "$(eval_gettext "Error redoing merge \$sha1")"
|
||||
|
@ -401,7 +402,7 @@ pick_one_preserving_merges () {
|
|||
echo "$sha1 $(git rev-parse HEAD^0)" >> "$rewritten_list"
|
||||
;;
|
||||
*)
|
||||
output eval git cherry-pick \
|
||||
output eval git cherry-pick $allow_rerere_autoupdate \
|
||||
${gpg_sign_opt:+$(git rev-parse --sq-quote "$gpg_sign_opt")} \
|
||||
"$strategy_args" "$@" ||
|
||||
die_with_patch $sha1 "$(eval_gettext "Could not pick \$sha1")"
|
||||
|
|
10
sequencer.c
10
sequencer.c
|
@ -127,6 +127,7 @@ static GIT_PATH_FUNC(rebase_path_onto, "rebase-merge/onto")
|
|||
static GIT_PATH_FUNC(rebase_path_autostash, "rebase-merge/autostash")
|
||||
static GIT_PATH_FUNC(rebase_path_strategy, "rebase-merge/strategy")
|
||||
static GIT_PATH_FUNC(rebase_path_strategy_opts, "rebase-merge/strategy_opts")
|
||||
static GIT_PATH_FUNC(rebase_path_allow_rerere_autoupdate, "rebase-merge/allow_rerere_autoupdate")
|
||||
|
||||
static inline int is_rebase_i(const struct replay_opts *opts)
|
||||
{
|
||||
|
@ -1479,6 +1480,15 @@ static int read_populate_opts(struct replay_opts *opts)
|
|||
free(opts->gpg_sign);
|
||||
opts->gpg_sign = xstrdup(buf.buf + 2);
|
||||
}
|
||||
strbuf_reset(&buf);
|
||||
}
|
||||
|
||||
if (read_oneliner(&buf, rebase_path_allow_rerere_autoupdate(), 1)) {
|
||||
if (!strcmp(buf.buf, "--rerere-autoupdate"))
|
||||
opts->allow_rerere_auto = RERERE_AUTOUPDATE;
|
||||
else if (!strcmp(buf.buf, "--no-rerere-autoupdate"))
|
||||
opts->allow_rerere_auto = RERERE_NOAUTOUPDATE;
|
||||
strbuf_reset(&buf);
|
||||
}
|
||||
|
||||
if (file_exists(rebase_path_verbose()))
|
||||
|
|
|
@ -141,5 +141,8 @@ test_rerere_autoupdate () {
|
|||
|
||||
test_rerere_autoupdate
|
||||
test_rerere_autoupdate -m
|
||||
GIT_SEQUENCE_EDITOR=: && export GIT_SEQUENCE_EDITOR
|
||||
test_rerere_autoupdate -i
|
||||
test_rerere_autoupdate --preserve-merges
|
||||
|
||||
test_done
|
||||
|
|
Загрузка…
Ссылка в новой задаче