2011-04-22 24 views
28

私はという狂ったイメージアセット数を持つ中規模のiOSプロジェクト(〜30,000行のコード)を継承しました。もちろん、scitにはGit/Githubを使用します。現在のところ、画像はディレクトリツリーに含まれているため、リポジトリに取り込まれ、そこから巨根を膨らませて、一般的に開発を大きな頭痛にします。Gitリポジトリで画像を扱うにはどうすればいいですか?

私たちはプロジェクトに4人の開発者を、いくつかの仮想を持っています。 Dropboxに画像を移動し、iOSプロジェクトから画像を参照して、船の形状を維持することが私に起こります。

このアイデアには誰かからコメントがありますか?あなたはGit scm setupで画像/ビデオ/オーディオファイルを扱うのですか?

+0

コード行数は何も言わない。 :) –

+1

例えば、新しい行には中括弧を使い、いくつかは空行を使います。いくつかは戻り値の型の後ろに関数名を入れます。 –

答えて

21

私はそれについてかなり緊張しています。イメージを更新したいのであれば、どうすればいいですか?または、古いイメージでメンテナンスリリースを構築する必要がある場合はどうすればよいですか?

これは本当に問題ですが、これは実際には実際には問題ではありませんでしたが、私はあなたの言葉を受け取ります。なぜなら、イメージ用に1つのレポを使用するだけでなく、それ以外は?それで、画像を同期させることに怠惰になることがあります。

+0

これはMercurialのアートアセットを扱う方法です。それはかなりうまくいく。 –

+3

+1は「実際問題ですか? – vcsjones

+1

@Ernest、この問題は、App Storeへのアプリケーション提出前に起こる大規模な活動中に発生します。あなたはGit shiteの画面をスクリーンに飛ばすことになりますが、そのほとんどは無害ですが、ムックの中に隠されていることが重要なことになるかもしれません。それは私が迷惑と混乱を見つける絶え間ない混乱。 – dugla

13

これは対処するのに苦労するかもしれませんが、過去に私が使ったことは画像とメディアの場合はsubmodulesです。こうすることで、必要に応じて画像を取得せずにコードをプルダウンすることはできますが、画像やメディアをコードと同期させることができます。サブモジュールの履歴が大きくなりすぎると、履歴を持たない新しいリポジトリを作成し、古いサブモジュールを新しいサブモジュールに置き換えることができます。そうすれば、人々は完全な歴史を引き出す必要なく、メディアの最新バージョンと同期することができます。

ビデオの緑色の画面がサブモジュールに頻繁に表示されるので、最終的な形式になる前にビデオで開発することができましたが、合成後はサブモジュールの履歴を破って合成されたビデオだけを持っている新しいサブモジュール。これにより、必要に応じて古いバージョンを入手できるようにするために、すべてのビデオの余分なコピーをすべて残すことなく、(サブモジュールを交換する手作業で少しでも)作業が可能になりました。

サブモジュールを使用すると、必要な作業量が増えます。変更をイメージにコミットするには、サブモジュール内で変更を加え、コミットし、プッシュしてから親プロジェクトに移動し、サブモジュールに変更をコミットして押します。単純なケースでは、これを少し簡単にするためのスクリプトを書くことができますが、マージ競合のような複雑なケースでは、単一のプロジェクトをすべて使用するよりもかなり複雑になります。

3

私はgitがバイナリソースを扱う際に間違ったツールであることがわかります。

あなたのソフトウェアがinorderとみなすために必要とする最終資産はレポにコミットされた状態に保たれることをお勧めしますが、私はaiファイルやpsdなどの実際のイメージソースを扱う代替ソリューションを探します。

Gitは、これらのファイルを扱うことで利益を得ることはほとんどありません。また、あなたが述べたように、gitが実際の利益をもたらす領域に悪影響を与えるrepoを膨らませます。

私は自分でdropboxを検討しましたが、より適切なソリューションが必要だと感じています。私はコンピュータ間ですばやく同期することができ、最後の10バージョンなどを自動的に保存できるため、特定のバージョンを保存して名前を付けることができ、ファイルのロックをサポートすることができます(読み込み:バイナリファイルをマージする必要はありません)。別のジョブ/ワークフローのために残念ながら私はそれが存在していないことを知っていますが、私はそれが来るのが大好きです。

+0

レポの最後のアートワーク。 .aiファイルの.psdはありません。 – dugla

+0

ええ、その場合、私はちょうどレポに入れておくか、後で残念です。本当にたくさんある場合は、gitサブモジュール(http://bit.ly/aDvmTJ)を使って狂気を抑えることができます。また、実際に使用されているものや価値を提供しているものを監査します。もしそれがジャンクの削除のものの束になることが判明した場合。 –

9

私は自分で使ったことはありませんが、git mediaというプロジェクトがあり、gitの画像のような大きなバイナリファイルを扱いやすいように設計されています。それは、スコット・チャコン(Scott Chacon)のもので、gitの世界では大したことだから、おそらくかなりうまくいくと思います。

0

Subversionシステム(SVN)を使用してイメージとバイナリを保存できます。イメージやその他のバイナリは頻繁に変更されることはありませんが、これらのファイルが集中的に変更または更新されたときに通知を受け取ることができます。

Gitは、ソースコードのみをバージョン管理するのに最適で、Githubにソースコードのみを含めることができます。

SubversionとGitを一緒に使うと、すべてのものを完全にバージョン管理することができます。

0

私はこの問題に興味があります。私の蛇行の中で私はgit別館に出くわしました:http://git-annex.branchable.com私のサーバープロバイダがそれをインストールしていないので使用していません。

3

git-lfsは、この問題の現代的な解決策であるようです。レポのローカルテキストポインタとしてファイルを追跡し、外部の大きなファイルストアに保存します。これは、subrepoソリューションのようなものですが、多くの手動介入の必要はありません。

一方で、これはインターネットアクセスに依存する傾向があります。外部ファイルストアにアクセスできない場合は、ブランチ間を完全に切り替えることはできません。一方、リポジトリをクローンすると、バイナリファイルの履歴全体をダウンロードしていないことになります。

GitHubVisual Studio Online、およびBitbucket Serverでサポートされています。

関連する問題