-
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.
Introduce the diff option '--patience'
This commit teaches Git to produce diff output using the patience diff algorithm with the diff option '--patience'. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
- Loading branch information
Johannes Schindelin
authored and
Junio C Hamano
committed
Jan 7, 2009
1 parent
92b7de9
commit 34292bd
Showing
4 changed files
with
174 additions
and
1 deletion.
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,168 @@ | ||
#!/bin/sh | ||
|
||
test_description='patience diff algorithm' | ||
|
||
. ./test-lib.sh | ||
|
||
cat >file1 <<\EOF | ||
#include <stdio.h> | ||
// Frobs foo heartily | ||
int frobnitz(int foo) | ||
{ | ||
int i; | ||
for(i = 0; i < 10; i++) | ||
{ | ||
printf("Your answer is: "); | ||
printf("%d\n", foo); | ||
} | ||
} | ||
int fact(int n) | ||
{ | ||
if(n > 1) | ||
{ | ||
return fact(n-1) * n; | ||
} | ||
return 1; | ||
} | ||
int main(int argc, char **argv) | ||
{ | ||
frobnitz(fact(10)); | ||
} | ||
EOF | ||
|
||
cat >file2 <<\EOF | ||
#include <stdio.h> | ||
int fib(int n) | ||
{ | ||
if(n > 2) | ||
{ | ||
return fib(n-1) + fib(n-2); | ||
} | ||
return 1; | ||
} | ||
// Frobs foo heartily | ||
int frobnitz(int foo) | ||
{ | ||
int i; | ||
for(i = 0; i < 10; i++) | ||
{ | ||
printf("%d\n", foo); | ||
} | ||
} | ||
int main(int argc, char **argv) | ||
{ | ||
frobnitz(fib(10)); | ||
} | ||
EOF | ||
|
||
cat >expect <<\EOF | ||
diff --git a/file1 b/file2 | ||
index 6faa5a3..e3af329 100644 | ||
--- a/file1 | ||
+++ b/file2 | ||
@@ -1,26 +1,25 @@ | ||
#include <stdio.h> | ||
+int fib(int n) | ||
+{ | ||
+ if(n > 2) | ||
+ { | ||
+ return fib(n-1) + fib(n-2); | ||
+ } | ||
+ return 1; | ||
+} | ||
+ | ||
// Frobs foo heartily | ||
int frobnitz(int foo) | ||
{ | ||
int i; | ||
for(i = 0; i < 10; i++) | ||
{ | ||
- printf("Your answer is: "); | ||
printf("%d\n", foo); | ||
} | ||
} | ||
-int fact(int n) | ||
-{ | ||
- if(n > 1) | ||
- { | ||
- return fact(n-1) * n; | ||
- } | ||
- return 1; | ||
-} | ||
- | ||
int main(int argc, char **argv) | ||
{ | ||
- frobnitz(fact(10)); | ||
+ frobnitz(fib(10)); | ||
} | ||
EOF | ||
|
||
test_expect_success 'patience diff' ' | ||
test_must_fail git diff --no-index --patience file1 file2 > output && | ||
test_cmp expect output | ||
' | ||
|
||
test_expect_success 'patience diff output is valid' ' | ||
mv file2 expect && | ||
git apply < output && | ||
test_cmp expect file2 | ||
' | ||
|
||
cat >uniq1 <<\EOF | ||
1 | ||
2 | ||
3 | ||
4 | ||
5 | ||
6 | ||
EOF | ||
|
||
cat >uniq2 <<\EOF | ||
a | ||
b | ||
c | ||
d | ||
e | ||
f | ||
EOF | ||
|
||
cat >expect <<\EOF | ||
diff --git a/uniq1 b/uniq2 | ||
index b414108..0fdf397 100644 | ||
--- a/uniq1 | ||
+++ b/uniq2 | ||
@@ -1,6 +1,6 @@ | ||
-1 | ||
-2 | ||
-3 | ||
-4 | ||
-5 | ||
-6 | ||
+a | ||
+b | ||
+c | ||
+d | ||
+e | ||
+f | ||
EOF | ||
|
||
test_expect_success 'completely different files' ' | ||
test_must_fail git diff --no-index --patience uniq1 uniq2 > output && | ||
test_cmp expect output | ||
' | ||
|
||
test_done |