我有一个 Mercurial 存储库,现在处于奇怪的状态。这就是 TortoiseHG 中的样子:
我认为这是不可能的。修订版 54 的父级为“-1 (000000000000)”(即无)。显然,我对 Mercurial 还有些不明白,任何人都可以让我知道这意味着什么 - 以及它必须发生什么才能进入这种状态。据我所知,它只是推送和拉出一些东西——而且没有人使用任何古怪的扩展。
修订版 54 和 55 只是添加标签,但如果我“更新 -C”到修订版 54,我最终只会得到 .hgtags 文件。
我已经从修订版 53 克隆了一个来解决这个问题。但我宁愿了解这里发生了什么,这样我就可以避免再次发生。
当你看着变更集的定义 https://web.archive.org/web/20150909233855/https://mercurial.selenic.com/wiki/ChangeSet, 你看:
每个变更集都有零个、一个或两个父变更集:
- 如果提交是合并,它有两个父变更集。
- 如果变更集是存储库中的根,则它没有父级。
一个存储库中可能有多个根(通常只有一个),每个代表一个分支的开始.
“更新”回已有子变更集,更改文件,然后提交创建一个新的子变更集,从而启动一个新分支。可以命名分支。
所以也许这就是你所做的:
- 更新回 53(当时已经有自己的子“54”)
- 改变文件
-
committing, thus starting a new branch from 54, with no parent
(that would make a second commit with the same parent)
or:
comitting 53 with a --close-branch option https://web.archive.org/web/20150912111705/https://mercurial.selenic.com/wiki/PruningDeadBranches,
- 潜在的新提交(无需切换回另一个分支)可能会开始一个新的提交
Ry4an https://stackoverflow.com/users/8992/ry4an-brase(一位真正的 Mercurial 专家;))插话并评论:
--close-branch
除了从列表中隐藏分支之外不做任何事情,并且下次您在该分支上提交时它会被撤消。它不会创建多个根。
VonC 的诊断是正确的,多头.
但没有组合'update
' and 'commit
'会让你进入那种状态。
为了最终获得多个根,通常会执行“hg pull
' 来自仓库并使用--force
覆盖“unrelated repositories
“ 警告。
(“无父级”,意味着父级 ID 设置为 00000,请参阅“幕后” http://hgbook.red-bean.com/read/behind-the-scenes.html:
(source: red-bean.com http://hgbook.red-bean.com/read/figs/revlog.png)
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)