10

Mercurialを少しいじってみたいので、既存のリポジトリの1つを変換しようとしています。Macで次のコマンドを実行します。

hg convert myrepos myrepos-hg

このコマンドはすべてのコミットを正常にインポートしますが、Gitリポジトリでマークされた8個ほどのタグを持ち込みません(その点ではブランチもありません)。タグをMercurialにもインポートするために設定する必要のある特別なパラメータはありますか?

4

4 に答える 4

6

あなたのタグは軽量の git タグですか、それとも注釈付きタグでいっぱいですか? hg convert注釈付きタグのみを変換しますが、git はデフォルトで軽量タグを作成します。最近、リポジトリの 1 つを変換したときに、この問題が発生しました。次のようにして、それらが何であるかを確認できます。

git ls-remote --tags .

実行すると、注釈付きのhg convertで終わるタグのみが変換されます。^{}次の 2 つの選択肢があります。

  • git.py hgext convert 拡張ファイルにパッチを適用して、すべての型を変換します
  • 変換前に git タグを注釈付きタグに変更します

小さなシェル スクリプトと git-tag の --force オプションを使用すると、すべてのタグに注釈を付けることができます。

于 2009-07-19T10:23:57.647 に答える
3

これはやや既知の問題です。これを変更することで、次のファイル/usr/lib/python2.6/site-packages/hgext/convert/hg.py(またはそれが配置されている場所)にパッチを適用してみることができます。

extra = {'branch': self.tagsbranch}

に:

extra = {'branch': 'default'}

そしてそれを再び変換します。

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

タグは8つしかないため、.hgtagsファイルを手作業で作成して手間を省くことを検討してください。後で「hgconvert」がどうなっているのかを理解することができます(私も目を離さないようにします)。

ラック。

于 2009-07-18T03:59:22.453 に答える
1

私が過去に見た 1 つの提案は、中間ステップとして svn を使用することです。git と hg はどちらも優れた双方向 svn 変換を備えています。

于 2009-07-18T18:55:48.077 に答える
1

hg-gitプラグインをチェックしてください。

于 2009-07-18T19:02:22.587 に答える