質問

いの意見をどのように扱えばよいのかという大型のバイナリファイルに関する私のソースコード(ウェブアプリケーション)に依存します。現在、議論の複数の選択肢:

  1. コピーのバイナリファイルです。
    • プロジェクトませんでした。
    • 魂斗羅:したいという強いことが見つかの誤差設定時に、新しいサイト/移動しました。ビルドもうひとつのハードルです。
  2. すべての管理いただくこととなります。 Git.
    • プロジェクトを削除し、その可能性を忘れて"のコピーの重要なファイル
    • 魂斗羅:Bloatsのリポジトリは減少し柔軟性を管理するコードベースおよびチェックアウ、クローン等ますね。
  3. 別リポジトリ
    • プロジェクトチ/クローニングソースコードを速くしても、画像が正しくアーカイブし、自分のリポジトリ
    • 魂斗羅:削除し、以下のチューニングに対応を 唯一 Gitリポジトリにプロジェクト.で確実の中からいくつかをご紹介しますどんなに考えられます。

う々に対するお考えなどについて。

また:なんて経験は複数のGitリポジトリ管理プロジェクト?

ダウンロードファイルは、画像のためのプログラムを生成するPdfの方のファイルです。ファイルは変わりませんが(年間)が、非常に関するプログラム。プログラムは動かなくなりまくファイルです。

役に立ちましたか?

解決

プログラムは、それは別のレポにそれらを分割するように思えるファイルなしでは動作しません場合は、

悪い考えです。私たちは別のレポに侵入したが、それらは本当に「補助」ファイルである大規模なテスト・スイートを持っています。

しかし、あなたは別のレポ内のファイルを管理できるようにして、使用することができます git-submodule 正気な方法であなたのプロジェクトにそれらを引っ張ります。だから、あなたはまだ、すべてのソースの完全な履歴を持っていると思いますが、私はそれを理解して、あなただけのあなたのイメージのサブモジュールの一つの関連する改訂を持っていると思います。 git-submodule機能を使用すると、画像の正しいバージョンに合わせてコードの正しいバージョンを保つのを助ける必要があります。

ここではサブモジュールにrel="noreferrer">導入はGitのブックからをhref="http://alx.github.io/gitbook/5_submodules.html"良い

他のヒント

他の溶液に、年月から2015年は Gitの大ファイルに保存(LFS) (GitHub).

使用す git-lfs 参照 git-lfs.github.com)試験などのサーバーを支援す: lfs-試験-サーバー:
きのメタデータのgitレポ-レートは、大きなファイルです。

https://cloud.githubusercontent.com/assets/1319791/7051226/c4570828-ddf4-11e4-87eb-8fc165e5ece4.gif

スマートGitの中で大きなバイナリを格納するためにGitの拡張機能である gitのBUP のを見ていますリポジトリます。

あなたはサブモジュールとしてそれを持ってしたいと思いますが、あなたが扱うのは難しいなっリポジトリを心配する必要はありません。そのサンプルのユースケースの一つは、Gitの中でVMイメージを格納されます。

私は実際にはより高い圧縮率を見ていないが、私のリポジトリはそれらの中には本当に大きなバイナリを持っていません。

あなたの走行距離は異なる場合があります。

また、のgit-脂肪を使用することができます。私はそれが唯一の株式Pythonと rsync のに依存していることが好きです。また、次の自明のコマンドを使用して、通常のGitのワークフローをサポートしています:

git fat init
git fat push
git fat pull

また、あなたはgit fat管理するファイル拡張子を指定するには、リポジトリに.gitfatファイルをチェックインし、あなたの.gitattributesを変更する必要があります。

あなたは、順番に、あなたのgitattributesルールに基づいてgit addを呼び出す通常のgit fatを、使用してバイナリを追加します。

最後に、それはあなたのバイナリが実際に格納されている場所は、リポジトリとユーザー間で共有することができるという利点を有するとしrsync何かをサポートしています。

UPDATE:あなたはGitは、SVNのブリッジを使用している場合はgit-脂肪を使用しないでください。それはあなたのSubversionリポジトリからバイナリファイルを削除することになります。あなたは純粋なGitリポジトリを使用している場合は、それが見事に機能します。

