Почему мой репозиторий git пуст после использования hggit для добавления в него моего ртутного репозитория? - PullRequest
0 голосов
/ 11 декабря 2019

У нас очень большой репозиторий Mercurial - около 11 ГБ с примерно 130 000 коммитов. Я пытаюсь преобразовать его в git, используя расширение hggit Mercurial, и у меня странный опыт.

В качестве примечания я делаю это на Windows 10

Сначала ясоздайте пустой каталог и вызовите git init для инициализации репозитория git.

Затем я перехожу в каталог hg и запускаю (необычную для меня) команду hg bookmark hg согласно нескольким статьям, которые я прочитал.

Затем я выдаю hg push c:\path\to\repo

Вот результат:

enter image description here

Похоже, что хранилищебыл успешно обработан и передан.

Однако, когда я захожу в каталог репозитория git, он пуст, за исключением каталога .git. В этом каталоге git присутствуют все теги, и есть большой файл * .pack размером около 11 ГБ, который, я полагаю, связан с нашим репозиторием, учитывая его размер.

Я подумал, что мне нужно checkout ветку, прежде чем появятся файлы, но попытка извлечь недавнюю ветку приводит к:

error: pathspec 'rio' did not match any file(s) known to git.

Так что мой вопрос: Что мне нужно сделать, чтобы мои файлы появлялись в репозитории git?

Ответы [ 2 ]

2 голосов
/ 11 декабря 2019

Запустите git tag --list и git branch --list для просмотра фактических имен ссылок, созданных вашей командой hg push.

Затем вы можете извлечь соответствующую ветку или тег.


Если вы хотите создать ветку с более явным именем, выполните обычную команду:

git checkout -b new_branch_name [hash or tag or branch]

Например: если вы хотите создать ветку master, начиная с той же точки, что и веткас именем hg:

git checkout -b master hg

(по ссылке, размещенной в комментарии @torek): Readme hg-git, раздел «Использование»

Hg-Git выдвигает ваши закладки на Git-сервер в виде ветвей и опускает ветви Git вниз и устанавливает их как закладки.

Если вы хотите создать больше веток из определенных точек в вашемMercurial Repo, вам придется их в закладки.


Дополнительные сведения о филиалах:

Я не привык к Mercurial, но из того, что я собрал,ветви в Mercurial являются объектами, которые имеют различные атрибуты (такие как:когда это было создано? кем ? и т. д.),
в отличие от git, где ветви - это просто поверхностные ссылки на коммиты, которые могут автоматически обновляться (например, с помощью git commit, git merge и т. д.).

Например: в git со следующей диаграммой:

a--*--*--x--*--*--*--*--*--* <- develop
          \
           *--*--* <- feature1

Вы можете найти информацию о каждом отдельном коммите (каждый * на диаграмме): кто его создал, когда он был зафиксирован и т. Д. ...
, но вы не можете точно сказать, если develop начался в a и feature1 начался в x, или если это было наоборот.

Документ для hg-git в своем параграфе " branch_bookmark_suffix " указывает, что именно по этой причине hg-git отображает git ветви на hg закладки, и что вы должны удвоить свои ветви с закладками. Смотрите пример, который я опубликовал, как еще один ответ на этот вопрос.

1 голос
/ 13 декабря 2019

Ответ: как перевести ветку 7.3.20 из ртути в git?

преамбула : абзац суффикса branch_bookmark_suffix в README hg git указывает шаги дляследуйте

  1. выберите суффикс для ваших ртутных закладок (я буду использовать _git):

    # edit hg config, in the [git] section, add :
    [git]
    branch_bookmark_suffix = _git
    
  2. в вашем ртутном репо, создайтезакладка, которая дублирует ветку:

    hg bookmark 7.3.20_git 7.3.20
    
  3. используйте hggit, чтобы перейти к репо git:

    hg push
    
  4. в вашемgit repo, проверьте, была ли создана ветка 7.3.20:

    git branch --list
    

Вам нужно будет повторить шаг 2. для всех веток, которые вы хотите отправить в git.

...