2009-12-28 5 views
1

У меня ошибка при попытке конвертировать git-хранилище в mercurial. Когда я бегу:Проблема преобразования git в mercurial

hg convert gitdir hgdir

Я получаю это:

UnboundLocalError: local variable 'tz' referenced before assignment

Справочная информация: Я только что установил TortoiseHg и позволил расширение новообращенного.

Похоже, что преобразование nmercurial имеет проблему с репозиторием git. Я управлял репозиторием git с git-gui (под окнами).

Вот полный выход:

scanning source... 
** unknown exception encountered, details follow 
** report bug details to http://mercurial.selenic.com/bts/ 
** or [email protected] 
** Mercurial Distributed SCM (version 1.4.1) 
** Extensions loaded: extdiff, convert 
Traceback (most recent call last): 
    File "hg", line 36, in <module> 
    File "mercurial\dispatch.pyo", line 16, in run 
    File "mercurial\dispatch.pyo", line 30, in dispatch 
    File "mercurial\dispatch.pyo", line 46, in _runcatch 
    File "mercurial\dispatch.pyo", line 449, in _dispatch 
    File "mercurial\dispatch.pyo", line 319, in runcommand 
    File "mercurial\dispatch.pyo", line 500, in _runcommand 
    File "mercurial\dispatch.pyo", line 454, in checkargs 
    File "mercurial\dispatch.pyo", line 448, in <lambda> 
    File "mercurial\util.pyo", line 386, in check 
    File "hgext\convert\__init__.pyo", line 229, in convert 
    File "hgext\convert\convcmd.pyo", line 398, in convert 
    File "hgext\convert\convcmd.pyo", line 312, in convert 
    File "hgext\convert\convcmd.pyo", line 109, in walktree 
    File "hgext\convert\convcmd.pyo", line 267, in cachecommit 
    File "hgext\convert\git.pyo", line 112, in getcommit 
UnboundLocalError: local variable 'tz' referenced before assignment 
+0

Обсуждение продолжается здесь (где оно действительно принадлежит): http://markmail.org/thread/yazxa5la524umbnf –

+0

Там нет ответа, по крайней мере, пока нет. Вы знаете, как это решить? – jdigital

+0

Я посмотрел на код, о котором идет речь, но я не знаю, почему переменная 'tz' заканчивается несвязанной. Надеюсь, вы можете опубликовать репозиторий, как предложил Патрик, чтобы мы могли помочь вам лучше. –

ответ

1

С помощью Patrick (см. Поток, на который ссылается Martin Geisler выше), я обнаружил причину проблемы: запись реестра cmd.exe AutoRun, выводящая строку текста.

Mercurial convert не ожидал этой дополнительной строки (которая выводилась, когда mercurial запускала команды git, чтобы пересечь существующий репозиторий), и это заставило программу конвертации задохнуться. Удаление записи AutoRun (HKLM \ Software \ Microsoft \ Command Processor \ AutoRun) устранило исключение.

0

кажется мне, как это расширение новообращенного сломана и нуждается в фиксации, так что, возможно, вам следует прислушаться к советам в самом начале сообщения.

У меня нет опыта вообще с Mercurial, поэтому все, что я могу предложить, это обходное решение: объединить git встроенный быстрый экспорт и hg-fastimport. Удачи!

1

Похоже, что эта часть расширения конвертирования предполагает, что в какой-либо точке кода разбора журнала будет установлен либо «автор», либо «коммиттер». Можете ли вы попытаться отследить, какая фиксация была преобразована в то время, и показать нам вывод «git log» для этого коммита?

+0

Я пришел к одному и тому же выводу, но я не понял, как определить, какое совершение вызывает проблему. Похоже, hg convert - это фаза сканирования, а не в фазе преобразования. – jdigital

Смежные вопросы