Iは、(特許Notzなど)サブモジュール、または二つの別個のリポジトリを使用します。あなたがあまりにも頻繁にあなたのバイナリファイルを変更した場合、その後、私は歴史を掃除巨大なリポジトリの影響を最小化しようとします:

MP3ファイルの〜21ギガバイト、分類されていない(私はそのMP3ファイルを好きかどう悪いの名前、悪いのID3のは、知りません...)、および3台のコンピュータ上に複製:

私は数ヶ月前に非常によく似た問題を抱えていましたます。

私は、メインのGitリポジトリと外付けハードディスクドライブを使用し、私は、各コンピュータにそれをクローン化しました。その後、私は(、押し引き、マージ...削除して何度も名前を変更)習慣的な方法でそれらを分類するために始めています。

終わりに、私は.gitディレクトリにのみMP3ファイルの〜6ギガバイトと83ギガバイト〜を持っていました。私は先祖をコミットせずに、新しいコミットを作成するgit-write-treegit-commit-treeを使用し、そのコミットを指す新しいブランチを開始しました。そのブランチのための「gitのログは、」一つだけのコミットを示します。

そこで、私は、古い枝を削除しただけで、新しいブランチを保ち、REF-ログを削除し、「Gitのプルーン」を実行します。その後、私の.gitフォルダのみ〜6ギガバイトを加重...

あなたは可能性があり、「パージ」と同じ方法で、随時巨大なリポジトリ:あなたの「gitのクローン」さんが速くなります。

私の意見では、あなたは多くの場合、これらの大きなファイルを変更する可能性が高いです、またはあなたがgit cloneまたはgit checkoutの多くをするつもりなら、あなたは真剣に別のGitリポジトリ(または多分それらのファイルにアクセスするための別の方法を使用することを検討する必要がある場合)。

しかし、私たちがやるようにあなたが仕事、そしてあなたのバイナリファイルが頻繁に変更されていない場合は、最初のクローン/チェックアウトは長くなりますが、その後、それはできるだけ早くあなたが望むようでなければなりません場合は(考えるユーザーが最初に使用し続けますクローン化されたリポジトリ、彼らが持っていた)。

の解んの提案に基づく孤児支は若干の乱用のタグ機構以下、*オーファンタバイナリの保管 (OTABS)

TL;DR12-01-2017 使いいただけるのであればgithubのLFSまたはその他の第3者により、すべてを意味しています。できない場合は、読みます。注意このソリューションはハッキングに対処されるべきである。

