mirror of
https://github.com/git/git
synced 2024-09-13 13:24:41 +00:00
Move MERGE_RR from .git/rr-cache/ into .git/
If you want to reuse the rerere cache in another repository, and set a symbolic link to it, you do not want to have the two repositories interfer with each other by accessing the _same_ MERGE_RR. For example, if you use contrib/git-new-workdir to set up a second working directory, and you have a conflict in one working directory, but commit in the other working directory first, the wrong "resolution" will be recorded. The easy solution is to move MERGE_RR out of the rr-cache/ directory, which also corresponds with the notion that rr-cache/ contains cached resolutions, not some intermediate temporary states. Noticed by Kalle Olavi Niemitalo. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
99d698f1e7
commit
0af0ac7ebb
2
branch.c
2
branch.c
|
@ -166,7 +166,7 @@ void create_branch(const char *head,
|
||||||
void remove_branch_state(void)
|
void remove_branch_state(void)
|
||||||
{
|
{
|
||||||
unlink(git_path("MERGE_HEAD"));
|
unlink(git_path("MERGE_HEAD"));
|
||||||
unlink(git_path("rr-cache/MERGE_RR"));
|
unlink(git_path("MERGE_RR"));
|
||||||
unlink(git_path("MERGE_MSG"));
|
unlink(git_path("MERGE_MSG"));
|
||||||
unlink(git_path("SQUASH_MSG"));
|
unlink(git_path("SQUASH_MSG"));
|
||||||
}
|
}
|
||||||
|
|
|
@ -429,7 +429,7 @@ static int setup_rerere(struct path_list *merge_rr)
|
||||||
if (!is_rerere_enabled())
|
if (!is_rerere_enabled())
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
merge_rr_path = xstrdup(git_path("rr-cache/MERGE_RR"));
|
merge_rr_path = xstrdup(git_path("MERGE_RR"));
|
||||||
fd = hold_lock_file_for_update(&write_lock, merge_rr_path, 1);
|
fd = hold_lock_file_for_update(&write_lock, merge_rr_path, 1);
|
||||||
read_rr(merge_rr);
|
read_rr(merge_rr);
|
||||||
return fd;
|
return fd;
|
||||||
|
|
|
@ -57,7 +57,7 @@ test_expect_success 'conflicting merge' '
|
||||||
! git merge first
|
! git merge first
|
||||||
'
|
'
|
||||||
|
|
||||||
sha1=$(sed -e 's/ .*//' .git/rr-cache/MERGE_RR)
|
sha1=$(sed -e 's/ .*//' .git/MERGE_RR)
|
||||||
rr=.git/rr-cache/$sha1
|
rr=.git/rr-cache/$sha1
|
||||||
test_expect_success 'recorded preimage' "grep ^=======$ $rr/preimage"
|
test_expect_success 'recorded preimage' "grep ^=======$ $rr/preimage"
|
||||||
|
|
||||||
|
@ -143,7 +143,7 @@ test_expect_success 'rerere kicked in' "! grep ^=======$ a1"
|
||||||
test_expect_success 'rerere prefers first change' 'test_cmp a1 expect'
|
test_expect_success 'rerere prefers first change' 'test_cmp a1 expect'
|
||||||
|
|
||||||
rm $rr/postimage
|
rm $rr/postimage
|
||||||
echo "$sha1 a1" | perl -pe 'y/\012/\000/' > .git/rr-cache/MERGE_RR
|
echo "$sha1 a1" | perl -pe 'y/\012/\000/' > .git/MERGE_RR
|
||||||
|
|
||||||
test_expect_success 'rerere clear' 'git rerere clear'
|
test_expect_success 'rerere clear' 'git rerere clear'
|
||||||
|
|
||||||
|
@ -190,7 +190,7 @@ test_expect_success 'file2 added differently in two branches' '
|
||||||
git add file2 &&
|
git add file2 &&
|
||||||
git commit -m version2 &&
|
git commit -m version2 &&
|
||||||
! git merge fourth &&
|
! git merge fourth &&
|
||||||
sha1=$(sed -e "s/ .*//" .git/rr-cache/MERGE_RR) &&
|
sha1=$(sed -e "s/ .*//" .git/MERGE_RR) &&
|
||||||
rr=.git/rr-cache/$sha1 &&
|
rr=.git/rr-cache/$sha1 &&
|
||||||
echo Cello > file2 &&
|
echo Cello > file2 &&
|
||||||
git add file2 &&
|
git add file2 &&
|
||||||
|
|
Loading…
Reference in a new issue