共享 RereRe 缓存

28

我看到人们建议所有开发者在他们的计算机上设置一个符号链接,从 C:\project\.git\rr-cache 到一个共享文件夹\\server\rr-cache

然而,如果可能的话,将该文件夹包含在 git 存储库中共享似乎更方便。我看到有人提到过这个解决方案,但并没有说明如何做到。

有任何想法吗?


如果您需要共享rerere缓存,您可能会经常推送已经变基的分支。我认为解决这个问题的标准方法不是共享缓存,而是永远不要变基可见的内容。然后每个人都可以从自己的私有分支中清理自己的变基问题,因为他们可能知道自己在做什么。 - Benjamin Bannier
1
你不能将rr-cache包含在存储库中,因为它已经存在于其中。如果你问是否可能将其作为历史记录的一部分:是的,但这似乎不是一个好主意(它会因为改变历史而改变,而不是因为Git跟踪的内容发生了变化,而且你必须在每个新的repo中设置被跟踪的rr-cache)。 - fork0
这是正确的,但如果你通过脚本设置它,你就可以继续了。 - Adam Dymitruk
2个回答

21

可以通过一个专门的分支进行共享。如果在该分支上存在冲突并解决了它,这意味着尝试以两种不同的方式解决相同的冲突。毋庸置疑,这将成为规则的例外情况。

对于此问题的其他人,请搜索“Branch per Feature”以查看其有用之处。

挂钩可以自动同步常见的rr-cache分支。

以下是需要自动化的内容。rereresharing是您要合并到的示例分支,rr-cache是存储解决方案的分支。所有这些步骤都没有问题:

git checkout --orphan rereresharing start-sprint-1 
git --git-dir=.git --work-tree=.git/rr-cache checkout -b rr-cache
git --git-dir=.git --work-tree=.git/rr-cache add -A
git --git-dir=.git --work-tree=.git/rr-cache commit -m "initial cache"
git clean -xdf
git checkout rereresharing 
git merge --no-ff FTR-1
git merge --no-ff FTR-2
vim opinion.txt # resolve conflict 
git add -A
git commit
git checkout rr-cache 
git --git-dir=.git --work-tree=.git/rr-cache add -A
git --git-dir=.git --work-tree=.git/rr-cache commit -m "resolution"
git remote add origin ../bpf-central
git push origin rereresharing rr-cache 
cd - # assumes you were previously in the other local repo
git remote add origin ../bpf-central
git fetch
git branch rr-cache origin/rr-cache 
ls .git/rr-cache
git --git-dir=.git --work-tree=.git/rr-cache checkout rr-cache -- .
ls .git/rr-cache

现在你已经准备好执行相同的合并操作,这样你就可以解决冲突了。


3
你可以为rr-cache创建一个断开的分支,即使用命令checkout --orphan rr-cache。这样看起来更好。 - kan
在最新版本的Git中,-b和--orphan不兼容。 - Byron Sommardahl
1
我认为@kan建议你在创建“rr-cache”分支的第二行时用“--orphan”替换“-b”,这样“rr-cache”就没有任何先前的历史记录了。 - Byron Sommardahl
将此放在git下是否会使缓存在60天后被清除?在更改某些内容时打开rerere,然后关闭它,是否会导致仅更新那些文件/目录的rerere缓存? - Adrian

6
也许,与其分享rr-cache,另一个选择是使用rerere-train.sh从现有的Git历史记录中学习冲突解决方法。请注意不要改变HTML标签格式。

这将在什么时候运行?每当遇到合并冲突时吗? - rich remer
1
每当有人解决了冲突并且您想让Git在本地重用该解决方案时,您需要运行它。 - sschuberth
但是你如何使用那个脚本呢? - arekolek
在引入脚本的提交消息中提供了一些帮助,请参见https://github.com/git/git/commit/c11c7a5db3676258512c4067c5279377811d3ab8。 - sschuberth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接