我想我一定是误解了this post的作者,当他说:
hg pull -r X -f repo # ... will give me all changesets up to X
因为当我这样做时(在一个新创建的存储库中),我只获得了那些作为修订版X所在分支的祖先的变更集。
我想要的 全部已按时间顺序提交到远程仓库并包括X的变更集。换句话说,除了X所在的分支(及其祖先)之外,我还希望在X之前提交的所有其他分支(包括封闭分支)尚未合并到X的分支。
我如何表达命令呢?
BTW,在这个特殊的仓库中,有一些封闭的分支,其名称与当前的开放/活动分支相同,因此如果解决方案涉及枚举所有分支名称(这将是繁琐的,但可行的),它仍然需要得到这些分支以及开放分支的闭合事件。(为了完整性,我想我也应该说我在Windows上运行TortoiseHG 2.7命令行的命令,以防我上面描述的hg pull
的行为不是我应该做的已经预料到了。)
答案 0 :(得分:2)
在拉入单个命令时,您无法做到这一点。 “按时间顺序”意味着比你想象的要少得多。任何人都可以使用他们想要的任何时间戳进行提交,因此日期不是好的选择器。如果您的意思是“使用较早的修订版号”,那么它们也可以从repo更改为repo,因此提取版本号低于N的所有修订版可能会为不同的调用提供不同的结果。
如果你想尝试基于修订号的版本,你可能会在本地将所有东西都拉到垃圾回购中,然后只把你想要的东西推到新的本地存储库中,这是最好的运气:
hg clone http://remotehost/path local-clone # clones everything
hg init another-local-clone
hg push --repository local-clone --rev '0:X' another-local-clone
之后,另一个本地克隆将拥有本地克隆中修订号为X或更低的所有变更集,这与(但不保证)与远程克隆相同
如果这看起来很尴尬,那是因为“之前提交的”在DVCS领域并不是一个非常有用的概念 - 它假定线性并不是Mercurial认为不重要的。