Merge branch 'en/status-multiple-renames-to-the-same-target-fix'
authorJunio C Hamano <gitster@pobox.com>
Tue, 16 Oct 2018 07:16:05 +0000 (16:16 +0900)
committerJunio C Hamano <gitster@pobox.com>
Tue, 16 Oct 2018 07:16:05 +0000 (16:16 +0900)
The code in "git status" sometimes hit an assertion failure. This
was caused by a structure that was reused without cleaning the data
used for the first run, which has been corrected.

* en/status-multiple-renames-to-the-same-target-fix:
commit: fix erroneous BUG, 'multiple renames on the same target? how?'

builtin/commit.c
t/t7500-commit.sh
index 3f33ae60430d5d0ba52a6956539b1dadbb10e309..1d5292e4d827312d3a08ceb44f6a120cbd0c4576 100644 (file)
@@ -874,6 +874,7 @@ static int prepare_to_commit(const char *index_file, const char *prefix,
                s->use_color = 0;
                commitable = run_status(s->fp, index_file, prefix, 1, s);
                s->use_color = saved_color_setting;
+               string_list_clear(&s->change, 1);
        } else {
                struct object_id oid;
                const char *parent = "HEAD";
index 170b4810e052cc8092cea4ead4f3c098707f0f38..31ab608b6700829427b5aeafa65222469e494d26 100755 (executable)
@@ -359,4 +359,27 @@ test_expect_success 'new line found before status message in commit template' '
        test_i18ncmp expected-template editor-input
 '
 
+test_expect_success 'setup empty commit with unstaged rename and copy' '
+       test_create_repo unstaged_rename_and_copy &&
+       (
+               cd unstaged_rename_and_copy &&
+
+               echo content >orig &&
+               git add orig &&
+               test_commit orig &&
+
+               cp orig new_copy &&
+               mv orig new_rename &&
+               git add -N new_copy new_rename
+       )
+'
+
+test_expect_success 'check commit with unstaged rename and copy' '
+       (
+               cd unstaged_rename_and_copy &&
+
+               test_must_fail git -c diff.renames=copy commit
+       )
+'
+
 test_done