2009-05-11 11 views
4

私は、コンテンツ&ソースファイルを含むリポジトリを持っています。開発者はソースファイルのみで作業する必要があります。スペースを節約するために、開発者はコンテンツファイル(GB単位)をローカルリポジトリに複製しないでください。ソースファイルは、サブモジュールとしてプロジェクトに存在するのではなく、内容が同じ場所にあります。Gitを使って変更されたファイルのみをマージする

私のアプローチは、このようなものです - 私はマスターから枝ソースを作成し、そのブランチからのコンテンツファイルを削除しました。そして、私は開発者にクローンするために同じブランチを公開しました。

私は戻ってマスターソースブランチからの変更をマージしていますように、コンテンツファイルはマスターで削除得ています。それを制限する方法は?それが可能でない場合は、フィルタリングされたファイル、つまりソースファイルのみを持つ別のブランチ/クローンを作成するという私の要求を満たす方法がありますか?

答えて

1

使用git-mergeコンテンツファイルを削除したというコミットを削除するために、2つのブランチをマージした後、git-revertします。

% git checkout Master 
% git merge Source 
% git revert <content-removal-commit-id> 

それとも、それを他の方法で回避を行う、と はあなたがマスターにマージする前に、コンテンツ・除去がコミット削除することもできます。もう少し複雑ですが、マスターの歴史を少しきれいに保つかもしれません。

% git checkout Source 
% git branch SourceMerge 
% git checkout SourceMerge 
% git revert <content-removal-commit-id> 
% git checkout Master 
% git merge SourceMerge 
2

Sourceブランチからファイルを削除してはいけません。 SourceMasterが同じリポジトリ内のブランチである場合は、開発者はコンテンツを持ちます。周囲に横たわることに害はありません。

+0

コンテンツファイルの種類は、200GBを超えるサイズのflv、wmv、pdf、docです。それは、クロス・ロケーション開発チームであるため、リモート・クローニング中にネットワークに大きなオーバーヘッドをかけることになります。そして、Gitのパフォーマンスのボトルネックになると思うし、そういう膨大な量のファイルをスキャンしていくつかのソースファイルの変更を検出することもあるだろう。 – kaychaks

+0

「あなたは思いますか?それは本当に問題が最初にあるかどうかを確認せずに行動に入ったのですか?ダー。 1)私のポイントはまだ立っています:SourceとMasterが_same_リポジトリのブランチである場合、それらは開発者のマシンに複製されます。 2)完全なリポジトリをクローン作成する頻度はどのくらいですか? 3)Gitはまずファイルの修正時間を使います。それらが異なる場合にのみ、内容がチェックされます。ここに損失はありません。 4)リモートチームにリポジトリを一度クローンさせ、そこにいる人にそのリポジトリをクローンにさせる。やさしい。 – Bombe

5

答えはのソースとコンテンツの別々のリポジトリです。または、コンテンツをそのままにしておきます。

+0

アプリケーションフレームワークは、ソースファイルをコンテンツから分離することを許可しません。 Gitを使用して、同じソースからファイルパターン(例えば、.java、.groovyなどのソースファイルと残りのファイル)を使用して別々のリポジトリを作成することはできますか? – kaychaks

+0

+1合意。私自身のCMSプロジェクトでは、コードを含むルートプロジェクト、テスト用の小さなサンプルデータファイルを含むテストプロジェクト、および主なもので構成とコンテンツのみを含むコンテンツプロジェクトがあります。 –

+1

@kaychaks:アプリフレームワークのソースを取得し、バグを修正してください。ソースを入手できない場合は、バグレポートを提出してください。 –

0

これらのメディア/ docファイルをレポに含めてもよろしいですか? 200GBのメディアライブラリの変更を追跡しますか?

ソースブランチ上にあるときに.gitignoreファイルに所有者のdir参照を入れると、gitはそれらのファイルを無視して、それらのファイルに触れたり削除したりしません。

http://git-scm.com/docs/gitignore

+0

それは彼らがuntrackedである場合、それは無視されます - 私はそうではないと思います。 – Bombe

関連する問題