Junio C Hamano | 6a0ebe8 | 2006-08-14 23:24:55 -0700 | [diff] [blame] | 1 | #!/bin/sh |
| 2 | # |
| 3 | # Copyright (c) 2005 Junio C Hamano |
| 4 | # |
| 5 | |
Junio C Hamano | 5be6007 | 2007-07-02 22:52:14 -0700 | [diff] [blame] | 6 | test_description='git apply in reverse |
Junio C Hamano | 6a0ebe8 | 2006-08-14 23:24:55 -0700 | [diff] [blame] | 7 | |
| 8 | ' |
| 9 | |
| 10 | . ./test-lib.sh |
| 11 | |
| 12 | test_expect_success setup ' |
| 13 | |
| 14 | for i in a b c d e f g h i j k l m n; do echo $i; done >file1 && |
Junio C Hamano | 7096b64 | 2012-06-12 09:49:59 -0700 | [diff] [blame] | 15 | "$PERL_PATH" -pe "y/ijk/\\000\\001\\002/" <file1 >file2 && |
Junio C Hamano | 6a0ebe8 | 2006-08-14 23:24:55 -0700 | [diff] [blame] | 16 | |
| 17 | git add file1 file2 && |
| 18 | git commit -m initial && |
| 19 | git tag initial && |
| 20 | |
| 21 | for i in a b c g h i J K L m o n p q; do echo $i; done >file1 && |
Junio C Hamano | 7096b64 | 2012-06-12 09:49:59 -0700 | [diff] [blame] | 22 | "$PERL_PATH" -pe "y/mon/\\000\\001\\002/" <file1 >file2 && |
Junio C Hamano | 6a0ebe8 | 2006-08-14 23:24:55 -0700 | [diff] [blame] | 23 | |
| 24 | git commit -a -m second && |
Junio C Hamano | 2cda1a2 | 2006-08-16 16:09:25 -0700 | [diff] [blame] | 25 | git tag second && |
Junio C Hamano | 6a0ebe8 | 2006-08-14 23:24:55 -0700 | [diff] [blame] | 26 | |
Junio C Hamano | 2cda1a2 | 2006-08-16 16:09:25 -0700 | [diff] [blame] | 27 | git diff --binary initial second >patch |
Junio C Hamano | 6a0ebe8 | 2006-08-14 23:24:55 -0700 | [diff] [blame] | 28 | |
| 29 | ' |
| 30 | |
| 31 | test_expect_success 'apply in forward' ' |
| 32 | |
Junio C Hamano | 2cda1a2 | 2006-08-16 16:09:25 -0700 | [diff] [blame] | 33 | T0=`git rev-parse "second^{tree}"` && |
| 34 | git reset --hard initial && |
Junio C Hamano | 6a0ebe8 | 2006-08-14 23:24:55 -0700 | [diff] [blame] | 35 | git apply --index --binary patch && |
Junio C Hamano | 2cda1a2 | 2006-08-16 16:09:25 -0700 | [diff] [blame] | 36 | T1=`git write-tree` && |
| 37 | test "$T0" = "$T1" |
Junio C Hamano | 6a0ebe8 | 2006-08-14 23:24:55 -0700 | [diff] [blame] | 38 | ' |
| 39 | |
| 40 | test_expect_success 'apply in reverse' ' |
| 41 | |
Junio C Hamano | 2cda1a2 | 2006-08-16 16:09:25 -0700 | [diff] [blame] | 42 | git reset --hard second && |
Junio C Hamano | 6a0ebe8 | 2006-08-14 23:24:55 -0700 | [diff] [blame] | 43 | git apply --reverse --binary --index patch && |
| 44 | git diff >diff && |
Junio C Hamano | 3af8286 | 2008-05-23 22:28:56 -0700 | [diff] [blame] | 45 | test_cmp /dev/null diff |
Junio C Hamano | 6a0ebe8 | 2006-08-14 23:24:55 -0700 | [diff] [blame] | 46 | |
| 47 | ' |
| 48 | |
Junio C Hamano | 2cda1a2 | 2006-08-16 16:09:25 -0700 | [diff] [blame] | 49 | test_expect_success 'setup separate repository lacking postimage' ' |
| 50 | |
Brandon Casey | 9a885fa | 2008-07-22 16:16:25 -0500 | [diff] [blame] | 51 | git tar-tree initial initial | $TAR xf - && |
Junio C Hamano | 2cda1a2 | 2006-08-16 16:09:25 -0700 | [diff] [blame] | 52 | ( |
Nicolas Pitre | 5c94f87 | 2007-01-12 16:01:46 -0500 | [diff] [blame] | 53 | cd initial && git init && git add . |
Junio C Hamano | 2cda1a2 | 2006-08-16 16:09:25 -0700 | [diff] [blame] | 54 | ) && |
| 55 | |
Brandon Casey | 9a885fa | 2008-07-22 16:16:25 -0500 | [diff] [blame] | 56 | git tar-tree second second | $TAR xf - && |
Junio C Hamano | 2cda1a2 | 2006-08-16 16:09:25 -0700 | [diff] [blame] | 57 | ( |
Nicolas Pitre | 5c94f87 | 2007-01-12 16:01:46 -0500 | [diff] [blame] | 58 | cd second && git init && git add . |
Junio C Hamano | 2cda1a2 | 2006-08-16 16:09:25 -0700 | [diff] [blame] | 59 | ) |
| 60 | |
| 61 | ' |
| 62 | |
| 63 | test_expect_success 'apply in forward without postimage' ' |
| 64 | |
| 65 | T0=`git rev-parse "second^{tree}"` && |
| 66 | ( |
| 67 | cd initial && |
| 68 | git apply --index --binary ../patch && |
| 69 | T1=`git write-tree` && |
| 70 | test "$T0" = "$T1" |
| 71 | ) |
| 72 | ' |
| 73 | |
| 74 | test_expect_success 'apply in reverse without postimage' ' |
| 75 | |
| 76 | T0=`git rev-parse "initial^{tree}"` && |
| 77 | ( |
| 78 | cd second && |
| 79 | git apply --index --binary --reverse ../patch && |
| 80 | T1=`git write-tree` && |
| 81 | test "$T0" = "$T1" |
| 82 | ) |
| 83 | ' |
| 84 | |
Johannes Schindelin | 5fda48d | 2007-07-07 18:50:39 +0100 | [diff] [blame] | 85 | test_expect_success 'reversing a whitespace introduction' ' |
| 86 | sed "s/a/a /" < file1 > file1.new && |
| 87 | mv file1.new file1 && |
| 88 | git diff | git apply --reverse --whitespace=error |
| 89 | ' |
| 90 | |
Junio C Hamano | 6a0ebe8 | 2006-08-14 23:24:55 -0700 | [diff] [blame] | 91 | test_done |