1

私は git リポジトリで作業していましたが、何らかの理由でそれを hg リポジトリに変換する必要があります。私の元の git リポジトリには 41 個のコミットがあり、サイズは 320MB でした。

を使用してリポジトリを変換しようとしていますhg convert git-repo hg-repo。このコマンドは、git リポジトリから hg への変換を開始しますが、バージョン番号 18 で途中でハングします (停止しません)。このときの hg リポジトリのサイズが 50Mb であることを確認しました。私は回転番号を知っています。18 と size=15M はそれほど重要ではありませんが、hg convert はデバッグ可能なエラーを出力していません。

hg は不明な場所でエラーを出力しますか? リポジトリのサイズは「hg convert」プログラムに影響しますか?

4

1 に答える 1

1

hg convert私の経験では、最も使いやすいツールではありませんでしたが、hg-git常に問題なく機能していました。しばらく前に git リポジトリで問題が発生したと言及しているため、完全な整合性チェックを試してください。

git fsck-objects --full

(リポジトリはローカルにあると仮定していますが、そうでない場合は、ローカルのクローンを作成し、そこで確認してください。)

必要ではありませんが、続行する前にガベージ コレクションを強制できます。

git gc

あなたが本当に偏執的であるなら、別の完全性チェックでフォローアップすることができます. を使用してhg git(インストールして有効にしたことを確認してください.hgrc)、ローカルの Mercurial クローンを作成するのは非常に簡単です。

hg clone path/to/git/repo path/to/hg/repo

(これには時間がかかる場合があります。リビジョンを 1 つずつ調べて再保存します。)

これで、hg クローンには、内部に格納された git リポジトリの隠しコピーが実際に含まれます。これgit statusは、クローンされたディレクトリ内から実行することで確認できます。この隠しコピーはプルまたはプッシュでは転送されないため、本当に git の遺産を取り除きたい場合は、別のクローンを作成できます。

hg clone path/to/hg/repo path/to/new/repo

ある時点で git に戻りたいと判断した場合は、次の隠し git リポジトリを使用してそれを行うこともできますhg-git

git init path/to/new/git/repo
cd path/to/new/git/repo 
git pull path/to/hg/repo/.hg/git

ハイブリッド リポジトリがまだぶら下がっていない場合は、hg gexport(の一部hg-git) を介して適切な場所に再作成するか、git-hgや git のhg/brz-bridge などを使用できます。Mercurial リポジトリとの Git の相互運用性も参照してください。

于 2013-05-14T10:19:51.223 に答える