2010-12-08 10 views
14

Heya、私はオープンソース・ゲームのプロジェクト管理部門に勤めています。今はバージョン管理にSVNを使用しており、同じリポジトリにコードと資産を格納しています。資産(モデル、テクスチャ)のソースバージョンは別のメディアブランチに存在し、レンダリングされたアセット(実際にはゲームの3Dモデルのレンダリングされた2次元画像を使用するため、等値2Dゲームで作業しています)彼らはゲームを実行するために必要なので、コードに近い。オープンソース環境で現実的に(分散した)バージョン管理に対応できますか?

私たちのアーティストは、Subversionの使用を開始し、一般的にはバージョンコントロールという概念を頭に入れておくのは苦労しました。現在、プロジェクトは主にプログラマーで構成されており、ブランチ(および関連するマージプロセス)の作業とパッチの送信を容易にするために、SVNから分散バージョン管理に移行することを検討しています。私たちはまだDVCSを使用するかどうかについては決定していませんが、最終的にはMercurialまたはGitを使用することになります。

分散バージョン管理は、技術的背景を持つ開発者にとっては優れていますが、アーティストやその他の技術に精通していない開発者にとっては、あまりにも複雑で複雑に思えるかもしれません。

私は、アーティストのバージョン管理ワークフローをどのように簡単にすることができるか、あらゆる種類のアドバイスを探しています。 Perforceのようなものを、仕事にどのように適しているかにかかわらず使っていることは、無料のオープンソースプロジェクトのオプションではないことに注意してください。ですから、私はかなりアドバイス、チュートリアル、アーティストが分散バージョン管理、特にHgやGitを頭で囲むのを容易にするプロジェクトツールを探しています。

このルートを辿り、分散バージョン管理を使用してアーティストを募集してみる価値はありますか?私たちは既存のSVNリポジトリにソースバージョンのアセット(テクスチャ、モデル)を保存し続けることができます。しかし、バージョン管理のコードの近くに配置する必要があるため、ゲームを実行するために必要な資産の解決策を見つける必要があります。

そこには素晴らしいDVCSガイドがたくさんあります。 Hginit tutorial。しかし、私が見つけたものはすべてプログラマーのために書かれたものです。彼らは今すぐ簡単にローカルコミットし、ブランチの潜在能力を最大限に活用し、あまりにも面倒なく変更をマージすることができます。しかし、これはアーティストには有益ではないかもしれませんが、むしろあまりにも複雑で恐ろしいものです。主な対象読者としてアーティストのために書かれたDVCSチュートリアルを知りましたか?

我々はまた、プロジェクト管理の目的でのTracを使用して、あなたはアーティストフレンドリーでTracのプラグインを知っていれば、私はプログラマが現実的に対処することができるにもわからないんだけど、私は

+1

はどのようにして、現在、マージできないファイルを処理していますか? –

答えて

11

:-)としても知らせています分散バージョン管理機能付き。証明のために、Stack Overflowに関する分散バージョン管理の質問の数を示します。

私の提案は、アーティストに2つのチェックリストまたはチートシートを与えることです。 1つは芸術作品を手に入れ、もう1つはアート作品を手に入れる。これらのチートシートは、あなたの作業環境に特有のものです。

アーティストがソースコントロールの内容を理解したい場合は、プログラマの1人が詳細を説明することができます。

ほとんどの人が自分の仕事をやりたいと思っていて、何を気にしません。彼らはちょうど方法について気にします。

+0

もう1つのステップは、1つのすてきな答えに近づけることです:-) –

5

次は、バージョン管理とMercurialの視覚的な紹介です。

理解しやすくするために役立つかどうかを確認してください。私は私の頭の中で包み込むことができない何かを使用することは非常に困難であることがわかります。だからここ

は、いくつかの良い視覚的な紹介は以下のとおりです。

Gitは、多くのプログラマに好まれ、より詳細なモデルを公開します。 Mercurialはよりクリーンで小さな概念のサブセットを扱います。私はMercurialがあなたの目的にもっと適していると信じています。

+1

両方の応答者と同意します。残念なことに、私たちの技術タイプでさえも、コンセプトについて頭を悩ませていますが、ここに掲載されているテーマでは最高の資料を用意しています。私はまた、Hgはgitのインデックスがないために少し威圧的であることに同意します。 TortoiseHgも素晴らしいクライアントです。 –

0

アーティストにSVNを使用させて、DVCSをプッシュするのは時間が掛かっているように思えます。おそらく、DVCSがSVNで最新の状態に保たれるように、DVCSをSVNチェックインで更新する方法がありますか?

