builtin-merge: refresh the index before calling a strategy
In case a file is touched but has no real changes then we just have to update the index and should not error out. Signed-off-by: Miklos Vajna <vmiklos@frugalware.org> Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
This commit is contained in:
parent
52e8370bc7
commit
668f26fff6
@ -547,6 +547,16 @@ static int try_merge_strategy(const char *strategy, struct commit_list *common,
|
||||
int i = 0, ret;
|
||||
struct commit_list *j;
|
||||
struct strbuf buf;
|
||||
int index_fd;
|
||||
struct lock_file *lock = xcalloc(1, sizeof(struct lock_file));
|
||||
|
||||
index_fd = hold_locked_index(lock, 1);
|
||||
refresh_cache(REFRESH_QUIET);
|
||||
if (active_cache_changed &&
|
||||
(write_cache(index_fd, active_cache, active_nr) ||
|
||||
commit_locked_index(lock)))
|
||||
return error("Unable to write index.");
|
||||
rollback_lock_file(lock);
|
||||
|
||||
if (!strcmp(strategy, "recursive") || !strcmp(strategy, "subtree")) {
|
||||
int clean;
|
||||
|
@ -511,4 +511,13 @@ test_expect_success 'in-index merge' '
|
||||
|
||||
test_debug 'gitk --all'
|
||||
|
||||
test_expect_success 'refresh the index before merging' '
|
||||
git reset --hard c1 &&
|
||||
sleep 1 &&
|
||||
touch file &&
|
||||
git merge c3
|
||||
'
|
||||
|
||||
test_debug 'gitk --all'
|
||||
|
||||
test_done
|
||||
|
Loading…
Reference in New Issue
Block a user