Browse Source

Merge branch 'en/status-multiple-renames-to-the-same-target-fix'

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?'
maint
Junio C Hamano 6 years ago
parent
commit
98f3f007f5
  1. 1
      builtin/commit.c
  2. 23
      t/t7500-commit.sh

1
builtin/commit.c

@ -874,6 +874,7 @@ static int prepare_to_commit(const char *index_file, const char *prefix, @@ -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";

23
t/t7500-commit.sh

@ -359,4 +359,27 @@ test_expect_success 'new line found before status message in commit template' ' @@ -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

Loading…
Cancel
Save