-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
pickaxe: allow -i to search in patch case-insensitively
"git log -S<string>" is a useful way to find the last commit in the codebase that touched the <string>. As it was designed to be used by a porcelain script to dig the history starting from a block of text that appear in the starting commit, it never had to look for anything but an exact match. When used by an end user who wants to look for the last commit that removed a string (e.g. name of a variable) that he vaguely remembers, however, it is useful to support case insensitive match. When given the "--regexp-ignore-case" (or "-i") option, which originally was designed to affect case sensitivity of the search done in the commit log part, e.g. "log --grep", the matches made with -S/-G pickaxe search is done case insensitively now. Signed-off-by: Junio C Hamano <[email protected]>
- Loading branch information
Showing
4 changed files
with
128 additions
and
2 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,119 @@ | ||
#!/bin/sh | ||
|
||
test_description='log --grep/--author/--regexp-ignore-case/-S/-G' | ||
. ./test-lib.sh | ||
|
||
test_expect_success setup ' | ||
>file && | ||
git add file && | ||
test_tick && | ||
git commit -m initial && | ||
echo Picked >file && | ||
test_tick && | ||
git commit -a --author="Another Person <[email protected]>" -m second | ||
' | ||
|
||
test_expect_success 'log --grep' ' | ||
git log --grep=initial --format=%H >actual && | ||
git rev-parse --verify HEAD^ >expect && | ||
test_cmp expect actual | ||
' | ||
|
||
test_expect_success 'log --grep --regexp-ignore-case' ' | ||
git log --regexp-ignore-case --grep=InItial --format=%H >actual && | ||
git rev-parse --verify HEAD^ >expect && | ||
test_cmp expect actual | ||
' | ||
|
||
test_expect_success 'log --grep -i' ' | ||
git log -i --grep=InItial --format=%H >actual && | ||
git rev-parse --verify HEAD^ >expect && | ||
test_cmp expect actual | ||
' | ||
|
||
test_expect_success 'log --author --regexp-ignore-case' ' | ||
git log --regexp-ignore-case --author=person --format=%H >actual && | ||
git rev-parse --verify HEAD >expect && | ||
test_cmp expect actual | ||
' | ||
|
||
test_expect_success 'log --author -i' ' | ||
git log -i --author=person --format=%H >actual && | ||
git rev-parse --verify HEAD >expect && | ||
test_cmp expect actual | ||
' | ||
|
||
test_expect_success 'log -G (nomatch)' ' | ||
git log -Gpicked --format=%H >actual && | ||
>expect && | ||
test_cmp expect actual | ||
' | ||
|
||
test_expect_success 'log -G (match)' ' | ||
git log -GPicked --format=%H >actual && | ||
git rev-parse --verify HEAD >expect && | ||
test_cmp expect actual | ||
' | ||
|
||
test_expect_success 'log -G --regexp-ignore-case (nomatch)' ' | ||
git log --regexp-ignore-case -Gpickle --format=%H >actual && | ||
>expect && | ||
test_cmp expect actual | ||
' | ||
|
||
test_expect_success 'log -G -i (nomatch)' ' | ||
git log -i -Gpickle --format=%H >actual && | ||
>expect && | ||
test_cmp expect actual | ||
' | ||
|
||
test_expect_success 'log -G --regexp-ignore-case (match)' ' | ||
git log --regexp-ignore-case -Gpicked --format=%H >actual && | ||
git rev-parse --verify HEAD >expect && | ||
test_cmp expect actual | ||
' | ||
|
||
test_expect_success 'log -G -i (match)' ' | ||
git log -i -Gpicked --format=%H >actual && | ||
git rev-parse --verify HEAD >expect && | ||
test_cmp expect actual | ||
' | ||
|
||
test_expect_success 'log -S (nomatch)' ' | ||
git log -Spicked --format=%H >actual && | ||
>expect && | ||
test_cmp expect actual | ||
' | ||
|
||
test_expect_success 'log -S (match)' ' | ||
git log -SPicked --format=%H >actual && | ||
git rev-parse --verify HEAD >expect && | ||
test_cmp expect actual | ||
' | ||
|
||
test_expect_success 'log -S --regexp-ignore-case (match)' ' | ||
git log --regexp-ignore-case -Spicked --format=%H >actual && | ||
git rev-parse --verify HEAD >expect && | ||
test_cmp expect actual | ||
' | ||
|
||
test_expect_success 'log -S -i (match)' ' | ||
git log -i -Spicked --format=%H >actual && | ||
git rev-parse --verify HEAD >expect && | ||
test_cmp expect actual | ||
' | ||
|
||
test_expect_success 'log -S --regexp-ignore-case (nomatch)' ' | ||
git log --regexp-ignore-case -Spickle --format=%H >actual && | ||
>expect && | ||
test_cmp expect actual | ||
' | ||
|
||
test_expect_success 'log -S -i (nomatch)' ' | ||
git log -i -Spickle --format=%H >actual && | ||
>expect && | ||
test_cmp expect actual | ||
' | ||
|
||
test_done |