【问题标题】:TortoiseHG, fork with subrepos - force commit&push .hgsubstate onlyTortoiseHG,带有子存储库的分叉 - 仅强制提交和推送 .hgsubstate
【发布时间】:2017-10-13 08:09:45
【问题描述】:

有关于 mercurial 的公开回购(不是我的)。它包含两个子存储库。我已经为两个主要回购和两个子回购做了一个分叉。我想不时创建拉取请求,但我无法使子存储库正常工作。 当我克隆我的分叉存储库时,它将被下载,但两个子存储库将保持原始状态,而不是我的分叉存储库。如果我用分叉替换它们,我将无法提出拉取请求,因为我不想将原始存储库切换到我的子存储库。但我想同时更改 repo 和 subrepo。 一旦我找到了解决方案。我已经修改了 subrepo 的 .hg 文件夹中的 hgrc 文件。

It was:
[paths]
default = ssh://hg@bitbucket.org/originator/subrepo

变成:

[paths]
Me = ssh://hg@bitbucket.org/Me/subrepo
Original = ssh://hg@bitbucket.org/originator/subrepo

它完全按照应有的方式工作。我更改了代码,推送到我的子仓库,为子仓库创建了拉取请求。然后我在我的主仓库中推送了更改,它很有效。 .hgsubstate 现在正在提交存在于分叉仓库中的提交,但不在原始仓库中。当发起者同时处理两个拉取请求时,一切都会正常进行。

我是说,它以前有效,但现在不行。出于某种奇怪的原因,我不能只将 .hgsubstate 推送到分叉子存储库上存在的新子存储库修订版。我根本无法将它包含在提交中。我单击“提交”,但在结果提交中它不包括在内。而且我不知道如何强制包含在内-HG对此太“聪明”。 TortoiseHG 也将我的 subrepo 标记为脏。但是,如果我尝试同时添加 .hgsubstate 和我的脏仓库,它会出于某种原因尝试将更​​改推送到发起人的仓库。似乎我的 HG 无法提交 .hgsubstate 而不将更改推送到自身的子存储库。 有什么办法可以解决这个问题?我想要的只是提交和推送 .hgsubstate 而不做任何其他事情。

【问题讨论】:

    标签: mercurial mercurial-subrepos


    【解决方案1】:

    您是否相应地调整了您的 .hgsub 以使其既适用于您的本地路径,也适用于您推送到服务器的远程路径?

    建议在 .hgsub 部分中添加绝对意义上的路径描述。当我将子存储库与服务器上的目录结构中的相同级别但希望它们作为我自己的计算机上的子目录时,我曾经为此而苦苦挣扎。它帮助我向 .hgsub 添加了一个子路径部分:

    [subpaths]
    ssh://user@host.org/path/subrepo1 = ssh://user@host.org/subrepo1
    ssh://user@host.org/path/subrepo2 = ssh://user@host.org/subrepo2
    
    /home/user/project/subrepo1 = /home/user/subrepo1
    /home/user/project/subrepo2 = /home/user/subrepo2
    
    project/subrepo1 = subrepo1
    project/subrepo2 = subrepo2
    

    【讨论】:

    • 这将帮助我使用我的回购协议,但这实际上不是问题。问题是如果我修改 .hgsub,修改后的版本将在拉取请求中提供。这是个问题 - 我不能只修改 .hgsub。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-01
    • 2019-11-10
    • 1970-01-01
    • 2018-08-30
    相关资源
    最近更新 更多