2009-07-18 11 views
10

Mercurialでちょっとおもしろくしたいので、既存のリポジトリの1つを変換しようとしています。GitリポジトリをMercurialに変換してタグを持たせるにはどうすればいいですか?

hg convert myrepos myrepos-hg 

コマンドが正常に私のコミットのすべてを輸入したが、それはGitのリポジトリにマークされた8かそこらのタグを持参しない(またのいずれかである:私は私のMac上で次のコマンドを実行します。その枝のための枝)。私のタグをMercurialにインポートするために設定する必要がある特別なパラメータはありますか?

+1

gitを水銀に変換しますか?ここで、警告の最初の話を読んでください:http://www.gksoft.com/a/fun/hal-ibm.html –

答えて

6

は、あなたのタグ軽量gitのタグや注釈付きのタグに満ちていますか? hg convertはアノテートされたタグのみを変換しますが、gitはデフォルトで軽量のタグを作成します。最近私のリポジトリの1つを変換するときにこの問題が発生しました。

git ls-remote --tags . 

hg convertのみ、^{}に注釈付きのものを終了タグを変換します実行:あなたは次のように、彼らが何であるかを確認することができます。

  • パッチの小さなシェルスクリプトとして変換前

に注釈付きタグにすべてのタイプ

  • 変更あなたのgitのタグを変換するために、拡張ファイルを変換hgext git.py:あなたは2つの選択肢を持っていますgit-tagに--forceオプションを指定すると、すべてのタグに注釈を付けることができます。

  • +0

    それは問題でした。ヒントをありがとう! –

    3

    これは若干の既知の問題です。

    extra = {'branch': self.tagsbranch} 
    

    へ:

    extra = {'branch': 'default'} 
    
    あなたは、これを変更することで(あるいはそれが位置してどこ)次のファイル/usr/lib/python2.6/site-packages/hgext/convert/hg.pyにパッチを適用してみてください

    を入力し、再度変換します。

    編集:物事の状態をより深く見れば、あなたが望むことをすることは不可能ではないかもしれないと思われます。さらにそれを正しく行うには。

    タグが8つしかないので、手動で.hgtagsファイルを作成することで、手間を省くことができます。後で「hg convert」で何が起きているのかを理解することができます(私は自分の目を守っていきます)。

    Luck。私が過去に見てきた

    +0

    それに応じてファイルを修正しました(/Library/Python/2.5/site-packagesにあります)。/...)、残念ながらタグを変換して.hgtagsファイルを作成していません。 –

    1

    1つの提案は、仲介ステップとしてSVNを使用することです。 gitとhgの両方が優れた双方向svn変換を持っています。

    1

    はHG-のgit pluginをチェックしてください。

    関連する問題