为了与工作树一起使用,我正在尝试制作一个裸克隆,但远程分支映射到远程跟踪分支。
我正在尝试建立一个通用的工作树工作流程。我的仓库真的很大,所以克隆它很昂贵。即使使用硬链接,当 repos 被gc
编辑时,它们往往会随着时间的推移而分叉并占用额外的空间,并且一个 repo 中的 fetch 对另一个 repo 没有帮助,因此在工作树中工作似乎是显而易见的事情。(你必须相信我。)
工作树需要一个实际保存对象的“主”存储库。显然,这个克隆不能被删除,所以我想把它放在像/var/cache/git/reponame.wt.git
. (我正在为我和我的同事制定一个通用的解决方案,所以我必须让它相当万无一失。)
我可以使它成为一个常规克隆,但是它必须有一个分支被检出,然后该分支不能被任何其他工作树检出,所以我必须制作一个wt_dummy
可能会混淆人们的虚拟分支(例如)。我真正想做的是将主要回购作为bare
回购。
问题是git clone --bare
不会创建远程跟踪分支。因此,要制作“裸仓库但带有远程跟踪分支”,我已经开始走这条路
git clone --bare <remote> repo.tmp
mv repo.tmp.git reponame.wt.git
cd reponame.wt.git
git config core.bare true
git config --remove-section branch.master
... and I'm not quite there yet ...
但是a)它似乎太长太复杂了,并且b)git存储库仍然认为它已经master
签出。
有没有更好的方法来制作这个“带遥控器的裸克隆”?
(一般来说,也许有更好的方法来设置工作树,但我知道这处于堆栈溢出的“特定编程解决方案”范围的毛茸茸的边缘。)