SVNの採用に関しては、「人」が強制するものではなく、必要なもの(またはなくては生きていけないもの)と見なしている人には本当に魅力的だと思います。彼らがツールからどのように恩恵を受けることができるかを知ることができれば(すなわち、以前のリビジョンにロールバックするなど)、それを採用することがもっと賢明かもしれません。しかし、SVNがプログラマーのやり方でアーティストに利益をもたらすことができるかどうかはわかりません。

VCSの有無にかかわらず開発されたプログラマとして、私はVCSの世界がはるかに良い場所であると正直に言うことができ、私は決して世界に戻らないでしょう。

7

Mercurialでは、アーティストにSubversionを継続させることができます。また、開発者はMercurialに切り替えて、分散リビジョン管理のメリットを享受できます。

トリックは、MercurialでSubversion subrepositoryを使用することです。 Mercurialはリポジトリを入れ子にします:Mercurial 1.7はMercurialとSubversionのサブリポジトリをサポートしていますが、Mercurial 1.8はGitサブリポジトリをサポートします。

サブペクトは、.hgsubというファイルを使用して制御します。あなたのケースでは、ファイルに次のようなものを追加します。

 
graphics/rendered = [svn]http://svn.example.org/graphics/rendered 

これはhttp://svn.example.org/graphics/renderedsvn checkoutを作るために、あなたのMercurialの作業コピーにgraphics/renderedとしてチェックアウトを保存するためのMercurialに指示します。言い換えれば、.hgsubファイルの形式は、あなたは、最初のチェックアウトを自分で作る.hgsubファイルを追加し、Mercurialはコミットさせる

mount-point = [type]source-URL 

です。その時点で、Mercurialはあなたのsubrepoでチェックアウトされた正確なSubversionリビジョンに注意します。このリビジョン番号は.hgsubstateに保存されています。これはMercurialによって追跡される余分なファイルです。

他の開発者がMercurialリポジトリのクローンを作成すると、Mercurialは.hgsub.hgsubstateファイルに気づき、それらを使ってコミットしたSubversionのチェックアウトを再作成します。このソリューションの

利点は以下のとおりです。

  1. アーティストがSubversionで作業を続けることができます。ここでは、外側のMercurialリポジトリを複製せずに、グラフィックファイルを独立して扱うことができると仮定して、少し単純化しています。それが真実でなくても、Subversionを使用して大半の作業を行うことができ、最新のMercurialの変更を得るためには、ただちにhg pull --updateを実行してください。

  2. すべてのグラフィックファイルのすべてのリビジョンをダウンロードする必要はありません。これは通常、大きなバイナリファイルについて話すときに、(任意の)分散リビジョン管理システムのためのショーストッパーです。

    問題は、特定のファイルのすべてのリビジョンを格納する必要があるのはサーバーのみですが、すべての開発者がすべてのバージョンを格納する分散リビジョン管理が必要であることです。

    バイナリ資産をSubversionサブペーオに外部化することで、この問題が解決されます。

Mercurialはすべてリビジョン管理に関するもので、プロジェクトの一貫したスナップショットを提供することについてです。したがって、Mercurialは明示的にコミットされたものだけをチェックアウトします。これにより、開発者は定期的に新しいSubversionのリビジョンにプルする必要がありますことを意味します

$ cd graphics/rendered 
$ svn update 
$ cd ../.. 
$ # test new graphics! 
$ hg commit -m 'Updated graphics' 

Mercurialはコミット.hgsubstateファイルに新しいSubversionのリビジョン番号を犯している - Mercurialはファイルに番号を挿入するの世話をします、開発者はそれをコミットする必要があります。こうすることで、各Mercurialチェンジセットは.hgsubstateファイルを介して特定のSubversionリビジョンを参照するので、過去の状態(ソースコードとグラフィックスで構成される)を正確に再作成することができます。

私は相手に少し遅れて(そして、できればないオフトピック)かもしれませんが、あなたのオリジナルのポストにあなたが言及した
+0

+1私は同じ考えを持っていました。つまり、アーティストをSVNに入れて、プログラマーを切り替えました。 – orangepips

1

「 PERFORCEのようなものを使用していることに注意してください、関係なく、どのように適していますそれは 仕事のためかもしれない、オプションではない 無料のオープンソース プロジェクトです。

あなたがPERFORCEの中に本当に興味を持っている場合、あなたは知って興味があるかもしれません:

「あなたは がライセンスまたはその他のオープンソース ライセンスの下で独占的に を配布されるソフトウェアを開発する場合、あなたがかもしれ PERFORCEライセンスを無料で入手する これにはアップグレードが含まれていますが、 にはテクニカルサポートが含まれていません。 - http://www.perforce.com/perforce/price.html

1

GITのゲームを担当するアーティストがいます。 私たちのためには、SmartGITクライアントが不可欠です。

SVNフレーバーも付属しています。

リンク http://www.syntevo.com/smartgit/index.html

関連する問題