期待されている回答とは異なると思いますが…
Gitで管理するのに「なぜ patch ??」という感じがします。結論を先に書けば、Gitでブランチ管理すれば良いだけなのではないでしょうか。
Gitで管理するということは、管理対象の各サンプルは「変更される」可能性があるという理解で合っていますか?
変更の可能性がないのであればわざわざGitで管理する必要性はなく、しかも「容量」を気にするのであればGitを利用することは目的に逆行すると思います。変更がないのであれば、ソース一式をZipか何かにアーカイブして保管しておけば良い訳で、変更管理のためのGitの仕組みは冗長以外の何者でもありません。
ところで、仮に2つのサンプルA、Bがあったとします。この場合、AとBを保管する代わりに、Aと「Aに対するBの差分(パッチ)」を保管した方が全体としての容量が削減されると共に、AとBの差分も一目で分かる、というのは事実です。
しかし、もしA、B共に誤記修正や改良のためにバージョンアップの可能性があるとすれば、途端にパッチによる管理は複雑になり、管理対象のサンプルが増えると「破綻」してしまうのではありませんか?
説明の都合上、「Aに対するBの差分(パッチ)」をP(A→B)と記載することにします。
A、Bがそれぞれ更新されて[A1、A2、A3…]、[B1、B2、B3…]となるところを、Bの代わりにパッチ[P1、P2、P3…]を管理するとします。その場合、P1〜P3はAのどのバージョンに対するB1〜B3のパッチなのでしょうか?
常にAの同じバージョンA1を基準にパッチを生成するのであれば、パッチP自体も差分管理する意味はあるかもしれませんが、そうするとパッチを見ただけでは最新のAとBの差分を把握することが出来ません。
一方、P1、P2、P3…の基準が変わってしまう(たとえば常にAの最新版に対してパッチを生成する)のであればP1とP2の差分には意味がなく、同じディレクトリツリーとして変更管理すると訳が分からなくなるため、パッチを生成する度に異なる名前(ディレクトリツリー)としてGitへコミットすることになり、管理が煩雑であると同時に容量の削減にもならなくなります。
というのは、B2を生成するためのパッチP2と一口に言っても、A1を基準にしているかA2を基準にしているかによって全く別物になる、つまりP2(A1→B2)とP2(A2→B2)は全く意味が異なるので、Aのどのバージョンを基準にしたパッチなのかを別途管理する必要性があるからです。(端的に言えば、都度、パッチの基準が分かるような異なる名前を考えて異なるディレクトリツリーとして管理する事になります。)
管理対象のサンプルの数が増えた場合、パッチを使った管理って現実的でしょうか?
一方、Git自体が、派生開発される複数のソースのバージョン管理を効率よく実施するためのツールなので、同一リポジトリ内の「ブランチ」として差分管理すれば目的が達成できると思いますが如何でしょうか?
(参考) 3.1 Git のブランチ機能 - ブランチとは
なお、Gitは本来、空のディレクトリを管理することはできないようですが、下記のような手法で管理可能なので、空ディレクトリの差分管理もできると思います。
git で空ディレクトリを管理(add)する方法
文章で書くと分かりにくいですが、ご参考になれば幸いです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/05/15 22:23 編集