3

bazaar (およびlaunchpad )を数年間使用した後、 FEniCS プロジェクトを Gitに移行することを計画しています。この移行にはいくつかの要件があり、かなり複雑になります。

  1. 履歴を保存したいのですが、それをフィルタリングして、履歴から (現在は廃止された) ファイルのリストを取り除き、リポジトリのサイズを小さくします。
  2. 多くの独立した貢献者による多くのフィーチャー ブランチがあります(現在、25 人の異なる人々による 76 のブランチ)。ブランチを変換およびフィルタリングされたリポジトリに取得するための簡単な移行パス (git 初心者でも実行可能) を提供したいと考えています。

1の解決策があります。

例としてDOLFINを取り上げます。

bzr トランクをインポートします。

git init dolfin && cd dolfin
(cd path/to/bzr/trunk; bzr fast-export --plain) | git fast-import

フィルター履歴:

git filter-branch --index-filter "git rm -rf --cached --ignore-unmatch ${files_to_strip}" --prune-empty

2の解決策もあります。

bzr fast-export上記の( dolfin.marks.bzr) とgit fast-import( ) の両方のdolfin.marks.git手順で、マーク ファイルをエクスポートする必要があります。寄稿者がこれらを利用できるようにして、次のように機能ブランチをインポートできるようにします。

(cd path/to/bzr/branch; bzr fast-export --marks=path/to/dolfin.marks.bzr --git-branch=$(bzr nick)) | \
git fast-import --import-marks=path/to/dolfin.marks.git --export-marks=path/to/dolfin.marks.git

ただし、ブランチをフィルタリングすると、すべてのトランク コミットの SHA1 ハッシュが無効になり、したがってマーク ファイルが無効になるため、このレシピは機能しなくなります。

しかし、1.2.については解決策がありません。

問題は、要件 1. と 2.の両方を確実に満たすレシピがあるかどうかです。

これは、トランクがマージされた機能ブランチのような複雑なケースでも機能することが理想的であることに注意してください (数回でも): トランクからのこれらのマージの親は、正しく識別される必要があります (2. のように)。

4

1 に答える 1

1

残念ながら、現時点ではマーク ファイルを使用して 1 と 2 の両方でこれを行う方法はありません。

マーク ファイルを無視して (生成しないだけで)、ユーザーに完全な変換を行わせ、すべてのユーザーに対して一貫してフィルター処理が行われるようにすると、最終的に同じ SHA1 が作成され、どこでも同じ共通の履歴が作成されるはずです。

于 2013-09-10T22:22:32.353 に答える