【发布时间】:2018-05-20 01:00:29
【问题描述】:
在我的 Mercurial 存储库中,不知何故,有人输入了一个空白分支名称:
如果我hg id -r 2004,我确实会得到空白文本。现在的问题是,这会导致我们的 Redmine 安装出现问题,因为它无法将存储库与错误同步:
NoMethodError (undefined method `[]' for nil:NilClass):
lib/redmine/scm/adapters/mercurial_adapter.rb:123:in `branchmap'
app/models/repository/mercurial.rb:150:in `latest_changesets_cond'
app/models/repository/mercurial.rb:119:in `latest_changesets'
app/controllers/repositories_controller.rb:94:in `show'
lib/redmine/sudo_mode.rb:63:in `sudo_mode'
我一直在想办法解决这个问题——是否有某种方法可以重命名分支或以其他方式摆脱它。
我尝试切换到分支,然后切换到 hg commit --close-branch。当我尝试推送时,出现错误:
Traceback (most recent call last):
File "hg", line 61, in <module>
File "mercurial\dispatch.pyo", line 88, in run
File "mercurial\dispatch.pyo", line 183, in dispatch
File "mercurial\dispatch.pyo", line 324, in _runcatch
File "mercurial\dispatch.pyo", line 332, in _callcatch
File "mercurial\scmutil.pyo", line 154, in callcatch
File "mercurial\dispatch.pyo", line 314, in _runcatchfunc
File "mercurial\dispatch.pyo", line 918, in _dispatch
File "mercurial\dispatch.pyo", line 673, in runcommand
File "mercurial\dispatch.pyo", line 926, in _runcommand
File "mercurial\dispatch.pyo", line 915, in <lambda>
File "mercurial\util.pyo", line 1195, in check
File "mercurial\commands.pyo", line 4194, in push
File "mercurial\exchange.pyo", line 483, in push
File "mercurial\exchange.pyo", line 1069, in _pushchangeset
File "mercurial\exchange.pyo", line 697, in _pushcheckoutgoing
File "mercurial\discovery.pyo", line 338, in checkheads
File "mercurial\discovery.pyo", line 248, in _headssummary
我尝试了hg commit --close-branch,然后切换回我的工作分支并推送,结果相同。
如果我回滚提交,更新到我的活动分支,进行更改,然后提交+推送,一切正常。所以到目前为止,我不知道如何处理这个流氓分支。
【问题讨论】:
-
您使用的是哪个版本的 Mercurial?在哪个操作系统上?如果没有看到存储库,就很难诊断出这个分支是如何创建的。它可以使用 Mercurial pre 1.0 或有故障的扩展来创建。您是否愿意只删除分支还是将其合并到另一个分支中?