-
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.
builtin-apply: do not declare patch is creation when we do not know it
When we see no context nor deleted line in the patch, we used to declare that the patch creates a new file. But some people create an empty file and then apply a patch to it. Similarly, a patch that delete everything is not a deletion patch either. This commit corrects these two issues. Together with the previous commit, it allows a diff between an empty file and a line-ful file to be treated as both creation patch and "add stuff to an existing empty file", depending on the context. A new test t4126 demonstrates the fix. Signed-off-by: Junio C Hamano <gitster@pobox.com>
- Loading branch information
Junio C Hamano
committed
May 17, 2008
1 parent
5c47f4c
commit 032bea5
Showing
2 changed files
with
61 additions
and
15 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
#!/bin/sh | ||
|
||
test_description='apply empty' | ||
|
||
. ./test-lib.sh | ||
|
||
test_expect_success setup ' | ||
>empty && | ||
git add empty && | ||
test_tick && | ||
git commit -m initial && | ||
for i in a b c d e | ||
do | ||
echo $i | ||
done >empty && | ||
cat empty >expect && | ||
git diff | | ||
sed -e "/^diff --git/d" \ | ||
-e "/^index /d" \ | ||
-e "s|a/empty|empty.orig|" \ | ||
-e "s|b/empty|empty|" >patch0 && | ||
sed -e "s|empty|missing|" patch0 >patch1 && | ||
>empty && | ||
git update-index --refresh | ||
' | ||
|
||
test_expect_success 'apply empty' ' | ||
git reset --hard && | ||
>empty && | ||
rm -f missing && | ||
git apply patch0 && | ||
test_cmp expect empty | ||
' | ||
|
||
test_expect_success 'apply --index empty' ' | ||
git reset --hard && | ||
>empty && | ||
rm -f missing && | ||
git apply --index patch0 && | ||
test_cmp expect empty && | ||
git diff --exit-code | ||
' | ||
|
||
test_expect_success 'apply create' ' | ||
git reset --hard && | ||
>empty && | ||
rm -f missing && | ||
git apply patch1 && | ||
test_cmp expect missing | ||
' | ||
|
||
test_expect_success 'apply --index create' ' | ||
git reset --hard && | ||
>empty && | ||
rm -f missing && | ||
git apply --index patch1 && | ||
test_cmp expect missing && | ||
git diff --exit-code | ||
' | ||
|
||
test_done |