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>
diff --git a/branch.c b/branch.c index 56e9492..b1e59f2 100644 --- a/branch.c +++ b/branch.c
@@ -166,7 +166,7 @@ void remove_branch_state(void) { 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("SQUASH_MSG")); }
diff --git a/builtin-rerere.c b/builtin-rerere.c index 69c3a52..1db2e0c 100644 --- a/builtin-rerere.c +++ b/builtin-rerere.c
@@ -429,7 +429,7 @@ if (!is_rerere_enabled()) 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); read_rr(merge_rr); return fd;
diff --git a/t/t4200-rerere.sh b/t/t4200-rerere.sh index cf10557..b5a4202 100755 --- a/t/t4200-rerere.sh +++ b/t/t4200-rerere.sh
@@ -57,7 +57,7 @@ ! git merge first ' -sha1=$(sed -e 's/ .*//' .git/rr-cache/MERGE_RR) +sha1=$(sed -e 's/ .*//' .git/MERGE_RR) rr=.git/rr-cache/$sha1 test_expect_success 'recorded preimage' "grep ^=======$ $rr/preimage" @@ -143,7 +143,7 @@ test_expect_success 'rerere prefers first change' 'test_cmp a1 expect' 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' @@ -190,7 +190,7 @@ git add file2 && git commit -m version2 && ! git merge fourth && - sha1=$(sed -e "s/ .*//" .git/rr-cache/MERGE_RR) && + sha1=$(sed -e "s/ .*//" .git/MERGE_RR) && rr=.git/rr-cache/$sha1 && echo Cello > file2 && git add file2 &&