Выгрузка 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.