1. ホーム
  2. git

[解決済み] Git による大規模なバイナリファイルの管理

2022-03-18 20:16:16

質問

私のソースコード(Webアプリケーション)が依存している大きなバイナリファイルをどのように扱うかについて意見を求めています。現在、いくつかの選択肢について議論しています。

  1. バイナリファイルを手作業でコピーする。
    • Pro: よくわからない。
    • 反対:新しいサイトの設定/古いサイトの移行の際にエラーが発生する可能性が高くなるので、強く反対します。また新たなハードルができてしまう。
  2. で管理します。 ギット .
    • Pro: 重要なファイルのコピーを「忘れる」可能性をなくします。
    • 反対:リポジトリが肥大化し、コードベース管理の柔軟性が低下、チェックアウトやクローンなどにかなりの時間がかかる。
  3. リポジトリを分離する。
    • Pro: ソースコードのチェックアウト/クローン作成はこれまで通り高速で、イメージは独自のリポジトリに適切にアーカイブされます。
    • コントラ を持つことの単純さが失われる。 唯一無二の プロジェクト上のGitリポジトリ。きっと、私が考えてもみなかったようなことが他にも起こるのでしょう。

この件に関して、あなたの経験や考えを教えてください。

また 複数の Git リポジトリを 1 つのプロジェクトで管理した経験をお持ちの方はいらっしゃいますか?

そのファイルは、そのファイルを含むPDFを生成するプログラムのための画像です。ファイルはあまり頻繁に(数年のように)変更されませんが、プログラムに非常に関連しています。このプログラムは、このファイルがないと動きません。

解決方法は?

もし、そのファイルがないとプログラムが動かないのであれば、それらを別のレポに分割するのは悪い考えだと思われます。 私たちは大規模なテストスイートを別のリポジトリに分割していますが、それはまさに "補助的なファイルです。

しかし、ファイルを別のレポで管理し、その上で git-submodule を使えば、まともな方法でプロジェクトに取り込むことができます。 つまり、すべてのソースの完全な履歴は残りますが、私の理解では、images サブモジュールの関連するリビジョンを1つだけ持つことになります。 その git-submodule を使えば、コードの正しいバージョンを画像の正しいバージョンと一致させることができるはずです。

以下は、良い サブモジュールの紹介 をGit Bookからダウンロードしました。