Gitで大きなバイナリファイルを管理する 質問する

Gitで大きなバイナリファイルを管理する 質問する

ソース コード (Web アプリケーション) が依存している大きなバイナリ ファイルを処理する方法について意見を求めています。現在、いくつかの代替案を検討中です。

  1. バイナリ ファイルを手動でコピーします。
    • 賛成:よく分かりません。
    • 反対意見: 新しいサイトをセットアップしたり、古いサイトを移行したりするときにエラーが発生する可能性が高くなるため、私はこれに強く反対します。また別のハードルが生まれます。
  2. これらすべてをGitで管理します。
    • 利点: 重要なファイルをコピーし忘れる可能性を排除します
    • 欠点: リポジトリが肥大化し、コードベースを管理する柔軟性が低下し、チェックアウトやクローンなどにかなりの時間がかかります。
  3. 個別のリポジトリ。
    • 利点: ソースコードのチェックアウト/クローン作成は相変わらず高速で、イメージは独自のリポジトリに適切にアーカイブされます。
    • 反対意見:プロジェクトに唯一のGit リポジトリを持つことのシンプルさが失われます。これは、私が考えていなかった他のいくつかのことを確実に導入します。

これに関してあなたの経験や考えは何ですか?

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

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

ベストアンサー1

私は発見したgit-annex最近、素晴らしいと思うようになりました。これは、大きなファイルを効率的に管理するために設計されました。私は、写真や音楽などのコレクションにこれを使用しています。git-annex の開発は非常に活発です。ファイルの内容は Git リポジトリから削除できますが、ツリー階層のみが Git によって追跡されます (シンボリックリンク経由)。ただし、ファイルの内容を取得するには、プル/プッシュ後に 2 番目の手順が必要です。例:

$ git annex add mybigfile
$ git commit -m'add mybigfile'
$ git push myremote
$ git annex copy --to myremote mybigfile ## This command copies the actual content to myremote
$ git annex drop mybigfile ## Remove content from local repo
...
$ git annex get mybigfile ## Retrieve the content
## or to specify the remote from which to get:
$ git annex copy --from myremote mybigfile

利用できるコマンドは多数あり、ウェブサイトには優れたドキュメントがあります。パッケージは以下から入手できます。デビアン

おすすめ記事