Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
rebase -i: add --ignore-whitespace flag
There are two backends available for rebasing, viz, the am and the interactive. Naturally, there shall be some features that are implemented in one but not in the other. One such flag is --ignore-whitespace which indicates merge mechanism to treat lines with only whitespace changes as unchanged. Wire the interactive rebase to also understand the --ignore-whitespace flag by translating it to -Xignore-space-change. Signed-off-by: Rohit Ashiwal <rohit.ashiwal265@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
- Loading branch information
Showing
4 changed files
with
97 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
#!/bin/sh | ||
# | ||
# Copyright (c) 2019 Rohit Ashiwal | ||
# | ||
|
||
test_description='tests to ensure compatibility between am and interactive backends' | ||
|
||
. ./test-lib.sh | ||
|
||
# This is a special case in which both am and interactive backends | ||
# provide the same output. It was done intentionally because | ||
# both the backends fall short of optimal behaviour. | ||
test_expect_success 'setup' ' | ||
git checkout -b topic && | ||
q_to_tab >file <<-\EOF && | ||
line 1 | ||
Qline 2 | ||
line 3 | ||
EOF | ||
git add file && | ||
git commit -m "add file" && | ||
cat >file <<-\EOF && | ||
line 1 | ||
new line 2 | ||
line 3 | ||
EOF | ||
git commit -am "update file" && | ||
git tag side && | ||
git checkout --orphan master && | ||
sed -e "s/^|//" >file <<-\EOF && | ||
|line 1 | ||
| line 2 | ||
|line 3 | ||
EOF | ||
git add file && | ||
git commit -m "add file" && | ||
git tag main | ||
' | ||
|
||
test_expect_success '--ignore-whitespace works with am backend' ' | ||
cat >expect <<-\EOF && | ||
line 1 | ||
new line 2 | ||
line 3 | ||
EOF | ||
test_must_fail git rebase main side && | ||
git rebase --abort && | ||
git rebase --ignore-whitespace main side && | ||
test_cmp expect file | ||
' | ||
|
||
test_expect_success '--ignore-whitespace works with interactive backend' ' | ||
cat >expect <<-\EOF && | ||
line 1 | ||
new line 2 | ||
line 3 | ||
EOF | ||
test_must_fail git rebase --merge main side && | ||
git rebase --abort && | ||
git rebase --merge --ignore-whitespace main side && | ||
test_cmp expect file | ||
' | ||
|
||
test_done |