-
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.
This enhances the attributes mechanism so that external programs meant for existing GIT_EXTERNAL_DIFF interface can be specifed per path. To configure such a custom diff driver, first define a custom diff driver in the configuration: [diff "my-c-diff"] command = <<your command string comes here>> Then mark the paths that you want to use this custom driver using the attribute mechanism. *.c diff=my-c-diff The intent of this separation is that the attribute mechanism is used for specifying the type of the contents, while the configuration mechanism is used to define what needs to be done to that type of the contents, which would be specific to both platform and personal taste. Signed-off-by: Junio C Hamano <junkio@cox.net>
- Loading branch information
Junio C Hamano
committed
Apr 23, 2007
1 parent
d83c9af
commit f1af60b
Showing
5 changed files
with
182 additions
and
5 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
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,97 @@ | ||
#!/bin/sh | ||
|
||
test_description='external diff interface test' | ||
|
||
. ./test-lib.sh | ||
|
||
_z40=0000000000000000000000000000000000000000 | ||
|
||
test_expect_success setup ' | ||
test_tick && | ||
echo initial >file && | ||
git add file && | ||
git commit -m initial && | ||
test_tick && | ||
echo second >file && | ||
git add file && | ||
git commit -m second && | ||
test_tick && | ||
echo third >file | ||
' | ||
|
||
test_expect_success 'GIT_EXTERNAL_DIFF environment' ' | ||
GIT_EXTERNAL_DIFF=echo git diff | { | ||
read path oldfile oldhex oldmode newfile newhex newmode && | ||
test "z$path" = zfile && | ||
test "z$oldmode" = z100644 && | ||
test "z$newhex" = "z$_z40" && | ||
test "z$newmode" = z100644 && | ||
oh=$(git rev-parse --verify HEAD:file) && | ||
test "z$oh" = "z$oldhex" | ||
} | ||
' | ||
|
||
test_expect_success 'GIT_EXTERNAL_DIFF environment should apply only to diff' ' | ||
GIT_EXTERNAL_DIFF=echo git log -p -1 HEAD | | ||
grep "^diff --git a/file b/file" | ||
' | ||
|
||
test_expect_success 'diff attribute' ' | ||
git config diff.parrot.command echo && | ||
echo >.gitattributes "file diff=parrot" && | ||
git diff | { | ||
read path oldfile oldhex oldmode newfile newhex newmode && | ||
test "z$path" = zfile && | ||
test "z$oldmode" = z100644 && | ||
test "z$newhex" = "z$_z40" && | ||
test "z$newmode" = z100644 && | ||
oh=$(git rev-parse --verify HEAD:file) && | ||
test "z$oh" = "z$oldhex" | ||
} | ||
' | ||
|
||
test_expect_success 'diff attribute should apply only to diff' ' | ||
git log -p -1 HEAD | | ||
grep "^diff --git a/file b/file" | ||
' | ||
|
||
test_expect_success 'diff attribute' ' | ||
git config --unset diff.parrot.command && | ||
git config diff.color.command echo && | ||
echo >.gitattributes "file diff=color" && | ||
git diff | { | ||
read path oldfile oldhex oldmode newfile newhex newmode && | ||
test "z$path" = zfile && | ||
test "z$oldmode" = z100644 && | ||
test "z$newhex" = "z$_z40" && | ||
test "z$newmode" = z100644 && | ||
oh=$(git rev-parse --verify HEAD:file) && | ||
test "z$oh" = "z$oldhex" | ||
} | ||
' | ||
|
||
test_expect_success 'diff attribute should apply only to diff' ' | ||
git log -p -1 HEAD | | ||
grep "^diff --git a/file b/file" | ||
' | ||
|
||
test_done |