Test 'commit --only' after 'checkout --orphan'
authorThomas Rast <trast@inf.ethz.ch>
Sat, 1 Jun 2013 11:02:00 +0000 (13:02 +0200)
committerJunio C Hamano <gitster@pobox.com>
Sun, 2 Jun 2013 19:31:17 +0000 (12:31 -0700)
There are some index handling subtleties in 'commit --only' that are
best tested when we have an existing index, but an unborn or empty
HEAD. These circumstances are easily produced by 'checkout --orphan',
but we did not previously have a test for it.

The main expected failure mode would be: erroneously loading the
existing index contents when building the temporary index that is used
for --only. Cf.

http://article.gmane.org/gmane.comp.version-control.git/225969

and subsequent discussion.

Signed-off-by: Thomas Rast <trast@inf.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t7501-commit.sh
index 195e7477d883f39d51f5740b5b309a489dd92d3d..99ce36f5ef91ae91c0f2ebd02ae70c4cba4c937c 100755 (executable)
@@ -524,4 +524,17 @@ test_expect_success 'commit a file whose name is a dash' '
        test_i18ngrep " changed, 5 insertions" output
 '
 
+test_expect_success '--only works on to-be-born branch' '
+       # This test relies on having something in the index, as it
+       # would not otherwise actually prove much.  So check this.
+       test -n "$(git ls-files)" &&
+       git checkout --orphan orphan &&
+       echo foo >newfile &&
+       git add newfile &&
+       git commit --only newfile -m"--only on unborn branch" &&
+       echo newfile >expected &&
+       git ls-tree -r --name-only HEAD >actual &&
+       test_cmp expected actual
+'
+
 test_done