frej / fast-export

A mercurial to git converter using git-fast-import
http://repo.or.cz/w/fast-export.git
808 stars 255 forks source link

Subrepo history #238

Closed SimonSword closed 4 years ago

SimonSword commented 4 years ago

I am trying to migrate two hg repositorys to git, where one repository is a hg-subrepo to the other. In mercurial, the commits in the super-repo specified the exact revision of the sub-repo (sometimes in a different branch of the subrepo).

I followed the instructions from the README-SUBMODULES.md to convert both repositories and provided a file-mapping for the conversion of the super-repo. Now, my git-superrepo does contain a correct sub-repo.

My problem is the following: When I checkout a different branch from master on the super-repo with git checkout <SUPER_BRANCH_1> --recurse-submodules the submodule does not change. It remains on the master branch, even though in the original hg repo the <SUPER_BRANCH_1> contained a <SUB_BRANCH_1> different from the master branch.

Is the history of related revisions from super-to-sup-repo lost during conversion?

I hope I could express my issue clearly. Edit: Formatting

frej commented 4 years ago

My problem is the following: When I checkout a different branch from master on the super-repo with git checkout <SUPER_BRANCH:1> --recurse-submodules the submodule does not change. It remains on the master branch, even though in the original hg repo the contained a

different from the master branch.

What does git status say in the directory of the subrepo? According to the git documentation, --recurse-submodules should give you a detached head and it should not be on any branch.

Is the history of related revisions from super-to-sup-repo lost during conversion?

It should be kept, that's the whole point of sub-repo support :)

SimonSword commented 4 years ago

It should be kept, that's the whole point of sub-repo support :)

Yes, it actually does keep the history! :)

Sorry, I was confused by the differences between hg and git branches. It turned out, that I merged the SUPER_BRANCH_1 into the default branch. In git, this means that master and SUPER_BRANCH_1 are the same branch.

Thanks for your tool and sorry for the confusion. I am closing this issue now.