Ртутная ветка с пустым названием - PullRequest
0 голосов
/ 20 мая 2018

В моем репозитории Mercurial каким-то образом кто-то ввел пустое имя ветки:

enter image description here

Если я 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, а затем переключался обратно на свою рабочую ветку и нажимал, и это тот же результат.

Если я откатывалсякоммит, обновление моей активной ветки, внесение изменений и коммит + push, все работает нормально.Так что на данный момент я не знаю, как справиться с этой мошеннической ветвью.

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Вы можете изменить имя ветки в любом данном репозитории, используя hg convert с опцией --branchmap .

В этом конкретном случае я не знаю, может ли странное именование вызватьпроблема с этой функцией - я думаю, вам придется попробовать и посмотреть.

Теперь проблема с переименованием ветвей заключается в том, что если репозиторий был общим (push / pull / cloned), то модифицированный клон будетне синхронизироваться с другими.Таким образом, вам придется найти каждый клон и выполнить одну и ту же операцию для всех из них.Я думаю, что это будет работать нормально после факта (т.е. они смогут синхронизироваться правильно).

0 голосов
/ 20 мая 2018

Вместо этого я обновил исходный код Redmine.

То, что код вызывает за кулисами:

hg rhsummary --encoding=ascii --config extensions.redminehelper="C:\Program Files\redmine-3.4.5\lib\redmine\scm\adapters\mercurial\redminehelper.py"

Проблема в том, что неправильно названныйВ ветви сгенерирована серия символов «00» (NUL).Вместо того, чтобы выяснить, как переименовать ветку, я ввел код для замены \x00 на «_».

Если есть способ исправить это в Mercurial, я все равно хотел бы исправить это врепо.

...