rebase -i: commit when continuing after "edit"
When doing an "edit" on a commit, editing and git-adding some files, "git rebase -i" complained about a missing "author-script". The idea was that the user would call "git commit --amend" herself. But we can be nice and do that for the user. Noticed by Dmitry Potapov. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
df3a02f612
commit
be6ff208d8
@ -77,15 +77,16 @@ mark_action_done () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
make_patch () {
|
make_patch () {
|
||||||
parent_sha1=$(git rev-parse --verify "$1"^ 2> /dev/null)
|
parent_sha1=$(git rev-parse --verify "$1"^) ||
|
||||||
|
die "Cannot get patch for $1^"
|
||||||
git diff "$parent_sha1".."$1" > "$DOTEST"/patch
|
git diff "$parent_sha1".."$1" > "$DOTEST"/patch
|
||||||
|
test -f "$DOTEST"/message ||
|
||||||
|
git cat-file commit "$1" | sed "1,/^$/d" > "$DOTEST"/message
|
||||||
|
test -f "$DOTEST"/author-script ||
|
||||||
|
get_author_ident_from_commit "$1" > "$DOTEST"/author-script
|
||||||
}
|
}
|
||||||
|
|
||||||
die_with_patch () {
|
die_with_patch () {
|
||||||
test -f "$DOTEST"/message ||
|
|
||||||
git cat-file commit $sha1 | sed "1,/^$/d" > "$DOTEST"/message
|
|
||||||
test -f "$DOTEST"/author-script ||
|
|
||||||
get_author_ident_from_commit $sha1 > "$DOTEST"/author-script
|
|
||||||
make_patch "$1"
|
make_patch "$1"
|
||||||
die "$2"
|
die "$2"
|
||||||
}
|
}
|
||||||
@ -214,6 +215,7 @@ peek_next_command () {
|
|||||||
do_next () {
|
do_next () {
|
||||||
test -f "$DOTEST"/message && rm "$DOTEST"/message
|
test -f "$DOTEST"/message && rm "$DOTEST"/message
|
||||||
test -f "$DOTEST"/author-script && rm "$DOTEST"/author-script
|
test -f "$DOTEST"/author-script && rm "$DOTEST"/author-script
|
||||||
|
test -f "$DOTEST"/amend && rm "$DOTEST"/amend
|
||||||
read command sha1 rest < "$TODO"
|
read command sha1 rest < "$TODO"
|
||||||
case "$command" in
|
case "$command" in
|
||||||
\#|'')
|
\#|'')
|
||||||
@ -233,6 +235,7 @@ do_next () {
|
|||||||
pick_one $sha1 ||
|
pick_one $sha1 ||
|
||||||
die_with_patch $sha1 "Could not apply $sha1... $rest"
|
die_with_patch $sha1 "Could not apply $sha1... $rest"
|
||||||
make_patch $sha1
|
make_patch $sha1
|
||||||
|
: > "$DOTEST"/amend
|
||||||
warn
|
warn
|
||||||
warn "You can amend the commit now, with"
|
warn "You can amend the commit now, with"
|
||||||
warn
|
warn
|
||||||
@ -330,7 +333,9 @@ do
|
|||||||
git update-index --refresh &&
|
git update-index --refresh &&
|
||||||
git diff-files --quiet &&
|
git diff-files --quiet &&
|
||||||
! git diff-index --cached --quiet HEAD &&
|
! git diff-index --cached --quiet HEAD &&
|
||||||
. "$DOTEST"/author-script &&
|
. "$DOTEST"/author-script && {
|
||||||
|
test ! -f "$DOTEST"/amend || git reset --soft HEAD^
|
||||||
|
} &&
|
||||||
export GIT_AUTHOR_NAME GIT_AUTHOR_NAME GIT_AUTHOR_DATE &&
|
export GIT_AUTHOR_NAME GIT_AUTHOR_NAME GIT_AUTHOR_DATE &&
|
||||||
git commit -F "$DOTEST"/message -e
|
git commit -F "$DOTEST"/message -e
|
||||||
|
|
||||||
|
@ -80,7 +80,7 @@ cat "$1".tmp
|
|||||||
action=pick
|
action=pick
|
||||||
for line in $FAKE_LINES; do
|
for line in $FAKE_LINES; do
|
||||||
case $line in
|
case $line in
|
||||||
squash)
|
squash|edit)
|
||||||
action="$line";;
|
action="$line";;
|
||||||
*)
|
*)
|
||||||
echo sed -n "${line}s/^pick/$action/p"
|
echo sed -n "${line}s/^pick/$action/p"
|
||||||
@ -297,4 +297,16 @@ test_expect_success 'ignore patch if in upstream' '
|
|||||||
test $HEAD = $(git rev-parse HEAD^)
|
test $HEAD = $(git rev-parse HEAD^)
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success '--continue tries to commit, even for "edit"' '
|
||||||
|
parent=$(git rev-parse HEAD^) &&
|
||||||
|
test_tick &&
|
||||||
|
FAKE_LINES="edit 1" git rebase -i HEAD^ &&
|
||||||
|
echo edited > file7 &&
|
||||||
|
git add file7 &&
|
||||||
|
FAKE_COMMIT_MESSAGE="chouette!" git rebase --continue &&
|
||||||
|
test edited = $(git show HEAD:file7) &&
|
||||||
|
git show HEAD | grep chouette &&
|
||||||
|
test $parent = $(git rev-parse HEAD^)
|
||||||
|
'
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
Loading…
Reference in New Issue
Block a user