mtu*_*tty 14 git version-control merge git-bare git-worktree
我正在研究一些服务器端软件来进行合并.通过使用git worktree它可以检查给定分支的裸仓库并将另一个分支合并到其中.即使有大型存储库,它也非常快.
唯一的例外似乎是合并master.当我这样做时,git worktree add /tmp/path/to/worktree master我收到一个错误:
致命:'master'已在'/ path/to/bare/repo'检出
但这显然不正确,git worktree list给出:
/ path/to/bare/repo(bare)
...当然,在那条路上没有工作树,只有你期望的裸仓库文件.
更新:我与git维护者联系,他们同意这可能是一个错误.我有一个初步补丁来测试.此外,我还能够在没有补丁的情况下重现所需的行为.
在这一点上,我不完全确定边界条件或根本原因是什么,并且可能会有来自git的修复.
事实证明这是git中的一个错误,从2.5及更高版本的worktree实现开始.
裸存储库仍然有一个HEAD reflink.无论该链接指向什么,git(最多包括2.10)都被认为是新克隆者的默认分支,并且(错误地)将其视为在活动工作树上.
我收到了来自git维护者的补丁来修复这种行为,它似乎有效.或者,应该可以在裸仓库上使用update-ref暂时从master切换.
我将测试这两个选项.
| 归档时间: |
|
| 查看次数: |
1210 次 |
| 最近记录: |