Merge branch 'en/t3433-rebase-stat-dirty-failure' into maint
The merge-recursive machinery failed to refresh the cache entry for a merge result in a couple of places, resulting in an unnecessary merge failure, which has been fixed. * en/t3433-rebase-stat-dirty-failure: merge-recursive: fix the refresh logic in update_file_flags t3433: new rebase testcase documenting a stat-dirty-like failure
This commit is contained in:
commit
569b89842d
@ -998,10 +998,13 @@ static int update_file_flags(struct merge_options *opt,
|
|||||||
free(buf);
|
free(buf);
|
||||||
}
|
}
|
||||||
update_index:
|
update_index:
|
||||||
if (!ret && update_cache)
|
if (!ret && update_cache) {
|
||||||
if (add_cacheinfo(opt, contents, path, 0, update_wd,
|
int refresh = (!opt->priv->call_depth &&
|
||||||
|
contents->mode != S_IFGITLINK);
|
||||||
|
if (add_cacheinfo(opt, contents, path, 0, refresh,
|
||||||
ADD_CACHE_OK_TO_ADD))
|
ADD_CACHE_OK_TO_ADD))
|
||||||
return -1;
|
return -1;
|
||||||
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
48
t/t3433-rebase-across-mode-change.sh
Executable file
48
t/t3433-rebase-across-mode-change.sh
Executable file
@ -0,0 +1,48 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
test_description='git rebase across mode change'
|
||||||
|
|
||||||
|
. ./test-lib.sh
|
||||||
|
|
||||||
|
test_expect_success 'setup' '
|
||||||
|
mkdir DS &&
|
||||||
|
>DS/whatever &&
|
||||||
|
git add DS &&
|
||||||
|
git commit -m base &&
|
||||||
|
|
||||||
|
git branch side1 &&
|
||||||
|
git branch side2 &&
|
||||||
|
|
||||||
|
git checkout side1 &&
|
||||||
|
git rm -rf DS &&
|
||||||
|
test_ln_s_add unrelated DS &&
|
||||||
|
git commit -m side1 &&
|
||||||
|
|
||||||
|
git checkout side2 &&
|
||||||
|
>unrelated &&
|
||||||
|
git add unrelated &&
|
||||||
|
git commit -m commit1 &&
|
||||||
|
|
||||||
|
echo >>unrelated &&
|
||||||
|
git commit -am commit2
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'rebase changes with the apply backend' '
|
||||||
|
test_when_finished "git rebase --abort || true" &&
|
||||||
|
git checkout -b apply-backend side2 &&
|
||||||
|
git rebase side1
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'rebase changes with the merge backend' '
|
||||||
|
test_when_finished "git rebase --abort || true" &&
|
||||||
|
git checkout -b merge-backend side2 &&
|
||||||
|
git rebase -m side1
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'rebase changes with the merge backend with a delay' '
|
||||||
|
test_when_finished "git rebase --abort || true" &&
|
||||||
|
git checkout -b merge-delay-backend side2 &&
|
||||||
|
git rebase -m --exec "sleep 1" side1
|
||||||
|
'
|
||||||
|
|
||||||
|
test_done
|
Loading…
Reference in New Issue
Block a user