bash-prompt.sh: show where rebase is at when stopped
When a rebase stops (e.g. interrupted by a merge conflict), it could be useful to know how far a rebase has progressed and how many commits in total this rebase will apply. Teach the __git_ps1() command to display the number of commits so far applied and the total number of commits to be applied, like this: ((3ec0a6a...)|REBASE 2/5) In the example above the rebase has stopped at the second commit due to a merge conflict and there are a total number of five commits to be applied by this rebase. This information can be already obtained from the following files which are being generated during the rebase: GIT_DIR/.git/rebase-merge/msgnum (git-rebase--merge.sh) GIT_DIR/.git/rebase-merge/end (git-rebase--merge.sh) GIT_DIR/.git/rebase-apply/next (git-am.sh) GIT_DIR/.git/rebase-apply/last (git-am.sh) but "rebase -i" does not leave necessary clues. Implement this feature by doing these three things: 1) Modify git-rebase--interactive.sh to also create GIT_DIR/.git/rebase-merge/msgnum GIT_DIR/.git/rebase-merge/end files for the number of commits so far applied and the total number of commits to be applied. 2) Modify git-prompt.sh to read and display info from the above files. 3) Update test t9903-bash-prompt.sh to reflect changes introduced by this patch. Signed-off-by: Zoltan Klinger <zoltan.klinger@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
3e7bb5da9f
commit
b71dc3e1a0
@ -28,6 +28,10 @@ test_expect_success 'setup for prompt tests' '
|
||||
git checkout -b b2 master &&
|
||||
echo 0 > file &&
|
||||
git commit -m "second b2" file &&
|
||||
echo 00 > file &&
|
||||
git commit -m "another b2" file &&
|
||||
echo 000 > file &&
|
||||
git commit -m "yet another b2" file &&
|
||||
git checkout master
|
||||
'
|
||||
|
||||
@ -243,10 +247,12 @@ test_expect_success 'prompt - inside bare repository' '
|
||||
'
|
||||
|
||||
test_expect_success 'prompt - interactive rebase' '
|
||||
printf " (b1|REBASE-i)" > expected
|
||||
printf " (b1|REBASE-i 2/3)" > expected
|
||||
echo "#!$SHELL_PATH" >fake_editor.sh &&
|
||||
cat >>fake_editor.sh <<\EOF &&
|
||||
echo "edit $(git log -1 --format="%h")" > "$1"
|
||||
echo "exec echo" > "$1"
|
||||
echo "edit $(git log -1 --format="%h")" >> "$1"
|
||||
echo "exec echo" >> "$1"
|
||||
EOF
|
||||
test_when_finished "rm -f fake_editor.sh" &&
|
||||
chmod a+x fake_editor.sh &&
|
||||
@ -260,7 +266,7 @@ EOF
|
||||
'
|
||||
|
||||
test_expect_success 'prompt - rebase merge' '
|
||||
printf " (b2|REBASE-m)" > expected &&
|
||||
printf " (b2|REBASE-m 1/3)" > expected &&
|
||||
git checkout b2 &&
|
||||
test_when_finished "git checkout master" &&
|
||||
test_must_fail git rebase --merge b1 b2 &&
|
||||
@ -270,7 +276,7 @@ test_expect_success 'prompt - rebase merge' '
|
||||
'
|
||||
|
||||
test_expect_success 'prompt - rebase' '
|
||||
printf " ((t2)|REBASE)" > expected &&
|
||||
printf " ((t2)|REBASE 1/3)" > expected &&
|
||||
git checkout b2 &&
|
||||
test_when_finished "git checkout master" &&
|
||||
test_must_fail git rebase b1 b2 &&
|
||||
|
Reference in New Issue
Block a user