2

私はPlasticSCM / Gitの高速エクスポート/高速インポートスイートを作成していますが、いくつかの問題が見つかりました。

私がドキュメントから読んだように:

この設計により、フロントエンドプログラムは無制限の数のブランチを同時に処理し、ソースデータから利用可能な順序でコミットを生成できます。

しかし、「エクスポーター」を実装すると、まだ作成されていないコミットを参照できないことがわかります。たとえば、最初にソースよりもマージのコミット先を導入し、次にソースを参照するだけで、機能しないとします。

したがって、私が理解している限り、「ソースから利用可能な順序でコミットを生成する」という文は単に間違っており、git fast-importは実際にコミットを順番に提供する必要があり、参照は前に導入されたオブジェクトにのみ存在できます。

それが正しいか?

ありがとう。

4

1 に答える 1

1

はい、git-fast-import古いものから新しいものの順に各ブランチのコミットを確認する必要があります。ドキュメントから引用したステートメントは、「ソースデータから利用できる順序」が実際にはブランチごとに時間の増加順でなければならないため、ややあいまいです。

このステートメントは、すべてのブランチにわたるすべてのコミットを厳密に時系列順に提示する必要がないことを意味していると思います。むしろ、通常の Git での作業と同様に、すべての祖先が作成された後に各コミットを作成する必要があります。

このアプローチでは、コミットをインポートする方法に多少の柔軟性が残されています。私は、各ブランチ全体を個別に (もちろん、古いものから新しいものまで) 処理する (古い独自のソース管理システム用の) インポーターを作成しました。各ブランチの共通の祖先の SHA1 ハッシュは同じだったので、Git は異なるブランチ間で共通の祖先を照合し、適切な階層ツリーを作成しました。

于 2011-05-18T22:00:31.893 に答える