3

私の質問はピカード船長の質問に似ていると思いますが、質問せざるを得ないほど似ていないので、ここに行きます。

約 7500 のリビジョンを持つ古い SVN リポジトリがあり、それらの 7500 のリビジョンの一部はかなり大きな .fla ファイルです。そして、これらの .fla ファイルは、作成された多数のブランチに存在します。この結果、インポート後の .git ディレクトリはかなり大きくなり、トランク全体、すべてのブランチ、すべてのタグを取得すると 3.5 GB 程度になります。これをペアリングするために、作業したいトランクのディレクトリだけの別のsvnクローンを作成しましたが、すべてのブランチを含めると、それらのすべての履歴とオブジェクトが明らかにプルダウンされます。

だから私の質問はこれです、特定のブランチのみをフェッチするようにgitに指示する方法はありますか。たとえば、ある識別子 (mybranch など) で始まるブランチのみを取得しますか?

明確にするための更新: git svn init/clone を単一の特定のブランチに向けることができることはわかっています。私ができるようにしたいのは、それを一連のブランチに向けることです。たとえば、branchset/* に一致する代わりに、mybranchset* に一致するブランチのみ

4

2 に答える 2

1

コマンドではgit svn、アスタリスクワイルドカードを使用してディレクトリのすべてのメンバーを指定することしかできず(directoryname/*)、ファイル名のバリエーションを指定することはできません(fileprefix*)。git svnSVNの新しいマージ追跡を利用するように改訂された場合、これは将来変更される可能性があります。

Gitは(関連ファイルの重複ディレクトリではなく)各ブランチのコミットへのポインタのみを格納するため、匿名の回答が示すように、Gitリポジトリを再パックすると、Gitリポジトリは大幅に小さくなります。残念ながら、Gitはテキストファイルのコミットの場合のようにFlashファイルの変更セットを保存できないため、変更時に複製されます。

使用することをお勧めします

$ git gc --aggressive  

リポジトリを再パックします。重複を削除し、より多くの最適化を処理しますgit repack

于 2009-01-15T20:55:44.137 に答える
0

特定のブランチまたはブランチの一部を指すなど、選択した svn URL で git svn init を指定できます。

また、「git repack -f -a -d --window=250」を実行して、3.5 GB のリポジトリを小さくする方法を git が見つけられるかどうかを検討する必要があります。

于 2009-01-15T03:22:47.397 に答える