私は次のように標準レイアウトでいくつかの異なるプロジェクトを持つSubversionサーバーを持っています:
ProjectA/
trunk/
branches/
tags/
ProjectB/
trunk/
FolderOfBinaries/
SourceFolderA/
SourceFolderB/
SourceFolderC/
branches/
tags/
v1.0/
v1.1/
v2.0/
ProjectC/
trunk/
branches/
tags/
ProjectBはGitに移行されますが、標準のクローンでは移行されません。プロジェクトを2つのGitリポジトリに分割したいと思います。1つは比較的頻繁に変更される大きなバイナリでいっぱいのフォルダ用で、もう1つは他のすべてのリポジトリ用です。リポジトリのクローンを完全に作成しました。これは数GBですが、binariesフォルダーはおそらくその90%であり、実行git gc
には長い時間がかかります。小さな高速リポジトリを用意して、開発者が必要とする場合は、binariesフォルダをサブモジュールとして追加したいと思います。
これまでに2つの潜在的なオプションを見つけました。まず、git branch-filter
Git Bookに示されているように、履歴からバイナリのフォルダーを削除するために使用できます。svndumpfilter
次に、現在のSubversionリポジトリを2つに分割し、次にgit svn clone
それぞれを個別に分割するために使用できます。
私の質問は、すべての履歴、特にブランチとタグはどうなるのかということです。2つのタグ間でバイナリが変更されていない場合でも、プロジェクト内のすべてのタグでバイナリのフォルダがどのように表示されるかを知りたいです。それは可能ですか?
編集:バイナリのフォルダはビルドアーティファクト(* .class、*。o、*。dllなど)でいっぱいではないので、それを取り除いて外部にすることはできません。バージョン管理が必要なサードパーティプログラムから出力されるバイナリがたくさんあります(OpenOfficeドキュメント、Photoshopファイルなどを考えてください)。