来自分支的 Mercurial 克隆

Posted

技术标签:

【中文标题】来自分支的 Mercurial 克隆【英文标题】:Mercurial clone from a branch 【发布时间】:2011-05-31 15:23:08 【问题描述】:

我们有一个包含三个命名分支的存储库,我想克隆其中一个分支。是否有一个善变的命令来做到这一点?如果我使用 hg clone 提供(分支的)路径,我会收到 404 错误。

【问题讨论】:

【参考方案1】:

我正在使用 Mercurial-4.0.2。我们可以通过在克隆 url 中附加带有 # 符号的分支名称来指定分支名称。

例如

hg clone https://user@cloneurl/my_product#MY_BRANCH

hg clone --verbose https://user@cloneurl/my_product#MY_BRANCH "C:\myCode"

【讨论】:

完美运行!【参考方案2】:

hg clone <URL> -b BRANCHNAME 按要求克隆单个分支

【讨论】:

【参考方案3】:

我知道这篇文章很老了,但我也有同样的问题。我发现了这个技巧:

hg clone /path/to/your/repo -r 0
hg pull -u -b branchname

【讨论】:

您可能想提一下使用它时的区别。显然幕后发生了微妙的变化。【参考方案4】:

本杰明是对的。但这真的是你想做的吗?特别是,您只会获得构成该分支所需的变更集,而不会获得其他任何东西 - 例如,这会阻止您从主干或其他分支中提取变更集。您最好克隆整个存储库,然后在您感兴趣的分支中工作;这将使您的存储库与您更轻松地从中提取的存储库保持同步。

【讨论】:

基本上我一直在从事 Subversion,如果您能指出一个资源来解释这一点,我将不胜感激,因为大多数资源只是谈论如何在 hg 中做。跨度> 我正在自己进行过渡。您需要做出的根本转变是,您不再只是使用 Mercurial 处理本地副本。您拥有的是一个存储库,就像您从中克隆的那个一样。当您执行hg pull 时,您实际上是在使用上游记录的更改更新您的存储库;当您hg push 时,您正在推动您的更改。 hg update 所做的只是使目录中的文件反映存储库的状态,无论是修订版、分支标签还是您选择的任何内容。 这样做的一个原因是您只使用 Mercurial 单向,例如将更改部署到服务器。在这种情况下,您真的希望复制非生产分支。【参考方案5】:

hg clone http://your/repo -r branchname 应该可以解决问题。

【讨论】:

有什么方法可以将该分支中的代码从一个特定版本克隆到该分支的顶端。我尝试了 hg clone NAME@bitbucket.org/TEAM/REPO -r BRANCH_NAME --startrev REVISION_NUMBER ;但它给出了一个错误“hg 克隆:选项 --startrev 无法识别”

以上是关于来自分支的 Mercurial 克隆的主要内容,如果未能解决你的问题,请参考以下文章

是否可以使用bazaar,mercurial或git进行部分克隆/分支?

在推送之前丢弃 Mercurial 中的本地分支

合并来自不同存储库的 Mercurial 分支

mercurial 将一个分支设置为新的默认分支

创建新的 mercurial 存储库克隆 SINCE 修订版

如何在 Mercurial 中克隆存储库的子文件夹?