Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master
Fetching contributors…

Octocat-spinner-32-eaf2f5

Cannot retrieve contributors at this time

executable file 87 lines (70 sloc) 1.896 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
#!/bin/sh

test_description='Intent to add'

. ./test-lib.sh

test_expect_success 'intent to add' '
echo hello >file &&
echo hello >elif &&
git add -N file &&
git add elif
'

test_expect_success 'check result of "add -N"' '
git ls-files -s file >actual &&
empty=$(git hash-object --stdin </dev/null) &&
echo "100644 $empty 0 file" >expect &&
test_cmp expect actual
'

test_expect_success 'intent to add is just an ordinary empty blob' '
git add -u &&
git ls-files -s file >actual &&
git ls-files -s elif | sed -e "s/elif/file/" >expect &&
test_cmp expect actual
'

test_expect_success 'intent to add does not clobber existing paths' '
git add -N file elif &&
empty=$(git hash-object --stdin </dev/null) &&
git ls-files -s >actual &&
! grep "$empty" actual
'

test_expect_success 'i-t-a entry is simply ignored' '
test_tick &&
git commit -a -m initial &&
git reset --hard &&

echo xyzzy >rezrov &&
echo frotz >nitfol &&
git add rezrov &&
git add -N nitfol &&
git commit -m second &&
test $(git ls-tree HEAD -- nitfol | wc -l) = 0 &&
test $(git diff --name-only HEAD -- nitfol | wc -l) = 1
'

test_expect_success 'can commit with an unrelated i-t-a entry in index' '
git reset --hard &&
echo bozbar >rezrov &&
echo frotz >nitfol &&
git add rezrov &&
git add -N nitfol &&
git commit -m partial rezrov
'

test_expect_success 'can "commit -a" with an i-t-a entry' '
git reset --hard &&
: >nitfol &&
git add -N nitfol &&
git commit -a -m all
'

test_expect_success 'cache-tree invalidates i-t-a paths' '
git reset --hard &&
mkdir dir &&
: >dir/foo &&
git add dir/foo &&
git commit -m foo &&

: >dir/bar &&
git add -N dir/bar &&
git diff --cached --name-only >actual &&
echo dir/bar >expect &&
test_cmp expect actual &&

git write-tree >/dev/null &&

git diff --cached --name-only >actual &&
echo dir/bar >expect &&
test_cmp expect actual
'

test_done

Something went wrong with that request. Please try again.