Как устранить ошибку hg-fast-export: «Имя ветки не соответствует стандартам GIT: refs /heads / master» - PullRequest
6 голосов
/ 02 марта 2012

После решения бесчисленных проблем с помощью инструмента hg-fast-export в Windows (от привередливой версии python, необходимой для очистки ртутного репозитория, чтобы удовлетворить инструмент), я наткнулся на ошибку n, которую не могу решить:

master: Exporting full revision 1/98 with 142/0/0 added/changed/removed files
fatal: Branch name doesn't conform to GIT standards: refs/heads/master
fast-import: dumping crash report to .git/fast_import_crash_5956
Traceback (most recent call last):
  File "../fast-export/hg-fast-export.py", line 388, in <module>
    options.statusfile,authors=a,sob=options.sob,force=options.force))
  File "../fast-export/hg-fast-export.py", line 322, in hg2git
    c=export_commit(ui,repo,rev,old_marks,max,c,authors,sob,brmap)
  File "../fast-export/hg-fast-export.py", line 214, in export_commit
    export_file_contents(ctx,man,added)
  File "../fast-export/hg-fast-export.py", line 126, in export_file_contents
    wr(d)
  File "../fast-export/hg-fast-export.py", line 28, in wr
    print msg
  File "c:\Python26\lib\site-packages\mercurial\windows.py", line 70, in write
    raise IOError(errno.EPIPE, 'Broken pipe')
IOError: [Errno 32] Broken pipe

Похоже, ошибка: Имя ветки не соответствует стандартам GIT: refs / heads / master

Кто-нибудь знает, как решить эту проблему?

Мой ртутный репозиторий чист и работает правильно, только с одной головкой, все хорошо и горячо готово к экспорту.

EDIT:

Я решил проблему с помощью TortoiseHG в сочетании с hg-git. Для тех, кто ищет способ экспорта ртутного представителя. для мерзавца или наоборот, просто следуйте инструкциям, описанным здесь: http://www.ffuts.org/blog/accessing-a-git-repository-with-tortoisehg-on-windows/

1 Ответ

9 голосов
/ 05 апреля 2012

Я только что решил эту проблему для себя.

Оказывается, что Python заставлял быть '\r\n' в конце каждой строки, которая была выведена hg-fast-export.Это означало, что имена веток интерпретировались как 'refs/heads/master\r', что недопустимо.

Ответ на этот вопрос ...

Заставить Python перестать выдавать возврат каретки при записипереводы строки в sys.stdout

... могут быть помещены вверху файла hg-fast-export для переключения в двоичный режим.

РЕДАКТИРОВАТЬ:
Код для добавления:

if sys.platform == "win32":
   import os, msvcrt
   msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)

Просто поместите его в верхней части hg-fast-export.py и убедитесь, что у вас есть import sys в верхней части.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...