-
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.
add--interactive: handle initial commit better
There were several points where we looked at the HEAD commit; for initial commits, this is meaningless. So instead we: - show staged status data as a diff against the empty tree instead of HEAD - show file diffs as creation events - use "git rm --cached" to revert instead of going back to the HEAD commit We magically reference the empty tree to implement this. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
- Loading branch information
Jeff King
authored and
Junio C Hamano
committed
Feb 16, 2008
1 parent
346245a
commit 18bc761
Showing
2 changed files
with
108 additions
and
16 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,69 @@ | ||
#!/bin/sh | ||
|
||
test_description='add -i basic tests' | ||
. ./test-lib.sh | ||
|
||
test_expect_success 'setup (initial)' ' | ||
echo content >file && | ||
git add file && | ||
echo more >>file && | ||
echo lines >>file | ||
' | ||
test_expect_success 'status works (initial)' ' | ||
git add -i </dev/null >output && | ||
grep "+1/-0 *+2/-0 file" output | ||
' | ||
cat >expected <<EOF | ||
new file mode 100644 | ||
index 0000000..d95f3ad | ||
--- /dev/null | ||
+++ b/file | ||
@@ -0,0 +1 @@ | ||
+content | ||
EOF | ||
test_expect_success 'diff works (initial)' ' | ||
(echo d; echo 1) | git add -i >output && | ||
sed -ne "/new file/,/content/p" <output >diff && | ||
diff -u expected diff | ||
' | ||
test_expect_success 'revert works (initial)' ' | ||
git add file && | ||
(echo r; echo 1) | git add -i && | ||
git ls-files >output && | ||
! grep . output | ||
' | ||
|
||
test_expect_success 'setup (commit)' ' | ||
echo baseline >file && | ||
git add file && | ||
git commit -m commit && | ||
echo content >>file && | ||
git add file && | ||
echo more >>file && | ||
echo lines >>file | ||
' | ||
test_expect_success 'status works (commit)' ' | ||
git add -i </dev/null >output && | ||
grep "+1/-0 *+2/-0 file" output | ||
' | ||
cat >expected <<EOF | ||
index 180b47c..b6f2c08 100644 | ||
--- a/file | ||
+++ b/file | ||
@@ -1 +1,2 @@ | ||
baseline | ||
+content | ||
EOF | ||
test_expect_success 'diff works (commit)' ' | ||
(echo d; echo 1) | git add -i >output && | ||
sed -ne "/^index/,/content/p" <output >diff && | ||
diff -u expected diff | ||
' | ||
test_expect_success 'revert works (commit)' ' | ||
git add file && | ||
(echo r; echo 1) | git add -i && | ||
git add -i </dev/null >output && | ||
grep "unchanged *+3/-0 file" output | ||
' | ||
|
||
test_done |