2012-06-05 22:21:25 +02:00
|
|
|
#!/bin/sh
|
|
|
|
#
|
|
|
|
# Copyright (c) 2012 Valentin Duperray, Lucien Kong, Franck Jonas,
|
|
|
|
# Thomas Nguy, Khoi Nguyen
|
|
|
|
# Grenoble INP Ensimag
|
|
|
|
#
|
|
|
|
|
2013-02-25 06:27:20 +01:00
|
|
|
test_description='git status advice'
|
2012-06-05 22:21:25 +02:00
|
|
|
|
2020-11-19 00:44:40 +01:00
|
|
|
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
|
tests: mark tests relying on the current default for `init.defaultBranch`
In addition to the manual adjustment to let the `linux-gcc` CI job run
the test suite with `master` and then with `main`, this patch makes sure
that GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME is set in all test scripts
that currently rely on the initial branch name being `master by default.
To determine which test scripts to mark up, the first step was to
force-set the default branch name to `master` in
- all test scripts that contain the keyword `master`,
- t4211, which expects `t/t4211/history.export` with a hard-coded ref to
initialize the default branch,
- t5560 because it sources `t/t556x_common` which uses `master`,
- t8002 and t8012 because both source `t/annotate-tests.sh` which also
uses `master`)
This trick was performed by this command:
$ sed -i '/^ *\. \.\/\(test-lib\|lib-\(bash\|cvs\|git-svn\)\|gitweb-lib\)\.sh$/i\
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=master\
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME\
' $(git grep -l master t/t[0-9]*.sh) \
t/t4211*.sh t/t5560*.sh t/t8002*.sh t/t8012*.sh
After that, careful, manual inspection revealed that some of the test
scripts containing the needle `master` do not actually rely on a
specific default branch name: either they mention `master` only in a
comment, or they initialize that branch specificially, or they do not
actually refer to the current default branch. Therefore, the
aforementioned modification was undone in those test scripts thusly:
$ git checkout HEAD -- \
t/t0027-auto-crlf.sh t/t0060-path-utils.sh \
t/t1011-read-tree-sparse-checkout.sh \
t/t1305-config-include.sh t/t1309-early-config.sh \
t/t1402-check-ref-format.sh t/t1450-fsck.sh \
t/t2024-checkout-dwim.sh \
t/t2106-update-index-assume-unchanged.sh \
t/t3040-subprojects-basic.sh t/t3301-notes.sh \
t/t3308-notes-merge.sh t/t3423-rebase-reword.sh \
t/t3436-rebase-more-options.sh \
t/t4015-diff-whitespace.sh t/t4257-am-interactive.sh \
t/t5323-pack-redundant.sh t/t5401-update-hooks.sh \
t/t5511-refspec.sh t/t5526-fetch-submodules.sh \
t/t5529-push-errors.sh t/t5530-upload-pack-error.sh \
t/t5548-push-porcelain.sh \
t/t5552-skipping-fetch-negotiator.sh \
t/t5572-pull-submodule.sh t/t5608-clone-2gb.sh \
t/t5614-clone-submodules-shallow.sh \
t/t7508-status.sh t/t7606-merge-custom.sh \
t/t9302-fast-import-unpack-limit.sh
We excluded one set of test scripts in these commands, though: the range
of `git p4` tests. The reason? `git p4` stores the (foreign) remote
branch in the branch called `p4/master`, which is obviously not the
default branch. Manual analysis revealed that only five of these tests
actually require a specific default branch name to pass; They were
modified thusly:
$ sed -i '/^ *\. \.\/lib-git-p4\.sh$/i\
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=master\
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME\
' t/t980[0167]*.sh t/t9811*.sh
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2020-11-19 00:44:19 +01:00
|
|
|
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
|
|
|
|
|
2012-06-05 22:21:25 +02:00
|
|
|
. ./test-lib.sh
|
|
|
|
|
|
|
|
. "$TEST_DIRECTORY"/lib-rebase.sh
|
|
|
|
|
|
|
|
set_fake_editor
|
|
|
|
|
|
|
|
test_expect_success 'prepare for conflicts' '
|
2013-03-13 13:59:16 +01:00
|
|
|
git config --global advice.statusuoption false &&
|
2012-06-05 22:21:25 +02:00
|
|
|
test_commit init main.txt init &&
|
|
|
|
git branch conflicts &&
|
2020-11-19 00:44:40 +01:00
|
|
|
test_commit on_main main.txt on_main &&
|
2012-06-05 22:21:25 +02:00
|
|
|
git checkout conflicts &&
|
|
|
|
test_commit on_conflicts main.txt on_conflicts
|
|
|
|
'
|
|
|
|
|
|
|
|
|
|
|
|
test_expect_success 'status when conflicts unresolved' '
|
2020-11-19 00:44:40 +01:00
|
|
|
test_must_fail git merge main &&
|
2013-09-06 19:43:08 +02:00
|
|
|
cat >expected <<\EOF &&
|
|
|
|
On branch conflicts
|
|
|
|
You have unmerged paths.
|
|
|
|
(fix conflicts and run "git commit")
|
2016-07-21 14:58:37 +02:00
|
|
|
(use "git merge --abort" to abort the merge)
|
2013-09-06 19:43:08 +02:00
|
|
|
|
|
|
|
Unmerged paths:
|
|
|
|
(use "git add <file>..." to mark resolution)
|
2014-03-12 21:43:51 +01:00
|
|
|
both modified: main.txt
|
2013-09-06 19:43:08 +02:00
|
|
|
|
|
|
|
no changes added to commit (use "git add" and/or "git commit -a")
|
|
|
|
EOF
|
2012-06-05 22:21:25 +02:00
|
|
|
git status --untracked-files=no >actual &&
|
2021-02-11 02:53:53 +01:00
|
|
|
test_cmp expected actual
|
2012-06-05 22:21:25 +02:00
|
|
|
'
|
|
|
|
|
|
|
|
|
|
|
|
test_expect_success 'status when conflicts resolved before commit' '
|
|
|
|
git reset --hard conflicts &&
|
2020-11-19 00:44:40 +01:00
|
|
|
test_must_fail git merge main &&
|
2012-06-05 22:21:25 +02:00
|
|
|
echo one >main.txt &&
|
|
|
|
git add main.txt &&
|
2013-09-06 19:43:08 +02:00
|
|
|
cat >expected <<\EOF &&
|
|
|
|
On branch conflicts
|
|
|
|
All conflicts fixed but you are still merging.
|
|
|
|
(use "git commit" to conclude merge)
|
|
|
|
|
|
|
|
Changes to be committed:
|
|
|
|
modified: main.txt
|
|
|
|
|
|
|
|
Untracked files not listed (use -u option to show untracked files)
|
|
|
|
EOF
|
2012-06-05 22:21:25 +02:00
|
|
|
git status --untracked-files=no >actual &&
|
2021-02-11 02:53:53 +01:00
|
|
|
test_cmp expected actual
|
2012-06-05 22:21:25 +02:00
|
|
|
'
|
|
|
|
|
|
|
|
|
|
|
|
test_expect_success 'prepare for rebase conflicts' '
|
2020-11-19 00:44:40 +01:00
|
|
|
git reset --hard main &&
|
2012-06-05 22:21:25 +02:00
|
|
|
git checkout -b rebase_conflicts &&
|
|
|
|
test_commit one_rebase main.txt one &&
|
|
|
|
test_commit two_rebase main.txt two &&
|
|
|
|
test_commit three_rebase main.txt three
|
|
|
|
'
|
|
|
|
|
|
|
|
|
2020-02-15 22:36:41 +01:00
|
|
|
test_expect_success 'status when rebase --apply in progress before resolving conflicts' '
|
2012-06-05 22:21:25 +02:00
|
|
|
test_when_finished "git rebase --abort" &&
|
2013-02-03 06:53:27 +01:00
|
|
|
ONTO=$(git rev-parse --short HEAD^^) &&
|
2020-02-15 22:36:41 +01:00
|
|
|
test_must_fail git rebase --apply HEAD^ --onto HEAD^^ &&
|
2013-09-06 19:43:08 +02:00
|
|
|
cat >expected <<EOF &&
|
|
|
|
rebase in progress; onto $ONTO
|
|
|
|
You are currently rebasing branch '\''rebase_conflicts'\'' on '\''$ONTO'\''.
|
|
|
|
(fix conflicts and then run "git rebase --continue")
|
|
|
|
(use "git rebase --skip" to skip this patch)
|
|
|
|
(use "git rebase --abort" to check out the original branch)
|
|
|
|
|
|
|
|
Unmerged paths:
|
2019-04-25 11:45:58 +02:00
|
|
|
(use "git restore --staged <file>..." to unstage)
|
2013-09-06 19:43:08 +02:00
|
|
|
(use "git add <file>..." to mark resolution)
|
2014-03-12 21:43:51 +01:00
|
|
|
both modified: main.txt
|
2013-09-06 19:43:08 +02:00
|
|
|
|
|
|
|
no changes added to commit (use "git add" and/or "git commit -a")
|
|
|
|
EOF
|
2012-06-05 22:21:25 +02:00
|
|
|
git status --untracked-files=no >actual &&
|
2021-02-11 02:53:53 +01:00
|
|
|
test_cmp expected actual
|
2012-06-05 22:21:25 +02:00
|
|
|
'
|
|
|
|
|
|
|
|
|
2020-02-15 22:36:41 +01:00
|
|
|
test_expect_success 'status when rebase --apply in progress before rebase --continue' '
|
2012-06-05 22:21:25 +02:00
|
|
|
git reset --hard rebase_conflicts &&
|
|
|
|
test_when_finished "git rebase --abort" &&
|
2013-02-03 06:53:27 +01:00
|
|
|
ONTO=$(git rev-parse --short HEAD^^) &&
|
2020-02-15 22:36:41 +01:00
|
|
|
test_must_fail git rebase --apply HEAD^ --onto HEAD^^ &&
|
2012-06-05 22:21:25 +02:00
|
|
|
echo three >main.txt &&
|
|
|
|
git add main.txt &&
|
2013-09-06 19:43:08 +02:00
|
|
|
cat >expected <<EOF &&
|
|
|
|
rebase in progress; onto $ONTO
|
|
|
|
You are currently rebasing branch '\''rebase_conflicts'\'' on '\''$ONTO'\''.
|
|
|
|
(all conflicts fixed: run "git rebase --continue")
|
|
|
|
|
|
|
|
Changes to be committed:
|
2019-04-25 11:45:58 +02:00
|
|
|
(use "git restore --staged <file>..." to unstage)
|
2013-09-06 19:43:08 +02:00
|
|
|
modified: main.txt
|
|
|
|
|
|
|
|
Untracked files not listed (use -u option to show untracked files)
|
|
|
|
EOF
|
2012-06-05 22:21:25 +02:00
|
|
|
git status --untracked-files=no >actual &&
|
2021-02-11 02:53:53 +01:00
|
|
|
test_cmp expected actual
|
2012-06-05 22:21:25 +02:00
|
|
|
'
|
|
|
|
|
|
|
|
|
|
|
|
test_expect_success 'prepare for rebase_i_conflicts' '
|
2020-11-19 00:44:40 +01:00
|
|
|
git reset --hard main &&
|
2012-06-05 22:21:25 +02:00
|
|
|
git checkout -b rebase_i_conflicts &&
|
|
|
|
test_commit one_unmerge main.txt one_unmerge &&
|
|
|
|
git branch rebase_i_conflicts_second &&
|
2020-11-19 00:44:40 +01:00
|
|
|
test_commit one_main main.txt one_main &&
|
2012-06-05 22:21:25 +02:00
|
|
|
git checkout rebase_i_conflicts_second &&
|
|
|
|
test_commit one_second main.txt one_second
|
|
|
|
'
|
|
|
|
|
|
|
|
|
|
|
|
test_expect_success 'status during rebase -i when conflicts unresolved' '
|
|
|
|
test_when_finished "git rebase --abort" &&
|
2013-02-03 06:53:27 +01:00
|
|
|
ONTO=$(git rev-parse --short rebase_i_conflicts) &&
|
2015-07-06 22:56:03 +02:00
|
|
|
LAST_COMMIT=$(git rev-parse --short rebase_i_conflicts_second) &&
|
2012-06-05 22:21:25 +02:00
|
|
|
test_must_fail git rebase -i rebase_i_conflicts &&
|
2013-09-06 19:43:08 +02:00
|
|
|
cat >expected <<EOF &&
|
2015-06-30 15:01:13 +02:00
|
|
|
interactive rebase in progress; onto $ONTO
|
2015-07-06 22:56:03 +02:00
|
|
|
Last command done (1 command done):
|
|
|
|
pick $LAST_COMMIT one_second
|
|
|
|
No commands remaining.
|
2013-09-06 19:43:08 +02:00
|
|
|
You are currently rebasing branch '\''rebase_i_conflicts_second'\'' on '\''$ONTO'\''.
|
|
|
|
(fix conflicts and then run "git rebase --continue")
|
|
|
|
(use "git rebase --skip" to skip this patch)
|
|
|
|
(use "git rebase --abort" to check out the original branch)
|
|
|
|
|
|
|
|
Unmerged paths:
|
2019-04-25 11:45:58 +02:00
|
|
|
(use "git restore --staged <file>..." to unstage)
|
2013-09-06 19:43:08 +02:00
|
|
|
(use "git add <file>..." to mark resolution)
|
2014-03-12 21:43:51 +01:00
|
|
|
both modified: main.txt
|
2013-09-06 19:43:08 +02:00
|
|
|
|
|
|
|
no changes added to commit (use "git add" and/or "git commit -a")
|
|
|
|
EOF
|
2012-06-05 22:21:25 +02:00
|
|
|
git status --untracked-files=no >actual &&
|
2021-02-11 02:53:53 +01:00
|
|
|
test_cmp expected actual
|
2012-06-05 22:21:25 +02:00
|
|
|
'
|
|
|
|
|
|
|
|
|
|
|
|
test_expect_success 'status during rebase -i after resolving conflicts' '
|
|
|
|
git reset --hard rebase_i_conflicts_second &&
|
|
|
|
test_when_finished "git rebase --abort" &&
|
2013-02-03 06:53:27 +01:00
|
|
|
ONTO=$(git rev-parse --short rebase_i_conflicts) &&
|
2015-07-06 22:56:03 +02:00
|
|
|
LAST_COMMIT=$(git rev-parse --short rebase_i_conflicts_second) &&
|
2012-06-05 22:21:25 +02:00
|
|
|
test_must_fail git rebase -i rebase_i_conflicts &&
|
|
|
|
git add main.txt &&
|
2013-09-06 19:43:08 +02:00
|
|
|
cat >expected <<EOF &&
|
2015-06-30 15:01:13 +02:00
|
|
|
interactive rebase in progress; onto $ONTO
|
2015-07-06 22:56:03 +02:00
|
|
|
Last command done (1 command done):
|
|
|
|
pick $LAST_COMMIT one_second
|
|
|
|
No commands remaining.
|
2013-09-06 19:43:08 +02:00
|
|
|
You are currently rebasing branch '\''rebase_i_conflicts_second'\'' on '\''$ONTO'\''.
|
|
|
|
(all conflicts fixed: run "git rebase --continue")
|
|
|
|
|
|
|
|
Changes to be committed:
|
2019-04-25 11:45:58 +02:00
|
|
|
(use "git restore --staged <file>..." to unstage)
|
2013-09-06 19:43:08 +02:00
|
|
|
modified: main.txt
|
|
|
|
|
|
|
|
Untracked files not listed (use -u option to show untracked files)
|
|
|
|
EOF
|
2012-06-05 22:21:25 +02:00
|
|
|
git status --untracked-files=no >actual &&
|
2021-02-11 02:53:53 +01:00
|
|
|
test_cmp expected actual
|
2012-06-05 22:21:25 +02:00
|
|
|
'
|
|
|
|
|
|
|
|
|
|
|
|
test_expect_success 'status when rebasing -i in edit mode' '
|
2020-11-19 00:44:40 +01:00
|
|
|
git reset --hard main &&
|
2012-06-05 22:21:25 +02:00
|
|
|
git checkout -b rebase_i_edit &&
|
|
|
|
test_commit one_rebase_i main.txt one &&
|
|
|
|
test_commit two_rebase_i main.txt two &&
|
2015-07-06 22:56:03 +02:00
|
|
|
COMMIT2=$(git rev-parse --short rebase_i_edit) &&
|
2012-06-05 22:21:25 +02:00
|
|
|
test_commit three_rebase_i main.txt three &&
|
2015-07-06 22:56:03 +02:00
|
|
|
COMMIT3=$(git rev-parse --short rebase_i_edit) &&
|
2012-06-05 22:21:25 +02:00
|
|
|
FAKE_LINES="1 edit 2" &&
|
|
|
|
export FAKE_LINES &&
|
|
|
|
test_when_finished "git rebase --abort" &&
|
2013-02-03 06:53:27 +01:00
|
|
|
ONTO=$(git rev-parse --short HEAD~2) &&
|
2012-06-05 22:21:25 +02:00
|
|
|
git rebase -i HEAD~2 &&
|
2013-09-06 19:43:08 +02:00
|
|
|
cat >expected <<EOF &&
|
2015-06-30 15:01:13 +02:00
|
|
|
interactive rebase in progress; onto $ONTO
|
2015-07-06 22:56:03 +02:00
|
|
|
Last commands done (2 commands done):
|
|
|
|
pick $COMMIT2 two_rebase_i
|
|
|
|
edit $COMMIT3 three_rebase_i
|
|
|
|
No commands remaining.
|
2013-09-06 19:43:08 +02:00
|
|
|
You are currently editing a commit while rebasing branch '\''rebase_i_edit'\'' on '\''$ONTO'\''.
|
|
|
|
(use "git commit --amend" to amend the current commit)
|
|
|
|
(use "git rebase --continue" once you are satisfied with your changes)
|
|
|
|
|
|
|
|
nothing to commit (use -u to show untracked files)
|
|
|
|
EOF
|
2012-06-05 22:21:25 +02:00
|
|
|
git status --untracked-files=no >actual &&
|
2021-02-11 02:53:53 +01:00
|
|
|
test_cmp expected actual
|
2012-06-05 22:21:25 +02:00
|
|
|
'
|
|
|
|
|
|
|
|
|
2012-06-10 13:17:38 +02:00
|
|
|
test_expect_success 'status when splitting a commit' '
|
2020-11-19 00:44:40 +01:00
|
|
|
git reset --hard main &&
|
2012-06-10 13:17:38 +02:00
|
|
|
git checkout -b split_commit &&
|
|
|
|
test_commit one_split main.txt one &&
|
|
|
|
test_commit two_split main.txt two &&
|
2015-07-06 22:56:03 +02:00
|
|
|
COMMIT2=$(git rev-parse --short split_commit) &&
|
2012-06-10 13:17:38 +02:00
|
|
|
test_commit three_split main.txt three &&
|
2015-07-06 22:56:03 +02:00
|
|
|
COMMIT3=$(git rev-parse --short split_commit) &&
|
2012-06-10 13:17:38 +02:00
|
|
|
test_commit four_split main.txt four &&
|
2015-07-06 22:56:03 +02:00
|
|
|
COMMIT4=$(git rev-parse --short split_commit) &&
|
2012-06-10 13:17:38 +02:00
|
|
|
FAKE_LINES="1 edit 2 3" &&
|
|
|
|
export FAKE_LINES &&
|
|
|
|
test_when_finished "git rebase --abort" &&
|
2013-02-03 06:53:27 +01:00
|
|
|
ONTO=$(git rev-parse --short HEAD~3) &&
|
2012-06-10 13:17:38 +02:00
|
|
|
git rebase -i HEAD~3 &&
|
|
|
|
git reset HEAD^ &&
|
2013-09-06 19:43:08 +02:00
|
|
|
cat >expected <<EOF &&
|
2015-06-30 15:01:13 +02:00
|
|
|
interactive rebase in progress; onto $ONTO
|
2015-07-06 22:56:03 +02:00
|
|
|
Last commands done (2 commands done):
|
|
|
|
pick $COMMIT2 two_split
|
|
|
|
edit $COMMIT3 three_split
|
|
|
|
Next command to do (1 remaining command):
|
|
|
|
pick $COMMIT4 four_split
|
|
|
|
(use "git rebase --edit-todo" to view and edit)
|
2013-09-06 19:43:08 +02:00
|
|
|
You are currently splitting a commit while rebasing branch '\''split_commit'\'' on '\''$ONTO'\''.
|
|
|
|
(Once your working directory is clean, run "git rebase --continue")
|
|
|
|
|
|
|
|
Changes not staged for commit:
|
|
|
|
(use "git add <file>..." to update what will be committed)
|
2019-04-25 11:45:58 +02:00
|
|
|
(use "git restore <file>..." to discard changes in working directory)
|
2013-09-06 19:43:08 +02:00
|
|
|
modified: main.txt
|
|
|
|
|
|
|
|
no changes added to commit (use "git add" and/or "git commit -a")
|
|
|
|
EOF
|
2012-06-10 13:17:38 +02:00
|
|
|
git status --untracked-files=no >actual &&
|
2021-02-11 02:53:53 +01:00
|
|
|
test_cmp expected actual
|
2012-06-10 13:17:38 +02:00
|
|
|
'
|
|
|
|
|
|
|
|
|
|
|
|
test_expect_success 'status after editing the last commit with --amend during a rebase -i' '
|
2020-11-19 00:44:40 +01:00
|
|
|
git reset --hard main &&
|
2012-06-10 13:17:38 +02:00
|
|
|
git checkout -b amend_last &&
|
|
|
|
test_commit one_amend main.txt one &&
|
|
|
|
test_commit two_amend main.txt two &&
|
|
|
|
test_commit three_amend main.txt three &&
|
2015-07-06 22:56:03 +02:00
|
|
|
COMMIT3=$(git rev-parse --short amend_last) &&
|
2012-06-10 13:17:38 +02:00
|
|
|
test_commit four_amend main.txt four &&
|
2015-07-06 22:56:03 +02:00
|
|
|
COMMIT4=$(git rev-parse --short amend_last) &&
|
2012-06-10 13:17:38 +02:00
|
|
|
FAKE_LINES="1 2 edit 3" &&
|
|
|
|
export FAKE_LINES &&
|
|
|
|
test_when_finished "git rebase --abort" &&
|
2013-02-03 06:53:27 +01:00
|
|
|
ONTO=$(git rev-parse --short HEAD~3) &&
|
2012-06-10 13:17:38 +02:00
|
|
|
git rebase -i HEAD~3 &&
|
|
|
|
git commit --amend -m "foo" &&
|
2013-09-06 19:43:08 +02:00
|
|
|
cat >expected <<EOF &&
|
2015-06-30 15:01:13 +02:00
|
|
|
interactive rebase in progress; onto $ONTO
|
2015-07-06 22:56:03 +02:00
|
|
|
Last commands done (3 commands done):
|
|
|
|
pick $COMMIT3 three_amend
|
|
|
|
edit $COMMIT4 four_amend
|
|
|
|
(see more in file .git/rebase-merge/done)
|
|
|
|
No commands remaining.
|
2013-09-06 19:43:08 +02:00
|
|
|
You are currently editing a commit while rebasing branch '\''amend_last'\'' on '\''$ONTO'\''.
|
|
|
|
(use "git commit --amend" to amend the current commit)
|
|
|
|
(use "git rebase --continue" once you are satisfied with your changes)
|
|
|
|
|
|
|
|
nothing to commit (use -u to show untracked files)
|
|
|
|
EOF
|
2012-06-10 13:17:38 +02:00
|
|
|
git status --untracked-files=no >actual &&
|
2021-02-11 02:53:53 +01:00
|
|
|
test_cmp expected actual
|
2012-06-10 13:17:38 +02:00
|
|
|
'
|
|
|
|
|
|
|
|
|
|
|
|
test_expect_success 'prepare for several edits' '
|
2020-11-19 00:44:40 +01:00
|
|
|
git reset --hard main &&
|
2012-06-10 13:17:38 +02:00
|
|
|
git checkout -b several_edits &&
|
|
|
|
test_commit one_edits main.txt one &&
|
|
|
|
test_commit two_edits main.txt two &&
|
|
|
|
test_commit three_edits main.txt three &&
|
|
|
|
test_commit four_edits main.txt four
|
|
|
|
'
|
|
|
|
|
|
|
|
|
|
|
|
test_expect_success 'status: (continue first edit) second edit' '
|
|
|
|
FAKE_LINES="edit 1 edit 2 3" &&
|
|
|
|
export FAKE_LINES &&
|
|
|
|
test_when_finished "git rebase --abort" &&
|
2015-07-06 22:56:03 +02:00
|
|
|
COMMIT2=$(git rev-parse --short several_edits^^) &&
|
|
|
|
COMMIT3=$(git rev-parse --short several_edits^) &&
|
|
|
|
COMMIT4=$(git rev-parse --short several_edits) &&
|
2013-02-03 06:53:27 +01:00
|
|
|
ONTO=$(git rev-parse --short HEAD~3) &&
|
2012-06-10 13:17:38 +02:00
|
|
|
git rebase -i HEAD~3 &&
|
|
|
|
git rebase --continue &&
|
2013-09-06 19:43:08 +02:00
|
|
|
cat >expected <<EOF &&
|
2015-06-30 15:01:13 +02:00
|
|
|
interactive rebase in progress; onto $ONTO
|
2015-07-06 22:56:03 +02:00
|
|
|
Last commands done (2 commands done):
|
|
|
|
edit $COMMIT2 two_edits
|
|
|
|
edit $COMMIT3 three_edits
|
|
|
|
Next command to do (1 remaining command):
|
|
|
|
pick $COMMIT4 four_edits
|
|
|
|
(use "git rebase --edit-todo" to view and edit)
|
2013-09-06 19:43:08 +02:00
|
|
|
You are currently editing a commit while rebasing branch '\''several_edits'\'' on '\''$ONTO'\''.
|
|
|
|
(use "git commit --amend" to amend the current commit)
|
|
|
|
(use "git rebase --continue" once you are satisfied with your changes)
|
|
|
|
|
|
|
|
nothing to commit (use -u to show untracked files)
|
|
|
|
EOF
|
2012-06-10 13:17:38 +02:00
|
|
|
git status --untracked-files=no >actual &&
|
2021-02-11 02:53:53 +01:00
|
|
|
test_cmp expected actual
|
2012-06-10 13:17:38 +02:00
|
|
|
'
|
|
|
|
|
|
|
|
|
|
|
|
test_expect_success 'status: (continue first edit) second edit and split' '
|
|
|
|
git reset --hard several_edits &&
|
|
|
|
FAKE_LINES="edit 1 edit 2 3" &&
|
|
|
|
export FAKE_LINES &&
|
|
|
|
test_when_finished "git rebase --abort" &&
|
2015-07-06 22:56:03 +02:00
|
|
|
COMMIT2=$(git rev-parse --short several_edits^^) &&
|
|
|
|
COMMIT3=$(git rev-parse --short several_edits^) &&
|
|
|
|
COMMIT4=$(git rev-parse --short several_edits) &&
|
2013-02-03 06:53:27 +01:00
|
|
|
ONTO=$(git rev-parse --short HEAD~3) &&
|
2012-06-10 13:17:38 +02:00
|
|
|
git rebase -i HEAD~3 &&
|
|
|
|
git rebase --continue &&
|
|
|
|
git reset HEAD^ &&
|
2013-09-06 19:43:08 +02:00
|
|
|
cat >expected <<EOF &&
|
2015-06-30 15:01:13 +02:00
|
|
|
interactive rebase in progress; onto $ONTO
|
2015-07-06 22:56:03 +02:00
|
|
|
Last commands done (2 commands done):
|
|
|
|
edit $COMMIT2 two_edits
|
|
|
|
edit $COMMIT3 three_edits
|
|
|
|
Next command to do (1 remaining command):
|
|
|
|
pick $COMMIT4 four_edits
|
|
|
|
(use "git rebase --edit-todo" to view and edit)
|
2013-09-06 19:43:08 +02:00
|
|
|
You are currently splitting a commit while rebasing branch '\''several_edits'\'' on '\''$ONTO'\''.
|
|
|
|
(Once your working directory is clean, run "git rebase --continue")
|
|
|
|
|
|
|
|
Changes not staged for commit:
|
|
|
|
(use "git add <file>..." to update what will be committed)
|
2019-04-25 11:45:58 +02:00
|
|
|
(use "git restore <file>..." to discard changes in working directory)
|
2013-09-06 19:43:08 +02:00
|
|
|
modified: main.txt
|
|
|
|
|
|
|
|
no changes added to commit (use "git add" and/or "git commit -a")
|
|
|
|
EOF
|
2012-06-10 13:17:38 +02:00
|
|
|
git status --untracked-files=no >actual &&
|
2021-02-11 02:53:53 +01:00
|
|
|
test_cmp expected actual
|
2012-06-10 13:17:38 +02:00
|
|
|
'
|
|
|
|
|
|
|
|
|
|
|
|
test_expect_success 'status: (continue first edit) second edit and amend' '
|
|
|
|
git reset --hard several_edits &&
|
|
|
|
FAKE_LINES="edit 1 edit 2 3" &&
|
|
|
|
export FAKE_LINES &&
|
|
|
|
test_when_finished "git rebase --abort" &&
|
2015-07-06 22:56:03 +02:00
|
|
|
COMMIT2=$(git rev-parse --short several_edits^^) &&
|
|
|
|
COMMIT3=$(git rev-parse --short several_edits^) &&
|
|
|
|
COMMIT4=$(git rev-parse --short several_edits) &&
|
2013-02-03 06:53:27 +01:00
|
|
|
ONTO=$(git rev-parse --short HEAD~3) &&
|
2012-06-10 13:17:38 +02:00
|
|
|
git rebase -i HEAD~3 &&
|
|
|
|
git rebase --continue &&
|
|
|
|
git commit --amend -m "foo" &&
|
2013-09-06 19:43:08 +02:00
|
|
|
cat >expected <<EOF &&
|
2015-06-30 15:01:13 +02:00
|
|
|
interactive rebase in progress; onto $ONTO
|
2015-07-06 22:56:03 +02:00
|
|
|
Last commands done (2 commands done):
|
|
|
|
edit $COMMIT2 two_edits
|
|
|
|
edit $COMMIT3 three_edits
|
|
|
|
Next command to do (1 remaining command):
|
|
|
|
pick $COMMIT4 four_edits
|
|
|
|
(use "git rebase --edit-todo" to view and edit)
|
2013-09-06 19:43:08 +02:00
|
|
|
You are currently editing a commit while rebasing branch '\''several_edits'\'' on '\''$ONTO'\''.
|
|
|
|
(use "git commit --amend" to amend the current commit)
|
|
|
|
(use "git rebase --continue" once you are satisfied with your changes)
|
|
|
|
|
|
|
|
nothing to commit (use -u to show untracked files)
|
|
|
|
EOF
|
2012-06-10 13:17:38 +02:00
|
|
|
git status --untracked-files=no >actual &&
|
2021-02-11 02:53:53 +01:00
|
|
|
test_cmp expected actual
|
2012-06-10 13:17:38 +02:00
|
|
|
'
|
|
|
|
|
|
|
|
|
|
|
|
test_expect_success 'status: (amend first edit) second edit' '
|
|
|
|
git reset --hard several_edits &&
|
|
|
|
FAKE_LINES="edit 1 edit 2 3" &&
|
|
|
|
export FAKE_LINES &&
|
|
|
|
test_when_finished "git rebase --abort" &&
|
2015-07-06 22:56:03 +02:00
|
|
|
COMMIT2=$(git rev-parse --short several_edits^^) &&
|
|
|
|
COMMIT3=$(git rev-parse --short several_edits^) &&
|
|
|
|
COMMIT4=$(git rev-parse --short several_edits) &&
|
2013-02-03 06:53:27 +01:00
|
|
|
ONTO=$(git rev-parse --short HEAD~3) &&
|
2012-06-10 13:17:38 +02:00
|
|
|
git rebase -i HEAD~3 &&
|
|
|
|
git commit --amend -m "a" &&
|
|
|
|
git rebase --continue &&
|
2013-09-06 19:43:08 +02:00
|
|
|
cat >expected <<EOF &&
|
2015-06-30 15:01:13 +02:00
|
|
|
interactive rebase in progress; onto $ONTO
|
2015-07-06 22:56:03 +02:00
|
|
|
Last commands done (2 commands done):
|
|
|
|
edit $COMMIT2 two_edits
|
|
|
|
edit $COMMIT3 three_edits
|
|
|
|
Next command to do (1 remaining command):
|
|
|
|
pick $COMMIT4 four_edits
|
|
|
|
(use "git rebase --edit-todo" to view and edit)
|
2013-09-06 19:43:08 +02:00
|
|
|
You are currently editing a commit while rebasing branch '\''several_edits'\'' on '\''$ONTO'\''.
|
|
|
|
(use "git commit --amend" to amend the current commit)
|
|
|
|
(use "git rebase --continue" once you are satisfied with your changes)
|
|
|
|
|
|
|
|
nothing to commit (use -u to show untracked files)
|
|
|
|
EOF
|
2012-06-10 13:17:38 +02:00
|
|
|
git status --untracked-files=no >actual &&
|
2021-02-11 02:53:53 +01:00
|
|
|
test_cmp expected actual
|
2012-06-10 13:17:38 +02:00
|
|
|
'
|
|
|
|
|
|
|
|
|
|
|
|
test_expect_success 'status: (amend first edit) second edit and split' '
|
|
|
|
git reset --hard several_edits &&
|
|
|
|
FAKE_LINES="edit 1 edit 2 3" &&
|
|
|
|
export FAKE_LINES &&
|
|
|
|
test_when_finished "git rebase --abort" &&
|
2013-02-03 06:53:27 +01:00
|
|
|
ONTO=$(git rev-parse --short HEAD~3) &&
|
2015-07-06 22:56:03 +02:00
|
|
|
COMMIT2=$(git rev-parse --short several_edits^^) &&
|
|
|
|
COMMIT3=$(git rev-parse --short several_edits^) &&
|
|
|
|
COMMIT4=$(git rev-parse --short several_edits) &&
|
2012-06-10 13:17:38 +02:00
|
|
|
git rebase -i HEAD~3 &&
|
|
|
|
git commit --amend -m "b" &&
|
|
|
|
git rebase --continue &&
|
|
|
|
git reset HEAD^ &&
|
2013-09-06 19:43:08 +02:00
|
|
|
cat >expected <<EOF &&
|
2015-06-30 15:01:13 +02:00
|
|
|
interactive rebase in progress; onto $ONTO
|
2015-07-06 22:56:03 +02:00
|
|
|
Last commands done (2 commands done):
|
|
|
|
edit $COMMIT2 two_edits
|
|
|
|
edit $COMMIT3 three_edits
|
|
|
|
Next command to do (1 remaining command):
|
|
|
|
pick $COMMIT4 four_edits
|
|
|
|
(use "git rebase --edit-todo" to view and edit)
|
2013-09-06 19:43:08 +02:00
|
|
|
You are currently splitting a commit while rebasing branch '\''several_edits'\'' on '\''$ONTO'\''.
|
|
|
|
(Once your working directory is clean, run "git rebase --continue")
|
|
|
|
|
|
|
|
Changes not staged for commit:
|
|
|
|
(use "git add <file>..." to update what will be committed)
|
2019-04-25 11:45:58 +02:00
|
|
|
(use "git restore <file>..." to discard changes in working directory)
|
2013-09-06 19:43:08 +02:00
|
|
|
modified: main.txt
|
|
|
|
|
|
|
|
no changes added to commit (use "git add" and/or "git commit -a")
|
|
|
|
EOF
|
2012-06-10 13:17:38 +02:00
|
|
|
git status --untracked-files=no >actual &&
|
2021-02-11 02:53:53 +01:00
|
|
|
test_cmp expected actual
|
2012-06-10 13:17:38 +02:00
|
|
|
'
|
|
|
|
|
|
|
|
|
|
|
|
test_expect_success 'status: (amend first edit) second edit and amend' '
|
|
|
|
git reset --hard several_edits &&
|
|
|
|
FAKE_LINES="edit 1 edit 2 3" &&
|
|
|
|
export FAKE_LINES &&
|
|
|
|
test_when_finished "git rebase --abort" &&
|
2015-07-06 22:56:03 +02:00
|
|
|
COMMIT2=$(git rev-parse --short several_edits^^) &&
|
|
|
|
COMMIT3=$(git rev-parse --short several_edits^) &&
|
|
|
|
COMMIT4=$(git rev-parse --short several_edits) &&
|
2013-02-03 06:53:27 +01:00
|
|
|
ONTO=$(git rev-parse --short HEAD~3) &&
|
2012-06-10 13:17:38 +02:00
|
|
|
git rebase -i HEAD~3 &&
|
|
|
|
git commit --amend -m "c" &&
|
|
|
|
git rebase --continue &&
|
|
|
|
git commit --amend -m "d" &&
|
2013-09-06 19:43:08 +02:00
|
|
|
cat >expected <<EOF &&
|
2015-06-30 15:01:13 +02:00
|
|
|
interactive rebase in progress; onto $ONTO
|
2015-07-06 22:56:03 +02:00
|
|
|
Last commands done (2 commands done):
|
|
|
|
edit $COMMIT2 two_edits
|
|
|
|
edit $COMMIT3 three_edits
|
|
|
|
Next command to do (1 remaining command):
|
|
|
|
pick $COMMIT4 four_edits
|
|
|
|
(use "git rebase --edit-todo" to view and edit)
|
2013-09-06 19:43:08 +02:00
|
|
|
You are currently editing a commit while rebasing branch '\''several_edits'\'' on '\''$ONTO'\''.
|
|
|
|
(use "git commit --amend" to amend the current commit)
|
|
|
|
(use "git rebase --continue" once you are satisfied with your changes)
|
|
|
|
|
|
|
|
nothing to commit (use -u to show untracked files)
|
|
|
|
EOF
|
2012-06-10 13:17:38 +02:00
|
|
|
git status --untracked-files=no >actual &&
|
2021-02-11 02:53:53 +01:00
|
|
|
test_cmp expected actual
|
2012-06-10 13:17:38 +02:00
|
|
|
'
|
|
|
|
|
|
|
|
|
|
|
|
test_expect_success 'status: (split first edit) second edit' '
|
|
|
|
git reset --hard several_edits &&
|
|
|
|
FAKE_LINES="edit 1 edit 2 3" &&
|
|
|
|
export FAKE_LINES &&
|
|
|
|
test_when_finished "git rebase --abort" &&
|
2015-07-06 22:56:03 +02:00
|
|
|
COMMIT2=$(git rev-parse --short several_edits^^) &&
|
|
|
|
COMMIT3=$(git rev-parse --short several_edits^) &&
|
|
|
|
COMMIT4=$(git rev-parse --short several_edits) &&
|
2013-02-03 06:53:27 +01:00
|
|
|
ONTO=$(git rev-parse --short HEAD~3) &&
|
2012-06-10 13:17:38 +02:00
|
|
|
git rebase -i HEAD~3 &&
|
|
|
|
git reset HEAD^ &&
|
|
|
|
git add main.txt &&
|
|
|
|
git commit -m "e" &&
|
|
|
|
git rebase --continue &&
|
2013-09-06 19:43:08 +02:00
|
|
|
cat >expected <<EOF &&
|
2015-06-30 15:01:13 +02:00
|
|
|
interactive rebase in progress; onto $ONTO
|
2015-07-06 22:56:03 +02:00
|
|
|
Last commands done (2 commands done):
|
|
|
|
edit $COMMIT2 two_edits
|
|
|
|
edit $COMMIT3 three_edits
|
|
|
|
Next command to do (1 remaining command):
|
|
|
|
pick $COMMIT4 four_edits
|
|
|
|
(use "git rebase --edit-todo" to view and edit)
|
2013-09-06 19:43:08 +02:00
|
|
|
You are currently editing a commit while rebasing branch '\''several_edits'\'' on '\''$ONTO'\''.
|
|
|
|
(use "git commit --amend" to amend the current commit)
|
|
|
|
(use "git rebase --continue" once you are satisfied with your changes)
|
|
|
|
|
|
|
|
nothing to commit (use -u to show untracked files)
|
|
|
|
EOF
|
2012-06-10 13:17:38 +02:00
|
|
|
git status --untracked-files=no >actual &&
|
2021-02-11 02:53:53 +01:00
|
|
|
test_cmp expected actual
|
2012-06-10 13:17:38 +02:00
|
|
|
'
|
|
|
|
|
|
|
|
|
|
|
|
test_expect_success 'status: (split first edit) second edit and split' '
|
|
|
|
git reset --hard several_edits &&
|
|
|
|
FAKE_LINES="edit 1 edit 2 3" &&
|
|
|
|
export FAKE_LINES &&
|
|
|
|
test_when_finished "git rebase --abort" &&
|
2015-07-06 22:56:03 +02:00
|
|
|
COMMIT2=$(git rev-parse --short several_edits^^) &&
|
|
|
|
COMMIT3=$(git rev-parse --short several_edits^) &&
|
|
|
|
COMMIT4=$(git rev-parse --short several_edits) &&
|
2013-02-03 06:53:27 +01:00
|
|
|
ONTO=$(git rev-parse --short HEAD~3) &&
|
2012-06-10 13:17:38 +02:00
|
|
|
git rebase -i HEAD~3 &&
|
|
|
|
git reset HEAD^ &&
|
|
|
|
git add main.txt &&
|
|
|
|
git commit --amend -m "f" &&
|
|
|
|
git rebase --continue &&
|
|
|
|
git reset HEAD^ &&
|
2013-09-06 19:43:08 +02:00
|
|
|
cat >expected <<EOF &&
|
2015-06-30 15:01:13 +02:00
|
|
|
interactive rebase in progress; onto $ONTO
|
2015-07-06 22:56:03 +02:00
|
|
|
Last commands done (2 commands done):
|
|
|
|
edit $COMMIT2 two_edits
|
|
|
|
edit $COMMIT3 three_edits
|
|
|
|
Next command to do (1 remaining command):
|
|
|
|
pick $COMMIT4 four_edits
|
|
|
|
(use "git rebase --edit-todo" to view and edit)
|
2013-09-06 19:43:08 +02:00
|
|
|
You are currently splitting a commit while rebasing branch '\''several_edits'\'' on '\''$ONTO'\''.
|
|
|
|
(Once your working directory is clean, run "git rebase --continue")
|
|
|
|
|
|
|
|
Changes not staged for commit:
|
|
|
|
(use "git add <file>..." to update what will be committed)
|
2019-04-25 11:45:58 +02:00
|
|
|
(use "git restore <file>..." to discard changes in working directory)
|
2013-09-06 19:43:08 +02:00
|
|
|
modified: main.txt
|
|
|
|
|
|
|
|
no changes added to commit (use "git add" and/or "git commit -a")
|
|
|
|
EOF
|
2012-06-10 13:17:38 +02:00
|
|
|
git status --untracked-files=no >actual &&
|
2021-02-11 02:53:53 +01:00
|
|
|
test_cmp expected actual
|
2012-06-10 13:17:38 +02:00
|
|
|
'
|
|
|
|
|
|
|
|
|
|
|
|
test_expect_success 'status: (split first edit) second edit and amend' '
|
|
|
|
git reset --hard several_edits &&
|
|
|
|
FAKE_LINES="edit 1 edit 2 3" &&
|
|
|
|
export FAKE_LINES &&
|
|
|
|
test_when_finished "git rebase --abort" &&
|
2015-07-06 22:56:03 +02:00
|
|
|
COMMIT2=$(git rev-parse --short several_edits^^) &&
|
|
|
|
COMMIT3=$(git rev-parse --short several_edits^) &&
|
|
|
|
COMMIT4=$(git rev-parse --short several_edits) &&
|
2013-02-03 06:53:27 +01:00
|
|
|
ONTO=$(git rev-parse --short HEAD~3) &&
|
2012-06-10 13:17:38 +02:00
|
|
|
git rebase -i HEAD~3 &&
|
|
|
|
git reset HEAD^ &&
|
|
|
|
git add main.txt &&
|
|
|
|
git commit --amend -m "g" &&
|
|
|
|
git rebase --continue &&
|
|
|
|
git commit --amend -m "h" &&
|
2013-09-06 19:43:08 +02:00
|
|
|
cat >expected <<EOF &&
|
2015-06-30 15:01:13 +02:00
|
|
|
interactive rebase in progress; onto $ONTO
|
2015-07-06 22:56:03 +02:00
|
|
|
Last commands done (2 commands done):
|
|
|
|
edit $COMMIT2 two_edits
|
|
|
|
edit $COMMIT3 three_edits
|
|
|
|
Next command to do (1 remaining command):
|
|
|
|
pick $COMMIT4 four_edits
|
|
|
|
(use "git rebase --edit-todo" to view and edit)
|
2013-09-06 19:43:08 +02:00
|
|
|
You are currently editing a commit while rebasing branch '\''several_edits'\'' on '\''$ONTO'\''.
|
|
|
|
(use "git commit --amend" to amend the current commit)
|
|
|
|
(use "git rebase --continue" once you are satisfied with your changes)
|
|
|
|
|
|
|
|
nothing to commit (use -u to show untracked files)
|
|
|
|
EOF
|
2012-06-10 13:17:38 +02:00
|
|
|
git status --untracked-files=no >actual &&
|
2021-02-11 02:53:53 +01:00
|
|
|
test_cmp expected actual
|
2012-06-10 13:17:38 +02:00
|
|
|
'
|
|
|
|
|
|
|
|
|
2012-06-05 22:21:25 +02:00
|
|
|
test_expect_success 'prepare am_session' '
|
2020-11-19 00:44:40 +01:00
|
|
|
git reset --hard main &&
|
2012-06-05 22:21:25 +02:00
|
|
|
git checkout -b am_session &&
|
|
|
|
test_commit one_am one.txt "one" &&
|
|
|
|
test_commit two_am two.txt "two" &&
|
|
|
|
test_commit three_am three.txt "three"
|
|
|
|
'
|
|
|
|
|
|
|
|
|
|
|
|
test_expect_success 'status in an am session: file already exists' '
|
|
|
|
git checkout -b am_already_exists &&
|
|
|
|
test_when_finished "rm Maildir/* && git am --abort" &&
|
|
|
|
git format-patch -1 -oMaildir &&
|
|
|
|
test_must_fail git am Maildir/*.patch &&
|
2013-09-06 19:43:08 +02:00
|
|
|
cat >expected <<\EOF &&
|
|
|
|
On branch am_already_exists
|
|
|
|
You are in the middle of an am session.
|
|
|
|
(fix conflicts and then run "git am --continue")
|
|
|
|
(use "git am --skip" to skip this patch)
|
|
|
|
(use "git am --abort" to restore the original branch)
|
|
|
|
|
|
|
|
nothing to commit (use -u to show untracked files)
|
|
|
|
EOF
|
2012-06-05 22:21:25 +02:00
|
|
|
git status --untracked-files=no >actual &&
|
2021-02-11 02:53:53 +01:00
|
|
|
test_cmp expected actual
|
2012-06-05 22:21:25 +02:00
|
|
|
'
|
|
|
|
|
|
|
|
|
|
|
|
test_expect_success 'status in an am session: file does not exist' '
|
|
|
|
git reset --hard am_session &&
|
|
|
|
git checkout -b am_not_exists &&
|
|
|
|
git rm three.txt &&
|
|
|
|
git commit -m "delete three.txt" &&
|
|
|
|
test_when_finished "rm Maildir/* && git am --abort" &&
|
|
|
|
git format-patch -1 -oMaildir &&
|
|
|
|
test_must_fail git am Maildir/*.patch &&
|
2013-09-06 19:43:08 +02:00
|
|
|
cat >expected <<\EOF &&
|
|
|
|
On branch am_not_exists
|
|
|
|
You are in the middle of an am session.
|
|
|
|
(fix conflicts and then run "git am --continue")
|
|
|
|
(use "git am --skip" to skip this patch)
|
|
|
|
(use "git am --abort" to restore the original branch)
|
|
|
|
|
|
|
|
nothing to commit (use -u to show untracked files)
|
|
|
|
EOF
|
2012-06-05 22:21:25 +02:00
|
|
|
git status --untracked-files=no >actual &&
|
2021-02-11 02:53:53 +01:00
|
|
|
test_cmp expected actual
|
2012-06-05 22:21:25 +02:00
|
|
|
'
|
|
|
|
|
|
|
|
|
|
|
|
test_expect_success 'status in an am session: empty patch' '
|
|
|
|
git reset --hard am_session &&
|
|
|
|
git checkout -b am_empty &&
|
|
|
|
test_when_finished "rm Maildir/* && git am --abort" &&
|
|
|
|
git format-patch -3 -oMaildir &&
|
|
|
|
git rm one.txt two.txt three.txt &&
|
|
|
|
git commit -m "delete all am_empty" &&
|
|
|
|
echo error >Maildir/0002-two_am.patch &&
|
|
|
|
test_must_fail git am Maildir/*.patch &&
|
2013-09-06 19:43:08 +02:00
|
|
|
cat >expected <<\EOF &&
|
|
|
|
On branch am_empty
|
|
|
|
You are in the middle of an am session.
|
|
|
|
The current patch is empty.
|
|
|
|
(use "git am --skip" to skip this patch)
|
|
|
|
(use "git am --abort" to restore the original branch)
|
|
|
|
|
|
|
|
nothing to commit (use -u to show untracked files)
|
|
|
|
EOF
|
2012-06-05 22:21:25 +02:00
|
|
|
git status --untracked-files=no >actual &&
|
2021-02-11 02:53:53 +01:00
|
|
|
test_cmp expected actual
|
2012-06-05 22:21:25 +02:00
|
|
|
'
|
|
|
|
|
|
|
|
|
|
|
|
test_expect_success 'status when bisecting' '
|
2020-11-19 00:44:40 +01:00
|
|
|
git reset --hard main &&
|
2012-06-05 22:21:25 +02:00
|
|
|
git checkout -b bisect &&
|
|
|
|
test_commit one_bisect main.txt one &&
|
|
|
|
test_commit two_bisect main.txt two &&
|
|
|
|
test_commit three_bisect main.txt three &&
|
|
|
|
test_when_finished "git bisect reset" &&
|
|
|
|
git bisect start &&
|
|
|
|
git bisect bad &&
|
|
|
|
git bisect good one_bisect &&
|
2013-03-13 12:42:52 +01:00
|
|
|
TGT=$(git rev-parse --short two_bisect) &&
|
2013-09-06 19:43:08 +02:00
|
|
|
cat >expected <<EOF &&
|
|
|
|
HEAD detached at $TGT
|
|
|
|
You are currently bisecting, started from branch '\''bisect'\''.
|
|
|
|
(use "git bisect reset" to get back to the original branch)
|
|
|
|
|
|
|
|
nothing to commit (use -u to show untracked files)
|
|
|
|
EOF
|
2012-06-05 22:21:25 +02:00
|
|
|
git status --untracked-files=no >actual &&
|
2021-02-11 02:53:53 +01:00
|
|
|
test_cmp expected actual
|
2012-06-05 22:21:25 +02:00
|
|
|
'
|
|
|
|
|
|
|
|
|
2020-02-15 22:36:41 +01:00
|
|
|
test_expect_success 'status when rebase --apply conflicts with statushints disabled' '
|
2020-11-19 00:44:40 +01:00
|
|
|
git reset --hard main &&
|
2012-06-05 22:21:25 +02:00
|
|
|
git checkout -b statushints_disabled &&
|
|
|
|
test_when_finished "git config --local advice.statushints true" &&
|
|
|
|
git config --local advice.statushints false &&
|
|
|
|
test_commit one_statushints main.txt one &&
|
|
|
|
test_commit two_statushints main.txt two &&
|
|
|
|
test_commit three_statushints main.txt three &&
|
|
|
|
test_when_finished "git rebase --abort" &&
|
2013-02-03 06:53:27 +01:00
|
|
|
ONTO=$(git rev-parse --short HEAD^^) &&
|
2020-02-15 22:36:41 +01:00
|
|
|
test_must_fail git rebase --apply HEAD^ --onto HEAD^^ &&
|
2013-09-06 19:43:08 +02:00
|
|
|
cat >expected <<EOF &&
|
|
|
|
rebase in progress; onto $ONTO
|
|
|
|
You are currently rebasing branch '\''statushints_disabled'\'' on '\''$ONTO'\''.
|
|
|
|
|
|
|
|
Unmerged paths:
|
2014-03-12 21:43:51 +01:00
|
|
|
both modified: main.txt
|
2013-09-06 19:43:08 +02:00
|
|
|
|
|
|
|
no changes added to commit
|
|
|
|
EOF
|
2012-06-05 22:21:25 +02:00
|
|
|
git status --untracked-files=no >actual &&
|
2021-02-11 02:53:53 +01:00
|
|
|
test_cmp expected actual
|
2012-06-05 22:21:25 +02:00
|
|
|
'
|
|
|
|
|
|
|
|
|
|
|
|
test_expect_success 'prepare for cherry-pick conflicts' '
|
2020-11-19 00:44:40 +01:00
|
|
|
git reset --hard main &&
|
2012-06-05 22:21:25 +02:00
|
|
|
git checkout -b cherry_branch &&
|
|
|
|
test_commit one_cherry main.txt one &&
|
|
|
|
test_commit two_cherries main.txt two &&
|
|
|
|
git checkout -b cherry_branch_second &&
|
|
|
|
test_commit second_cherry main.txt second &&
|
|
|
|
git checkout cherry_branch &&
|
|
|
|
test_commit three_cherries main.txt three
|
|
|
|
'
|
|
|
|
|
|
|
|
|
|
|
|
test_expect_success 'status when cherry-picking before resolving conflicts' '
|
|
|
|
test_when_finished "git cherry-pick --abort" &&
|
|
|
|
test_must_fail git cherry-pick cherry_branch_second &&
|
2013-10-11 17:58:37 +02:00
|
|
|
TO_CHERRY_PICK=$(git rev-parse --short CHERRY_PICK_HEAD) &&
|
|
|
|
cat >expected <<EOF &&
|
2013-09-06 19:43:08 +02:00
|
|
|
On branch cherry_branch
|
2013-10-11 17:58:37 +02:00
|
|
|
You are currently cherry-picking commit $TO_CHERRY_PICK.
|
2013-09-06 19:43:08 +02:00
|
|
|
(fix conflicts and run "git cherry-pick --continue")
|
2019-08-27 06:45:41 +02:00
|
|
|
(use "git cherry-pick --skip" to skip this patch)
|
2013-09-06 19:43:08 +02:00
|
|
|
(use "git cherry-pick --abort" to cancel the cherry-pick operation)
|
|
|
|
|
|
|
|
Unmerged paths:
|
|
|
|
(use "git add <file>..." to mark resolution)
|
2014-03-12 21:43:51 +01:00
|
|
|
both modified: main.txt
|
2013-09-06 19:43:08 +02:00
|
|
|
|
|
|
|
no changes added to commit (use "git add" and/or "git commit -a")
|
|
|
|
EOF
|
2012-06-05 22:21:25 +02:00
|
|
|
git status --untracked-files=no >actual &&
|
2021-02-11 02:53:53 +01:00
|
|
|
test_cmp expected actual
|
2012-06-05 22:21:25 +02:00
|
|
|
'
|
|
|
|
|
|
|
|
|
|
|
|
test_expect_success 'status when cherry-picking after resolving conflicts' '
|
|
|
|
git reset --hard cherry_branch &&
|
|
|
|
test_when_finished "git cherry-pick --abort" &&
|
|
|
|
test_must_fail git cherry-pick cherry_branch_second &&
|
2013-10-11 17:58:37 +02:00
|
|
|
TO_CHERRY_PICK=$(git rev-parse --short CHERRY_PICK_HEAD) &&
|
2012-06-05 22:21:25 +02:00
|
|
|
echo end >main.txt &&
|
|
|
|
git add main.txt &&
|
2013-10-11 17:58:37 +02:00
|
|
|
cat >expected <<EOF &&
|
2013-09-06 19:43:08 +02:00
|
|
|
On branch cherry_branch
|
2013-10-11 17:58:37 +02:00
|
|
|
You are currently cherry-picking commit $TO_CHERRY_PICK.
|
2013-09-06 19:43:08 +02:00
|
|
|
(all conflicts fixed: run "git cherry-pick --continue")
|
2019-08-27 06:45:41 +02:00
|
|
|
(use "git cherry-pick --skip" to skip this patch)
|
2013-09-06 19:43:08 +02:00
|
|
|
(use "git cherry-pick --abort" to cancel the cherry-pick operation)
|
|
|
|
|
|
|
|
Changes to be committed:
|
|
|
|
modified: main.txt
|
|
|
|
|
|
|
|
Untracked files not listed (use -u option to show untracked files)
|
|
|
|
EOF
|
2012-06-05 22:21:25 +02:00
|
|
|
git status --untracked-files=no >actual &&
|
2021-02-11 02:53:53 +01:00
|
|
|
test_cmp expected actual
|
2012-06-05 22:21:25 +02:00
|
|
|
'
|
|
|
|
|
2019-04-16 12:18:42 +02:00
|
|
|
test_expect_success 'status when cherry-picking after committing conflict resolution' '
|
|
|
|
git reset --hard cherry_branch &&
|
|
|
|
test_when_finished "git cherry-pick --abort" &&
|
|
|
|
test_must_fail git cherry-pick cherry_branch_second one_cherry &&
|
|
|
|
echo end >main.txt &&
|
|
|
|
git commit -a &&
|
|
|
|
cat >expected <<EOF &&
|
|
|
|
On branch cherry_branch
|
|
|
|
Cherry-pick currently in progress.
|
|
|
|
(run "git cherry-pick --continue" to continue)
|
2019-08-27 06:45:41 +02:00
|
|
|
(use "git cherry-pick --skip" to skip this patch)
|
2019-04-16 12:18:42 +02:00
|
|
|
(use "git cherry-pick --abort" to cancel the cherry-pick operation)
|
|
|
|
|
|
|
|
nothing to commit (use -u to show untracked files)
|
|
|
|
EOF
|
|
|
|
git status --untracked-files=no >actual &&
|
2021-02-11 02:53:53 +01:00
|
|
|
test_cmp expected actual
|
2019-04-16 12:18:42 +02:00
|
|
|
'
|
|
|
|
|
2019-06-27 16:12:46 +02:00
|
|
|
test_expect_success 'status shows cherry-pick with invalid oid' '
|
|
|
|
mkdir .git/sequencer &&
|
|
|
|
test_write_lines "pick invalid-oid" >.git/sequencer/todo &&
|
|
|
|
git status --untracked-files=no >actual 2>err &&
|
|
|
|
git cherry-pick --quit &&
|
|
|
|
test_must_be_empty err &&
|
2021-02-11 02:53:53 +01:00
|
|
|
test_cmp expected actual
|
2019-06-27 16:12:46 +02:00
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success 'status does not show error if .git/sequencer is a file' '
|
|
|
|
test_when_finished "rm .git/sequencer" &&
|
|
|
|
test_write_lines hello >.git/sequencer &&
|
|
|
|
git status --untracked-files=no 2>err &&
|
|
|
|
test_must_be_empty err
|
|
|
|
'
|
|
|
|
|
2013-06-17 18:52:25 +02:00
|
|
|
test_expect_success 'status showing detached at and from a tag' '
|
2013-03-13 12:42:52 +01:00
|
|
|
test_commit atag tagging &&
|
|
|
|
git checkout atag &&
|
2013-10-11 19:35:46 +02:00
|
|
|
cat >expected <<\EOF &&
|
2013-09-06 19:43:08 +02:00
|
|
|
HEAD detached at atag
|
|
|
|
nothing to commit (use -u to show untracked files)
|
|
|
|
EOF
|
2013-03-13 12:42:52 +01:00
|
|
|
git status --untracked-files=no >actual &&
|
2021-02-11 02:53:53 +01:00
|
|
|
test_cmp expected actual &&
|
2013-06-17 18:52:25 +02:00
|
|
|
|
|
|
|
git reset --hard HEAD^ &&
|
2013-10-11 19:35:46 +02:00
|
|
|
cat >expected <<\EOF &&
|
2013-09-06 19:43:08 +02:00
|
|
|
HEAD detached from atag
|
|
|
|
nothing to commit (use -u to show untracked files)
|
|
|
|
EOF
|
2013-06-17 18:52:25 +02:00
|
|
|
git status --untracked-files=no >actual &&
|
2021-02-11 02:53:53 +01:00
|
|
|
test_cmp expected actual
|
2013-03-13 12:42:52 +01:00
|
|
|
'
|
2012-06-05 22:21:25 +02:00
|
|
|
|
2013-04-02 16:20:21 +02:00
|
|
|
test_expect_success 'status while reverting commit (conflicts)' '
|
2020-11-19 00:44:40 +01:00
|
|
|
git checkout main &&
|
2013-04-02 16:20:21 +02:00
|
|
|
echo before >to-revert.txt &&
|
|
|
|
test_commit before to-revert.txt &&
|
|
|
|
echo old >to-revert.txt &&
|
|
|
|
test_commit old to-revert.txt &&
|
|
|
|
echo new >to-revert.txt &&
|
|
|
|
test_commit new to-revert.txt &&
|
2013-04-02 16:20:22 +02:00
|
|
|
TO_REVERT=$(git rev-parse --short HEAD^) &&
|
|
|
|
test_must_fail git revert $TO_REVERT &&
|
2013-10-11 19:35:46 +02:00
|
|
|
cat >expected <<EOF &&
|
2020-11-19 00:44:40 +01:00
|
|
|
On branch main
|
2013-09-06 19:43:08 +02:00
|
|
|
You are currently reverting commit $TO_REVERT.
|
|
|
|
(fix conflicts and run "git revert --continue")
|
2019-08-27 06:45:41 +02:00
|
|
|
(use "git revert --skip" to skip this patch)
|
2013-09-06 19:43:08 +02:00
|
|
|
(use "git revert --abort" to cancel the revert operation)
|
|
|
|
|
|
|
|
Unmerged paths:
|
2019-04-25 11:45:58 +02:00
|
|
|
(use "git restore --staged <file>..." to unstage)
|
2013-09-06 19:43:08 +02:00
|
|
|
(use "git add <file>..." to mark resolution)
|
2014-03-12 21:43:51 +01:00
|
|
|
both modified: to-revert.txt
|
2013-09-06 19:43:08 +02:00
|
|
|
|
|
|
|
no changes added to commit (use "git add" and/or "git commit -a")
|
|
|
|
EOF
|
2013-04-02 16:20:21 +02:00
|
|
|
git status --untracked-files=no >actual &&
|
2021-02-11 02:53:53 +01:00
|
|
|
test_cmp expected actual
|
2013-04-02 16:20:21 +02:00
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success 'status while reverting commit (conflicts resolved)' '
|
|
|
|
echo reverted >to-revert.txt &&
|
|
|
|
git add to-revert.txt &&
|
2013-10-11 19:35:46 +02:00
|
|
|
cat >expected <<EOF &&
|
2020-11-19 00:44:40 +01:00
|
|
|
On branch main
|
2013-09-06 19:43:08 +02:00
|
|
|
You are currently reverting commit $TO_REVERT.
|
|
|
|
(all conflicts fixed: run "git revert --continue")
|
2019-08-27 06:45:41 +02:00
|
|
|
(use "git revert --skip" to skip this patch)
|
2013-09-06 19:43:08 +02:00
|
|
|
(use "git revert --abort" to cancel the revert operation)
|
|
|
|
|
|
|
|
Changes to be committed:
|
2019-04-25 11:45:58 +02:00
|
|
|
(use "git restore --staged <file>..." to unstage)
|
2013-09-06 19:43:08 +02:00
|
|
|
modified: to-revert.txt
|
|
|
|
|
|
|
|
Untracked files not listed (use -u option to show untracked files)
|
|
|
|
EOF
|
2013-04-02 16:20:21 +02:00
|
|
|
git status --untracked-files=no >actual &&
|
2021-02-11 02:53:53 +01:00
|
|
|
test_cmp expected actual
|
2013-04-02 16:20:21 +02:00
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success 'status after reverting commit' '
|
|
|
|
git revert --continue &&
|
2013-10-11 19:35:46 +02:00
|
|
|
cat >expected <<\EOF &&
|
2020-11-19 00:44:40 +01:00
|
|
|
On branch main
|
2013-09-06 19:43:08 +02:00
|
|
|
nothing to commit (use -u to show untracked files)
|
2019-04-16 12:18:42 +02:00
|
|
|
EOF
|
|
|
|
git status --untracked-files=no >actual &&
|
2021-02-11 02:53:53 +01:00
|
|
|
test_cmp expected actual
|
2019-04-16 12:18:42 +02:00
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success 'status while reverting after committing conflict resolution' '
|
|
|
|
test_when_finished "git revert --abort" &&
|
|
|
|
git reset --hard new &&
|
|
|
|
test_must_fail git revert old new &&
|
|
|
|
echo reverted >to-revert.txt &&
|
|
|
|
git commit -a &&
|
|
|
|
cat >expected <<EOF &&
|
2020-11-19 00:44:40 +01:00
|
|
|
On branch main
|
2019-04-16 12:18:42 +02:00
|
|
|
Revert currently in progress.
|
|
|
|
(run "git revert --continue" to continue)
|
2019-08-27 06:45:41 +02:00
|
|
|
(use "git revert --skip" to skip this patch)
|
2019-04-16 12:18:42 +02:00
|
|
|
(use "git revert --abort" to cancel the revert operation)
|
|
|
|
|
|
|
|
nothing to commit (use -u to show untracked files)
|
2013-09-06 19:43:08 +02:00
|
|
|
EOF
|
2013-04-02 16:20:21 +02:00
|
|
|
git status --untracked-files=no >actual &&
|
2021-02-11 02:53:53 +01:00
|
|
|
test_cmp expected actual
|
2013-04-02 16:20:21 +02:00
|
|
|
'
|
|
|
|
|
2015-07-06 22:56:04 +02:00
|
|
|
test_expect_success 'prepare for different number of commits rebased' '
|
2020-11-19 00:44:40 +01:00
|
|
|
git reset --hard main &&
|
2015-07-06 22:56:04 +02:00
|
|
|
git checkout -b several_commits &&
|
|
|
|
test_commit one_commit main.txt one &&
|
|
|
|
test_commit two_commit main.txt two &&
|
|
|
|
test_commit three_commit main.txt three &&
|
|
|
|
test_commit four_commit main.txt four
|
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success 'status: one command done nothing remaining' '
|
|
|
|
FAKE_LINES="exec_exit_15" &&
|
|
|
|
export FAKE_LINES &&
|
|
|
|
test_when_finished "git rebase --abort" &&
|
|
|
|
ONTO=$(git rev-parse --short HEAD~3) &&
|
|
|
|
test_must_fail git rebase -i HEAD~3 &&
|
|
|
|
cat >expected <<EOF &&
|
|
|
|
interactive rebase in progress; onto $ONTO
|
|
|
|
Last command done (1 command done):
|
|
|
|
exec exit 15
|
|
|
|
No commands remaining.
|
|
|
|
You are currently editing a commit while rebasing branch '\''several_commits'\'' on '\''$ONTO'\''.
|
|
|
|
(use "git commit --amend" to amend the current commit)
|
|
|
|
(use "git rebase --continue" once you are satisfied with your changes)
|
|
|
|
|
|
|
|
nothing to commit (use -u to show untracked files)
|
|
|
|
EOF
|
|
|
|
git status --untracked-files=no >actual &&
|
2021-02-11 02:53:53 +01:00
|
|
|
test_cmp expected actual
|
2015-07-06 22:56:04 +02:00
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success 'status: two commands done with some white lines in done file' '
|
|
|
|
FAKE_LINES="1 > exec_exit_15 2 3" &&
|
|
|
|
export FAKE_LINES &&
|
|
|
|
test_when_finished "git rebase --abort" &&
|
|
|
|
ONTO=$(git rev-parse --short HEAD~3) &&
|
|
|
|
COMMIT4=$(git rev-parse --short HEAD) &&
|
|
|
|
COMMIT3=$(git rev-parse --short HEAD^) &&
|
|
|
|
COMMIT2=$(git rev-parse --short HEAD^^) &&
|
|
|
|
test_must_fail git rebase -i HEAD~3 &&
|
|
|
|
cat >expected <<EOF &&
|
|
|
|
interactive rebase in progress; onto $ONTO
|
|
|
|
Last commands done (2 commands done):
|
|
|
|
pick $COMMIT2 two_commit
|
|
|
|
exec exit 15
|
|
|
|
Next commands to do (2 remaining commands):
|
|
|
|
pick $COMMIT3 three_commit
|
|
|
|
pick $COMMIT4 four_commit
|
|
|
|
(use "git rebase --edit-todo" to view and edit)
|
|
|
|
You are currently editing a commit while rebasing branch '\''several_commits'\'' on '\''$ONTO'\''.
|
|
|
|
(use "git commit --amend" to amend the current commit)
|
|
|
|
(use "git rebase --continue" once you are satisfied with your changes)
|
|
|
|
|
|
|
|
nothing to commit (use -u to show untracked files)
|
|
|
|
EOF
|
|
|
|
git status --untracked-files=no >actual &&
|
2021-02-11 02:53:53 +01:00
|
|
|
test_cmp expected actual
|
2015-07-06 22:56:04 +02:00
|
|
|
'
|
|
|
|
|
|
|
|
test_expect_success 'status: two remaining commands with some white lines in todo file' '
|
|
|
|
FAKE_LINES="1 2 exec_exit_15 3 > 4" &&
|
|
|
|
export FAKE_LINES &&
|
|
|
|
test_when_finished "git rebase --abort" &&
|
|
|
|
ONTO=$(git rev-parse --short HEAD~4) &&
|
|
|
|
COMMIT4=$(git rev-parse --short HEAD) &&
|
|
|
|
COMMIT3=$(git rev-parse --short HEAD^) &&
|
|
|
|
COMMIT2=$(git rev-parse --short HEAD^^) &&
|
|
|
|
test_must_fail git rebase -i HEAD~4 &&
|
|
|
|
cat >expected <<EOF &&
|
|
|
|
interactive rebase in progress; onto $ONTO
|
|
|
|
Last commands done (3 commands done):
|
|
|
|
pick $COMMIT2 two_commit
|
|
|
|
exec exit 15
|
|
|
|
(see more in file .git/rebase-merge/done)
|
|
|
|
Next commands to do (2 remaining commands):
|
|
|
|
pick $COMMIT3 three_commit
|
|
|
|
pick $COMMIT4 four_commit
|
|
|
|
(use "git rebase --edit-todo" to view and edit)
|
|
|
|
You are currently editing a commit while rebasing branch '\''several_commits'\'' on '\''$ONTO'\''.
|
|
|
|
(use "git commit --amend" to amend the current commit)
|
|
|
|
(use "git rebase --continue" once you are satisfied with your changes)
|
|
|
|
|
|
|
|
nothing to commit (use -u to show untracked files)
|
|
|
|
EOF
|
|
|
|
git status --untracked-files=no >actual &&
|
2021-02-11 02:53:53 +01:00
|
|
|
test_cmp expected actual
|
2015-07-06 22:56:04 +02:00
|
|
|
'
|
|
|
|
|
2017-01-26 17:08:41 +01:00
|
|
|
test_expect_success 'status: handle not-yet-started rebase -i gracefully' '
|
|
|
|
ONTO=$(git rev-parse --short HEAD^) &&
|
|
|
|
COMMIT=$(git rev-parse --short HEAD) &&
|
|
|
|
EDITOR="git status --untracked-files=no >actual" git rebase -i HEAD^ &&
|
|
|
|
cat >expected <<EOF &&
|
|
|
|
On branch several_commits
|
|
|
|
No commands done.
|
|
|
|
Next command to do (1 remaining command):
|
|
|
|
pick $COMMIT four_commit
|
|
|
|
(use "git rebase --edit-todo" to view and edit)
|
|
|
|
You are currently editing a commit while rebasing branch '\''several_commits'\'' on '\''$ONTO'\''.
|
|
|
|
(use "git commit --amend" to amend the current commit)
|
|
|
|
(use "git rebase --continue" once you are satisfied with your changes)
|
|
|
|
|
|
|
|
nothing to commit (use -u to show untracked files)
|
|
|
|
EOF
|
2021-02-11 02:53:53 +01:00
|
|
|
test_cmp expected actual
|
2017-01-26 17:08:41 +01:00
|
|
|
'
|
|
|
|
|
2012-06-05 22:21:25 +02:00
|
|
|
test_done
|