望ましい性質をOTABS

  • です 純gitgitのみ 溶液ではなく第3者ソフトウェア(git-別館)または第3者のインフラ(githubのLFS).
  • この店舗のバイナリファイル 効率的に, (な膨張の歴史のリポジトリ
  • git pullgit fetch, 含む git fetch --all いまだ 帯域幅効率的な, (ないすべての大連から引いたリモートによるデフォルトです。
  • で動作し Windows.
  • でも、 シングルgitリポジトリ.
  • することができ 削除 の古いバイナリとは違いbup).

望ましくない性質のOTABS

  • git clone 潜在的に非効率なものではありません、ごしました。た場合の展開このソリューションなければならなくなるかもしれな助言お仲間利用 git clone -b master --single-branch <url> の代わりに git clone.これはgitクローンのデフォルトでは文字通りのクローン 全体 リポジトリを含んでいることなく、通常のためにお帯域のように、unreferencedを設定します。から で4811434.
  • git fetch <remote> --tags 帯域幅効率の悪いものの、必ずしも保管効率が悪い。本イベントは終了いたしました。常にご同僚を使用しないのです。
  • いて定期的に使用 git gc トリックエリポジトリからのファイルによってお使います。
  • ではないと bup または git-bigfiles.でもそれぞれから、よりいいとよりの種類があります。する等のトラブ人に小さなファイルまたはファイルでのギガバイトも読むための回避策.

追加のバイナリファイル

開始してくださいねを犯すべてのご変更は、ワーキングツリーは、ご指数が含まれていない他の未確定の変わります。ですが、良いアイデアを押して地元の店舗をリモート(githubなど) 場合には災害が起こる。

  1. 新しい孤児ます。 git checkout --orphan binaryStuff しかできないリックを達成しています。この店では完全に切り離その他の支店のコミットまで作りこまない親会社でユーザーのコミットする
  2. クリーンのご使用く git rm --cached * .gitignore.
  3. 深呼吸を削除全体のワーキングツリーを使用 rm -fr * .gitignore.内部 .git ディレクトリのまま残し、 * ワイルドカードが一致しないとします。
  4. コピーおVeryBigBinary.exe又はVeryHeavyDirectory/.
  5. 追加したりす&&コミットします。
  6. 今になり難いよ最後までしっかりと押し込みま"をキーワードとして全てのマーケットリーダウンロードでは、次に呼び出し git fetch 目詰まりを接続します。させないように指定できますことを押して、タグの代わります。ここでも影響の同僚の帯域幅およびファイルシステム保存できるようにしておかなければな癖のタイピング git fetch <remote> --tags, で読むための回避策.見ていて気分が良いもの git tag 1.0.0bin
  7. 一押しオーファンタグ git push <remote> 1.0.0bin.
  8. だい一押しのバイナリ支店における事故による削除することができ git branch -D binaryStuff.おコミットしない印はガベージコレクションのため、孤児のタグを指すもの 1.0.0bin はなじてやっていると思います。

ポップカルチャーを中心にバイナリファイル

  1. 方法は私の同僚を取得しVeryBigBinary.exe 貸出の現す場合は現在の作業の支店は、例えばマスターすることさえ可能です git checkout 1.0.0bin -- VeryBigBinary.exe.
  2. このことに失敗しないオーファンタグ 1.0.0bin ダウンロードし、その場合、できない git fetch <remote> 1.0.0bin できます。
  3. を追加できるの VeryBigBinary.exe お士 .gitignore, ことのないお客様がチームを汚染の歴史のプロジェクトのバイナリー。

完全に削除するバイナリファイル

決定をした場合は、完全にパージVeryBigBinary.exe からローカルリポジトリ、リモートリポジトリや同僚のリポジトリです:

  1. 削除を希タグのリモート git push <remote> :refs/tags/1.0.0bin
  2. 削除を希タグ地(すべて削除してその他のunreferencedタグ) git tag -l | xargs git tag -d && git fetch --tags.から で1841341 と若干の修正。
  3. 使用git gcフレキシビリティを削除今unreferencedコミット。 git -c gc.reflogExpire=0 -c gc.reflogExpireUnreachable=0 -c gc.rerereresolved=0 -c gc.rerereunresolved=0 -c gc.pruneExpire=now gc "$@".また、すべて削除その他のunreferencedを設定します。から で1904860
  4. できれば、もう一度同じ動作を繰り返し、git gcトリックに。できれば自主催リポジトリがするものではありませんgit者のように、githubまたは一部企業の環境です。だ催プロバイダでないsshアクセス、リモートだけます。このプロバイダのインフラの清掃unreferencedことをお約束独自の甘ます。まる企業環境の中で相談してください、cronジョブのゴミの収集ご遠隔毎週間ほど。かなまへの影響はありませんのチームの帯域幅および保存のものとなります。ご同僚を常に git clone -b master --single-branch <url> の代わりに git clone.
  5. すべての同僚くの古いオーファンタグの必要性のみに適用手順2-3.
  6. その手順を繰1-8の 追加のバイナリファイル 新しいオーファンタグ 2.0.0bin.場合でも、仲間のタイピング git fetch <remote> --tags できる実際の名前で 1.0.0bin.本作は、次に取得すべてのタグの 1.0.0bin まunreferenced示しその後のゴミの収集(ステップ3).ようとする時は上書きるaタグ、リモコンの使用 -f このように: git push -f <remote> <tagname>

あとが

  • OTABSなタッチマスタまたはその他のソースコードを開発。のコミットハッシュの歴史、小さなサイズのこれらの枝はそのまま保持されます。だって肥大化ソースコードの歴史とバイナリファイルできないクリーンとして別途作品。 このスクリプト でも役にたつかもしれません。

  • において動作を確認し窓git-bash.

  • であっ 標準trics への保存のバイナリファイルをより効率的です。頻繁に走行 git gc (追加の引数)gitを最適化原の保存ファイルをバイナリの中州.ただし、ファイルは同様の滞在からコミットへのコミットをオフにすることが可能ですバイナリの中州ます。また、のでは意味がないため圧縮して圧縮または暗号化されたファイルです。zip,.jpgまたは.納骨堂にgitできるスイッチを切り圧縮の基になる。残念ながらでも設定に影響のソースコードです。

  • するためのスクリプトアップパーツのOTABSきにくく見た目もすっきます。特に、スクリプティングの手順で2~3から 完全に削除するバイナリファイルupdate git hookを与える魅力的なも危険な意味にgitを取得す("取得および削除全の日"といいます。。

  • するためにスキップのステップ4の 完全に削除するバイナリファイル 保全の歴史のすべてのバイナリのリモートでコストの中のリポジトリ膨張.現地リポジトリに滞在し傾います。

  • にドキュメンテーションシステムと組み合わせることが可能でありこのソリューションと maven --offline を再現可能オフラインの構築保全バージョン制御できますが、mavenのよgradle).にGolangの世界で実現可能なこの解決策の管理GOPATHの代わりに go get.Pythonにおける世界を組み合わせることが可能であることvirtualenvを含む開発環境によらずPyPiサーバー毎の構築をゼロから立ち上げました。

  • 場合はバイナリファイルの変化は非常に多いように構築人工物ですが、良いアイデアをスクリプト、ソリューション店舗直近5バージョンの資料のオーファンタグ monday_bin, tuesday_bin, ..., friday_bin, もァタグの各リリース 1.7.8bin 2.0.0bin, など。回転させることができます weekday_bin およびバイナリを削除してください。この二つの世界くの 全体 歴史のソースコードだけ 関連する 歴史のバイナリの依存関係.また、バイナリファイルの指定されたタグ なし ってソースコード全体のすべての履歴: git init && git remote add <name> <url> && git fetch <name> <tag> るべきなのです。

SVNのように扱うバイナリの中州に効率とパフォーマンスGit.

私ためのバージョン管理システムのための書類(JPEGファイル、PDFファイルです。ぼまります。まだ試験を追加するJPEGファイルの回転で90度回(チェックイン効果のバイナリの中州).Gitのリポジトリで育ったの400%アップ.SVNのリポジトリで育っただけでは11%となりました。

ように見えるSVNはるかに効率的なバイナリファイルです。

その後、私の選択はGitのためのソースコードは、SVNのためのバイナリファイルのようにします。

git clone --filter からGit2.19+浅いクローン

この新しいオプションが最終的な最終的な解決は、バイナリファイルの問題の場合はGit及びGitHub♪利用することで使いやすく優しい(その言 ん達成のためのsubmodules など)を行います。

ることができる実際のみを取得する以下のファイル-ディレクトリまた、サーバーの導入とともに、リモートプロトコル拡張子.

このために、まずシャローコピーを自動化する用途にでも便を取得するビルドシステムの種類ごとに作れます。

でもあすでに --filter=blob:limit<size> できる限界最大のblobサイズを取得す.

提供していただき、最小限の詳細の例のように見え: どんなクローンは、サブディレクトリのみのGitリポジトリとは?

いの意見をどのように扱えばよいのかという大型のバイナリファイルに関する私のソースコード(ウェブアプリケーション)に依存します。う々に対するお考えなどについて。

私は個人的に運 synchronisationの失敗をGit 一部のクラウドホストを一度私のwebアプリケーションのバイナリデータのノッチ 上記の3GBマーク.ると考えられる BFTレポクリーナー が、当時はまだような感じで、hack.それ以来私は始めてだファイル以外のGit示した目的の範囲での活用 専用ツール など、Amazon S3を管理、ファイルのバージョン管理とバック。

なんて経験は複数のGitリポジトリ管理プロジェクト?

そうです。 ヒューゴ-テーマ 主として管理されます。ちょっとkudgyが女将が切り盛りしているこの店の作成"にチェックを入れます。


私の提案は の選択ツールの.また会社だと管理codeline GitHub金の支払いを利用Git-LFS.なき探求にクリエイティブオプションなどの分散型暗号化 ファイルの保存先をblockchain.

追加オプションの検討など Minios3cmd.

してい camlistore.ていGitに基づくが、私はそれがより適切でない。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top