我有一个名为“我的项目”的存储库,它位于一个名为“framework”的框架中。它们中的每一个都有它的存储库,它们之间没有关系,每个分支和标签。我希望在我的存储库中接收“框架”的更新,但只能从“默认”分支而不是其他分支。当然,我不希望在我的存储库中有“框架”标签,因为它是一个完全不同的项目。
我有Mercurial HG,我希望能够直接从“管理存储库”页面从“框架”存储库中提取更改。
此外,我只想下载最新的变更集,因为我不久前开始了我的项目。如果我可以将“框架”的默认分支重命名为我的仓库中的其他名称,那将是完美的,例如“框架变更集”。
注意:我没有对“framework”存储库的写访问权。
我试着做mercurial wiki说的话:
hg pull -f -r default "framework"
没关系,直到我意识到我已经从“框架”存储库下载了所有标签,并且我从远程存储库下载了所有变更集。此外,在TortoiseHG-> Configuration->同步时,我将“框架”存储库作为该项目的远程存储库,并从远程存储库中取出,我从该存储库获得了所有分支。
当然我无法更改默认分支名称,并更新了我的默认分支,即使我尝试使用hg convert --branchmap(但我不知道如何使用它)。
我的问题有解决办法吗?甚至是部分解决方案?
答案 0 :(得分:6)
我认为你可以通过以下方式解决这个问题:
使用命令行: hg pull -r <branch name>
使用TortoiseHg v1.1.X:
您可以随时手动编辑.hgtags文件以删除在“框架”分支上创建的标记,但我不知道如何在没有标记的情况下提取变更集。
使用mq扩展名,您可以更改新“框架”更改集所在的命名分支。有关如何在TortoiseHg v1.1.X中执行此操作的说明以及CLI,请参阅“Apply patches in branch”的答案。这里的基本思想是使用您想要的名称创建一个命名分支,将您拉入补丁队列的所有“框架”变更集导入,然后将它们应用于新的命名分支。他们将从“框架”中删除分支名称,并使用您应用它们的分支的分支名称。
如果您要多次从“框架”中提取,则需要使用修补程序队列在每次拉动时仅移动新的变更集。您应该很容易看到尚未移动的更改集。
答案 1 :(得分:0)
我们可以通过在克隆网址中附加带#符号的分支名称来指定分支名称。
e.g。
hg clone --verbose https://user@cloneurl/my_product#MY_BRANCH "C:\myCode"