【问题标题】:How do I ignore a mercurial branch with spaces in it?如何忽略其中带有空格的 mercurial 分支?
【发布时间】:2020-06-02 21:02:29
【问题描述】:

我正在尝试使用 hggit 来使用 mercurial 作为 git 存储库的客户端。

我无法推送到 git 存储库,因为某个天才创建了一个名为 GTS 170528 的分支(注意空格)。

从 hg 推送到 git 时,出现错误:

dulwich.errors.RefFormatError: refs/heads/GTS 170528

我只能假设空间是问题所在。我知道您不能真正重命名 hg 分支。

关于如何让 Mercurial 在出站时忽略它,或 git 在入站时不关心它的任何想法?

【问题讨论】:

  • 这在 Git 中也是一个糟糕的分支名称。重命名该分支。
  • @torek -- 这并没有真正重命名分支,它只是关闭它。唉。
  • 在那个线程中有一个关于使用转换扩展的答案,它真的可以重命名分支。

标签: git mercurial hg-git


【解决方案1】:

最短的路径是让分支在 git 中重命名, 为了让它符合git-check-ref-format

您可以在dulwich issues 中找到您的相同案例, 这导致了new issue for hggit,但后者对您的方案没有帮助

因此,如前所述,让 git 分支遵守check-ref-format

PS:关于重命名 Mercurial 分支,请记住,书签也适用于 hggit 同步,而不仅仅是命名分支

【讨论】:

    【解决方案2】:

    这是 hg-git 中的 bug,我们刚刚申请了 a fix for it。您可以通过以下几种方式之一解决此问题:

    • 升级到 hg-git 0.10.0。

    • 关闭有问题的分支:

       hg update "GTS 170528"
       hg commit -m "close branch with silly name" --close-branch
      
    • 如果是书签,请重命名:

       hg bookmark --rename "GTS 170528" "GTS-170528"
      

    由于 Git 实际上并不跟踪分支,而只是有指向它们的标记,因此只需删除或更改分支或书签即可让推送成功。因此,您不需要真正更改提交的分支,只需遵循advice 中关于如何重命名分支的说明即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多