注:(すでに行われた議論から)GITは実際にはこのユースケースには適していないように見えますが、私はこの質問を賞金に開放して、より明確な答えを促しました。 GITの経験が豊富です。元の質問は以下のとおりです。
独立したファイルのコレクションが大量にあるという状況があります。独立しているということは、各ファイルがその周囲のファイルの存在、不在、または特定の状態に依存しないことを意味します。良い例えは、画像のディレクトリです。このワークフローでは、各画像を個別に作成、編集、削除でき、画像に対して行われた作業は、ディレクトリ内の他の画像とは関係ありません。
この独立性は偶発的なものであるだけでなく、ワークフローにとって重要であることに注意してください。
これらの各ファイルは、ワークフローのようなGITの恩恵を受けます。各ファイルへの変更を追跡し、各ファイルを独立したブランチで作業し、完了したら変更をマージできると便利です(したがって、類推のために、これらがSVGイメージであると想像してください。画像を描くアーティストとテキストコンテンツを翻訳する翻訳者を配置し、GITを使用する他のプロジェクトのファイルにアクセスします。
私の経験から、GITは、すべて特定の状態にあるファイルのコレクションがある場合に最適です。たとえば、「Production Release 1.2」の状態に達した後にGITリポジトリをコミットすると、すべてのファイルはそのコミット時に「ProductionRelease1.2」の状態を共有します。
しかし、GITワークフローを適用する方法がわかりません。また、各ファイルがその周囲のファイルの状態を共有できない場合、または適用することが実際的であるかどうかもわかりません。各ファイルを独自のGITリポジトリに配置することもできますが、それは実用的ではないようです。
だから、私の質問は次のとおりです。
- GITは関連ファイルのコレクションでのみ機能するという私の印象は正しいですか?
- そうでない場合、ファイルごとにGITのクローン/ブランチ/マージ機能を使用するためのプロセスは何でしょうか?
アップデート
iberbeuへの応答:バージョンがXYであると見なされるのではなく、GITコミットが、リポジトリ内のすべてのファイルが同じバージョンまたはコミットポイント(ただし、バージョンを定義する)を持っていると想定していると見なされるということです。この場合、GITリポジトリ内のファイルは完全に独立しているわけではありません。
ここでの問題は、すべての独立したファイルを含む単一のリポジトリを取得し、それを独自のローカルリポジトリに複製して、ブランチでの作業を開始する場合です。この時点では、すべてのファイルがブランチに属していると見なされますが、ワークフローの観点からは、1つのファイルのみで作業しています。ただし、これらの独立したファイルはすべて「乗り物に沿って」おり、実際に編集したい単一のファイルに関連付けられたリビジョン履歴を引き継いでいます。
したがって、Joeは「JoeWorkingonImage1」というレポコールのブランチを作成する可能性があります。彼のブランチには、彼が作業したい画像1と、彼が興味を持っていない他の10,000枚の画像があります。
Janeは、「Jane workingonImage987」と呼ばれる同じリポジトリのブランチを作成する場合があります。彼女のブランチには、彼女が作業したいImage 987と、彼女が興味を持っていない10,000の他の画像があります。
ジョーとジェーンがブランチ内の他の画像の編集を開始しようとしない限り、これは問題ありません。しかし、そうすると、独立したエンティティとして編集され、他の画像から分離して編集されている各画像の概念モデルが失われます。
したがって、ジョーが画像1のみを編集するはずだったブランチで画像2を編集し、それらの変更をリポジトリにマージした場合、画像2の明示的な改訂履歴が画像1と一緒に編集されます。ただし、画像1と2は完全に独立している。画像1と一緒に編集されたため、画像2の概念はありません。
つまり、これが問題の核心です。GITは、リビジョンが他のファイルと相関しない分離されたエンティティとして制御するファイルの概念をサポートしていますか?または、これはすべてのファイルの個別のgitリポジトリでのみ達成できますか?
更新2
サブモジュールは、何千ものGITリポジトリの代わりになる可能性があるようです。