mirror of
https://github.com/git/git
synced 2024-09-13 21:34:42 +00:00
Merge branch 'js/rebase-cleanup'
Update supporting parts of "git rebase" to remove code that should no longer be used. * js/rebase-cleanup: rebase: fold git-rebase--common into the -p backend sequencer: the `am` and `rebase--interactive` scripts are gone .gitignore: there is no longer a built-in `git-rebase--interactive` t3400: stop referring to the scripted rebase Drop unused git-rebase--am.sh
This commit is contained in:
commit
ed7f8acbaa
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -122,9 +122,6 @@
|
||||||
/git-range-diff
|
/git-range-diff
|
||||||
/git-read-tree
|
/git-read-tree
|
||||||
/git-rebase
|
/git-rebase
|
||||||
/git-rebase--am
|
|
||||||
/git-rebase--common
|
|
||||||
/git-rebase--interactive
|
|
||||||
/git-rebase--preserve-merges
|
/git-rebase--preserve-merges
|
||||||
/git-receive-pack
|
/git-receive-pack
|
||||||
/git-reflog
|
/git-reflog
|
||||||
|
|
2
Makefile
2
Makefile
|
@ -624,8 +624,6 @@ SCRIPT_SH += git-web--browse.sh
|
||||||
|
|
||||||
SCRIPT_LIB += git-mergetool--lib
|
SCRIPT_LIB += git-mergetool--lib
|
||||||
SCRIPT_LIB += git-parse-remote
|
SCRIPT_LIB += git-parse-remote
|
||||||
SCRIPT_LIB += git-rebase--am
|
|
||||||
SCRIPT_LIB += git-rebase--common
|
|
||||||
SCRIPT_LIB += git-rebase--preserve-merges
|
SCRIPT_LIB += git-rebase--preserve-merges
|
||||||
SCRIPT_LIB += git-sh-setup
|
SCRIPT_LIB += git-sh-setup
|
||||||
SCRIPT_LIB += git-sh-i18n
|
SCRIPT_LIB += git-sh-i18n
|
||||||
|
|
|
@ -1153,10 +1153,6 @@ static int run_specific_rebase(struct rebase_options *opts, enum action action)
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (opts->type) {
|
switch (opts->type) {
|
||||||
case REBASE_AM:
|
|
||||||
backend = "git-rebase--am";
|
|
||||||
backend_func = "git_rebase__am";
|
|
||||||
break;
|
|
||||||
case REBASE_PRESERVE_MERGES:
|
case REBASE_PRESERVE_MERGES:
|
||||||
backend = "git-rebase--preserve-merges";
|
backend = "git-rebase--preserve-merges";
|
||||||
backend_func = "git_rebase__preserve_merges";
|
backend_func = "git_rebase__preserve_merges";
|
||||||
|
@ -1167,8 +1163,7 @@ static int run_specific_rebase(struct rebase_options *opts, enum action action)
|
||||||
}
|
}
|
||||||
|
|
||||||
strbuf_addf(&script_snippet,
|
strbuf_addf(&script_snippet,
|
||||||
". git-sh-setup && . git-rebase--common &&"
|
". git-sh-setup && . %s && %s", backend, backend_func);
|
||||||
" . %s && %s", backend, backend_func);
|
|
||||||
argv[0] = script_snippet.buf;
|
argv[0] = script_snippet.buf;
|
||||||
|
|
||||||
status = run_command_v_opt(argv, RUN_USING_SHELL);
|
status = run_command_v_opt(argv, RUN_USING_SHELL);
|
||||||
|
|
|
@ -1,85 +0,0 @@
|
||||||
# This shell script fragment is sourced by git-rebase to implement
|
|
||||||
# its default, fast, patch-based, non-interactive mode.
|
|
||||||
#
|
|
||||||
# Copyright (c) 2010 Junio C Hamano.
|
|
||||||
#
|
|
||||||
|
|
||||||
git_rebase__am () {
|
|
||||||
|
|
||||||
case "$action" in
|
|
||||||
continue)
|
|
||||||
git am --resolved --resolvemsg="$resolvemsg" \
|
|
||||||
${gpg_sign_opt:+"$gpg_sign_opt"} &&
|
|
||||||
move_to_original_branch
|
|
||||||
return
|
|
||||||
;;
|
|
||||||
skip)
|
|
||||||
git am --skip --resolvemsg="$resolvemsg" &&
|
|
||||||
move_to_original_branch
|
|
||||||
return
|
|
||||||
;;
|
|
||||||
show-current-patch)
|
|
||||||
exec git am --show-current-patch
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
if test -z "$rebase_root"
|
|
||||||
# this is now equivalent to ! -z "$upstream"
|
|
||||||
then
|
|
||||||
revisions=$upstream...$orig_head
|
|
||||||
else
|
|
||||||
revisions=$onto...$orig_head
|
|
||||||
fi
|
|
||||||
|
|
||||||
ret=0
|
|
||||||
rm -f "$GIT_DIR/rebased-patches"
|
|
||||||
|
|
||||||
git format-patch -k --stdout --full-index --cherry-pick --right-only \
|
|
||||||
--src-prefix=a/ --dst-prefix=b/ --no-renames --no-cover-letter \
|
|
||||||
--pretty=mboxrd --topo-order \
|
|
||||||
$git_format_patch_opt \
|
|
||||||
"$revisions" ${restrict_revision+^$restrict_revision} \
|
|
||||||
>"$GIT_DIR/rebased-patches"
|
|
||||||
ret=$?
|
|
||||||
|
|
||||||
if test 0 != $ret
|
|
||||||
then
|
|
||||||
rm -f "$GIT_DIR/rebased-patches"
|
|
||||||
case "$head_name" in
|
|
||||||
refs/heads/*)
|
|
||||||
git checkout -q "$head_name"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
git checkout -q "$orig_head"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
cat >&2 <<-EOF
|
|
||||||
|
|
||||||
git encountered an error while preparing the patches to replay
|
|
||||||
these revisions:
|
|
||||||
|
|
||||||
$revisions
|
|
||||||
|
|
||||||
As a result, git cannot rebase them.
|
|
||||||
EOF
|
|
||||||
return $ret
|
|
||||||
fi
|
|
||||||
|
|
||||||
git am $git_am_opt --rebasing --resolvemsg="$resolvemsg" \
|
|
||||||
--patch-format=mboxrd \
|
|
||||||
$allow_rerere_autoupdate \
|
|
||||||
${gpg_sign_opt:+"$gpg_sign_opt"} <"$GIT_DIR/rebased-patches"
|
|
||||||
ret=$?
|
|
||||||
|
|
||||||
rm -f "$GIT_DIR/rebased-patches"
|
|
||||||
|
|
||||||
if test 0 != $ret
|
|
||||||
then
|
|
||||||
test -d "$state_dir" && write_basic_state
|
|
||||||
return $ret
|
|
||||||
fi
|
|
||||||
|
|
||||||
move_to_original_branch
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,69 +0,0 @@
|
||||||
|
|
||||||
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 &&
|
|
||||||
test t = "$GIT_QUIET" && : > "$state_dir"/quiet
|
|
||||||
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
|
|
||||||
test -n "$reschedule_failed_exec" && : > "$state_dir"/reschedule-failed-exec
|
|
||||||
}
|
|
||||||
|
|
||||||
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
|
|
||||||
}
|
|
|
@ -77,6 +77,61 @@ rewritten_pending="$state_dir"/rewritten-pending
|
||||||
# and leaves CR at the end instead.
|
# and leaves CR at the end instead.
|
||||||
cr=$(printf "\015")
|
cr=$(printf "\015")
|
||||||
|
|
||||||
|
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 &&
|
||||||
|
test t = "$GIT_QUIET" && : > "$state_dir"/quiet
|
||||||
|
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
|
||||||
|
test -n "$reschedule_failed_exec" && : > "$state_dir"/reschedule-failed-exec
|
||||||
|
}
|
||||||
|
|
||||||
|
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
|
||||||
|
}
|
||||||
|
|
||||||
|
output () {
|
||||||
|
case "$verbose" in
|
||||||
|
'')
|
||||||
|
output=$("$@" 2>&1 )
|
||||||
|
status=$?
|
||||||
|
test $status != 0 && printf "%s\n" "$output"
|
||||||
|
return $status
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
"$@"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
strategy_args=${strategy:+--strategy=$strategy}
|
strategy_args=${strategy:+--strategy=$strategy}
|
||||||
test -n "$strategy_opts" &&
|
test -n "$strategy_opts" &&
|
||||||
eval '
|
eval '
|
||||||
|
|
|
@ -767,7 +767,7 @@ static int parse_key_value_squoted(char *buf, struct string_list *list)
|
||||||
* GIT_AUTHOR_DATE='$author_date'
|
* GIT_AUTHOR_DATE='$author_date'
|
||||||
*
|
*
|
||||||
* where $author_name, $author_email and $author_date are quoted. We are strict
|
* where $author_name, $author_email and $author_date are quoted. We are strict
|
||||||
* with our parsing, as the file was meant to be eval'd in the old
|
* with our parsing, as the file was meant to be eval'd in the now-removed
|
||||||
* git-am.sh/git-rebase--interactive.sh scripts, and thus if the file differs
|
* git-am.sh/git-rebase--interactive.sh scripts, and thus if the file differs
|
||||||
* from what this function expects, it is better to bail out than to do
|
* from what this function expects, it is better to bail out than to do
|
||||||
* something that the user does not expect.
|
* something that the user does not expect.
|
||||||
|
|
|
@ -285,7 +285,7 @@ EOF
|
||||||
test_cmp From_.msg out
|
test_cmp From_.msg out
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'rebase--am.sh and --show-current-patch' '
|
test_expect_success 'rebase --am and --show-current-patch' '
|
||||||
test_create_repo conflict-apply &&
|
test_create_repo conflict-apply &&
|
||||||
(
|
(
|
||||||
cd conflict-apply &&
|
cd conflict-apply &&
|
||||||
|
|
Loading…
Reference in a new issue