UnityとSVN
こんなの構成管理ぢゃない!
Ignoreしておくべきたったファイル
フォーラムの人が聞いてたし、よく見たらこいつらもバイナリだった。
- \Library\MonoManager.asset
- \Library\BuildSettings.asset
テストその1
- SVN管理下のUnityプロジェクトを用意
- Test1フォルダにチェックアウト。Test2フォルダにチェックアウト
- Test1でGameObject生成して配置
- Test2でもGameObject生成して配置
- Test1の変更をコミット(.metaじゃない方のシーンファイルがコミットされる)
- Test2で最新取得でコンフリクト
….metaになった意味は…あの…結局衝突してるんですが…
GameObjectの配置情報はどこにあるのかよく解らんかったが、もしかしたらバイナリのシーンファイルが持つのかも。
まとめると
- 複数人開発で、AssetServer使わずSVNとか使うとなると
- メンバー間でGameObjectの生成/配置が同時に出来ない
- これは同一シーンを同時に編集する時の話
- 複数シーンのUnity上でのマージはできないの?
- それってパッケージでするってことか?
例えば
- 背景(地形、設置物、天球とか)用の設置シーン。BgEnvSetting.unityを作る
- コミットしたいときはBgEnvSettingパッケージをエクスポートしてコミット
- 背景を作る人は、このBgEnvSetting.unityのみを編集する
てことは
- ProjectPaneの内容はすべて完全にSVN管理が可能と考えると
- 問題になるのはGameObject(配置情報)
- GameObjectは同時に編集するとコンフリクト(シーン単位)
- 各自の編集単位をシーン単位にすれば良い(自分の編集用シーン)
- 作業単位は例えば
- 背景(地形、設置物、天球)
- キャラ(PC、NPC)
- イベント
あとは
- 編集用シーンはコミットフリー
- 編集用シーンとは別に本番用シーン、シーン構成的には
- 本番用シーンAについて、背景編集用シーン、キャラ編集用シーンなどがあり。本番用シーンBやCについても同様な感じ
- 本番用シーンに編集をマージするために、編集用シーンをパッケージエクスポート。
- 編集者のローカルで本番シーンにパッケージをインポートしてマージする
- 本番シーンをコミット
- 本番シーンはtheir's forceで取得(マージしない)
本番用シーン=確認用シーンってのがポイント。
なんか無駄とかヌケがありそうなので絵にする
2人でやるなら
これでいいか。問題点や自動化ポイント。
- 本番用にコミットされる最新のパッケージを編集シーンに適用する部分
- パッケージインポートが必要なので自動化したい
まぁこれ以上考えたくないから運用してみる。