summaryrefslogtreecommitdiff
path: root/t
diff options
context:
space:
mode:
authorLibravatar Jeff King <peff@peff.net>2009-05-30 17:54:18 -0400
committerLibravatar Junio C Hamano <gitster@pobox.com>2009-05-31 15:59:16 -0700
commit6e4f981ffb88c8a9d3d6128314f4dd4f54ffb8a8 (patch)
tree46b7c19d0fdcc6c9634c0aea2b95cf6219c95487 /t
parentconfig.txt: document add.ignore-errors (diff)
downloadtgif-6e4f981ffb88c8a9d3d6128314f4dd4f54ffb8a8.tar.xz
git-add: no need for -f when resolving a conflict in already tracked path
When a path F that matches ignore pattern has a conflict, "git add F" insisted the -f option be given, which did not make sense. It would have required -f when the path was originally added, but when resolving a conflict, it already is tracked. So this should work (and does): $ echo file >.gitignore $ echo content >file $ git add -f file ;# need -f because we are adding new path $ echo more content >>file $ git add file ;# don't need -f; it is not actually an "other" file This is handled under the hood by the COLLECT_IGNORED option to read_directory. When that code finds an ignored file, it checks the index to make sure it is not actually a tracked file. However, the test it uses does not take into account unmerged entries, and considers them to still be ignored. "git ls-files" uses a more elaborate test and gets the right answer and the same test should be used here. Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't')
-rwxr-xr-xt/t3700-add.sh12
1 files changed, 12 insertions, 0 deletions
diff --git a/t/t3700-add.sh b/t/t3700-add.sh
index 050de42ef4..6ce8256a17 100755
--- a/t/t3700-add.sh
+++ b/t/t3700-add.sh
@@ -230,4 +230,16 @@ test_expect_success BSLASHPSPEC "git add 'fo\\[ou\\]bar' ignores foobar" '
! ( git ls-files foobar | grep foobar )
'
+test_expect_success 'git add to resolve conflicts on otherwise ignored path' '
+ git reset --hard &&
+ H=$(git rev-parse :1/2/a) &&
+ (
+ echo "100644 $H 1 track-this"
+ echo "100644 $H 3 track-this"
+ ) | git update-index --index-info &&
+ echo track-this >>.gitignore &&
+ echo resolved >track-this &&
+ git add track-this
+'
+
test_done