Выгрузка git-репозитория с Mercurial завершается с ошибкой "путь содержит недопустимый компонент.hg/00changelog.i"

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

Ошибка возникает при клонировании "преобразованного" хранилища с помощью команды hg, выполнив следующие действия:

  • создать репозиторий git на Bitbucket
  • локально клонировать с помощью команд git, добавить проект Android, зафиксировать, нажать. Работает отлично.
  • Запустите команду hg-git "convert" в локальной папке.
  • Я добавляю, фиксирую, нажимаю на Bitbucket.

Структура проекта была автоматически изменена плагином, и в папке my была сгенерирована новая папка с файлами.hg, которая выглядит следующим образом:

  |-My_awesome_android_app
        |–.git
        |– My_awesome_android_app_hg
            |-.hg
        |– android_app_files_in_this_folder

Когда я пытаюсь импортировать с помощью команд Mercurial "преобразованный" проект git из Bitbucket, он прерывается:

hg clone git@bitbucket.org:xxxxx/My_awesome_android_app.git
destination directory: My_awesome_android_app-git
importing git objects into hg
updating to branch default
abort: path 'fluffy-bitbucket-git-hg/.hg/00changelog.i' is inside nested repo 'fluffy-bitbucket-git-hg'

Чтобы попытаться решить проблему "гнезда", я прочитал в одном SO сообщении, что папка.hg должна находиться на том же уровне, что и папка.git. Структура изменилась на:

|-My_awesome_android_app
        |–.git
        |–.hg
        |– android_app_files_in_this_folder

Я фиксирую изменения, нажимаю Git-репо, затем снова пытаюсь hg pull:

hg clone git@bitbucket.org:xxxxx/My_awesome_android_app.git
destination directory: My_awesome_android_app-git
importing git objects into hg
updating to branch default
abort: path contains illegal component: .hg/00changelog.i

Я почти 2 дня искал, чтобы решить эту вторую ошибку, переустановил все с brew, все закончилось неудачей, затем снова macport, проверил python и mercurial, попытался создать новое репозиторий bitbucket и начать с нуля, посмотрел на GG и другие связанные сообщения, модифицированные.hgrc файл, я все еще получаю ошибку.

Я попробовал другой вариант: "Зеркальное копирование git и mercurial репозитории ленивым способом" Грега Малколма (тот же локальный проект отражает / синхронизирует и репозиторий git с одной стороны, и mercurial с другой).

Это было единственное рабочее решение во время моего теста. Но это не совсем то, что я хотел сделать, так как у вас есть 2 разных репозитория для синхронизации, и я хотел бы иметь только один с.git и.hg.

Я надеюсь, что кто-то может помочь мне или решить сообщение об ошибке для решения с помощью одного репозитория Git, принимающего оба.git push и hg pull, и или сказать мне, является ли "зеркальное отображение" 2 разных репо (один git, одна hg) единственный рабочий вариант.

Спасибо!

Конфигурация / установка: Mac Os Sierra Установил остальное, как сказано в этом ответе SO - macports - python 2.7 - Mercurial - hggit

Содержимое файла.hgrc:

[ui]
username = xxxx xxxxxx <pxxxxx.xxxxxx@xxxx.xxx> (in reality it is my mail adress)
ssh = ssh -C
[extensions]
hgext.convert= 
hgext.bookmarks =
hggit =
[git]
intree = True

1 ответ

Решение

Команда "convert" не является частью hg-git, но является отдельным расширением и не создает репозиторий, совместимый с исходным репозиторием Git.

Чтобы прозрачно использовать Mercurial для удаленно размещенного репозитория git с hg-git, просто клонируйте репозиторий непосредственно из URL-адреса Git, например:

hg clone git@bitbucket.org:user/repo

После этого вы сможете извлекать данные из этого хранилища и отправлять их напрямую, используя обычные команды Mercurial.

Другие вопросы по тегам