Это по замыслу. Импортированные ветки Git помечены только в Mercurial, и hg heads
должно дать вам правильное количество импортированных «веток».
Как уже упоминалось в этой теме :
Рассмотрим дерево, которое выглядит так:
o-o-o-o-o-o-b <- branch foo
/
-o-o-a
\
o-o-c <- branch bar
На какой ветви находится "а" и его предки?
У нас нет ни малейшего понятия. Фактически, единственные наборы изменений, в которых мы уверены, это bnd c, потому что имена ветвей не являются частью истории.
Итак:
Оказывается, на самом деле это невозможно сделать правильно, потому что git не хранит достаточно информации.
Рассмотрим репо с двумя ветками в git, каждая с количеством коммитов.
Поскольку git не записывает, с какой ветви произошел каждый коммит, в дереве недостаточно информации для маркировки каждого набора изменений.
Пользователь git может поменять имена двух веток, и ничего не записывается, чтобы сказать, что когда-либо было по-другому. Если две ветви имеют общего предка (а они почти наверняка будут),
на какой ветке находится этот предок? Мы не знаем.
Лучшее, что мы можем сделать в общем случае, - это пометить каждую головку ветки как находящуюся в этой ветке. Тогда, если вы сделаете пошаговое преобразование, мы, вероятно, поступим правильно. Но концепция веток в git не идеально подходит для hg, поэтому это преобразование тоже не будет идеальным.
Вы можете протестировать его с небольшим Git-репо (Git 1.6.5.1, Hg1.3.1):
PS C:\Prog\Git\tests> cd .\hgimport
PS C:\Prog\Git\tests\hgimport> git init gitRepoToImport
PS C:\Prog\Git\tests\hgimport> cd .\gitRepoToImport
PS [...]\gitRepoToImport> echo firstContentToBr1 > br1.txt
PS [...]\gitRepoToImport> echo firstContentToBr2 > br2.txt
PS [...]\gitRepoToImport> echo firstContentToBr3 > br3.txt
PS [...]\gitRepoToImport> git add -A
PS [...]\gitRepoToImport> git commit -a -m "first content, to be evolved in three different branches"
Сделайте кучу модификаций в трех отдельных ветках:
PS [...]\gitRepoToImport> git checkout -b br1
PS [...]\gitRepoToImport> echo firstEvolutionInBr1 >> .\br1.txt
PS [...]\gitRepoToImport> git commit -a -m "first evolution in branch 1"
PS [...]\gitRepoToImport> echo secondEvolutionInBr1 >> .\br1.txt
PS [...]\gitRepoToImport> git commit -a -m "second evolution in branch 1"
PS [...]\gitRepoToImport> git checkout master
PS [...]\gitRepoToImport> git checkout -b br2
PS [...]\gitRepoToImport> echo firstEvolutionInBr1 >> .\br2.txt
PS [...]\gitRepoToImport> git commit -a -m "first evolution in branch 2"
PS [...]\gitRepoToImport> git checkout master
PS [...]\gitRepoToImport> git checkout -b br3
PS [...]\gitRepoToImport> echo firstEvolutionInBr3 >> .\br3.txt
PS [...]\gitRepoToImport> git commit -a -m "first evolution in branch 3"
PS [...]\gitRepoToImport> echo secondEvolutionInBr3 >> .\br3.txt
PS [...]\gitRepoToImport> git commit -a -m "second evolution in branch 3"
PS [...]\gitRepoToImport> echo thirdEvolutionInBr3 >> .\br3.txt
PS [...]\gitRepoToImport> git commit -a -m "third evolution in branch 3"
PS [...]\gitRepoToImport> git checkout br2
PS [...]\gitRepoToImport> echo secondEvolutionInBr2 >> .\br2.txt
PS [...]\gitRepoToImport> git commit -a -m "second evolution in branch 2"
PS [...]\gitRepoToImport> git checkout br1
PS [...]\gitRepoToImport> echo thirdEvolutionInBr3 >> .\br1.txt
PS [...]\gitRepoToImport> git commit -a -m "third evolution in branch 1"
PS [...]\gitRepoToImport> git checkout br2
PS [...]\gitRepoToImport> echo thirdEvolutionInBr3 >> .\br2.txt
PS [...]\gitRepoToImport> git commit -a -m "third evolution in branch 2"
Затем клонируйте этот репозиторий Git (на всякий случай, на другие тесты мужского пола)
PS [...]\gitRepoToImport> cd ..
PS C:\Prog\Git\tests\hgimport> git clone .\gitRepoToImport gitRepoToImport1
Сконфигурируйте ~/.hgrc
в формате UTF-8
без спецификации (мне потребовалось некоторое время, чтобы сделать это правильно!)
[extensions]
hgext.convert =
Затем сделайте преобразование
PS C:\Prog\Git\tests\hgimport> hg convert .\gitRepoToImport1 hgRepo
PS C:\Prog\Git\tests\hgimport> cd .\hgRepo
PS C:\Prog\Git\tests\hgimport\hgRepo> hg heads
Вы получите три ожидаемых "ветки"
changeset: 9:ad0884395ada
tag: tip
user: VonC
date: Mon Nov 16 21:45:35 2009 +0100
summary: third evolution in branch 2
changeset: 6:854bc6537c7c
user: VonC
date: Mon Nov 16 21:45:19 2009 +0100
summary: third evolution in branch 1
changeset: 3:9194cf25d3ca
user: VonC
date: Mon Nov 16 21:44:09 2009 +0100
summary: third evolution in branch 3