皆で開発!XcodeでSubversion : レポジトリ作成編

個人開発をするときは問題にならないけど,複数人で開発する場合,何も気にせず全てのファイルをSVNで管理すると,困った事になる.

以下,XcodeSubversion(SVN)を利用するための準備手順

レポジトリ作成編

以下,想定する環境(あくまでもサンプルです.)

Subversionホスト名 hoge.subversion.jp
Subversionレポジトリの場所 /home/svn/project/
個人のユーザ名 ytaki43
プロジェクトメンバー用グループ project
ユーザのMacにおける作業コピー用ディレクト /Users/ytaki43/Documents/project/


他のSVNに関するページと手順は同じですが,覚え書きのため以下手順


1. Subversion用サーバにログイン

ytaki43$ ssh ytaki43@hoge.subversion.jp
Are you sure you want to continue connecting (yes/no)?yes

2. Subversionレポジトリ用のディレクトリに移動&ディレクトリ作成

[ytaki43@hoge ~]$ cd /home/svn/
[ytaki43@hoge ~]$ svnadmin create project

3. 一度サーバからログアウトし,カレントディレクトリにモックのディレクトリを作成

[ytaki43@hoge ~]$ exit
ytaki43$ mkdir -p tmp/project
ytaki43$ cd tmp/project
ytaki43$ mkdir trunk tags branches

4. 作成したモックのディレクトリをSVNレポジトリにimport

ytaki43$ svn import ./ svn+ssh://ytaki43@hoge.subversion.jp/home/svn/project/ -m "commit message"

5. とりあえず,必要ないのでモックディレクトリを削除

ytaki43$ cd ../
ytaki43$ rm -rf tmp

Xcodeプロジェクトのレポジトリ登録編

いよいよ,作成したレポジトリにXcodeのプロジェクトを登録します.


1. 自分のMac上で空のXcodeプロジェクトを作成

プロジェクト名 project
保存先 /Users/ytaki43/Documents/

2. 作成されたディレクトリ/Users/ytaki43/Documents/project/をSVNの作業コピー用ディレクトリとするため,SVNからcheckout

ytaki43$ cd /Users/ytaki43/Documents/project/
ytaki43$ svn co svn+ssh://ytaki43@hoge.subversion.jp/home/svn/project/trunk

3. 空プロジェクト作成時に出来たファイルをSVNに追加

ytkai43$ svn add --force .

4. バージョン管理下に置かないファイルをレポジトリからはずす

  • build/以下
    • ビルド結果の保存先
  • project.xcodeproj/ytaki43.*
    • ユーザ特有のファイルが含まれるXcodeプロジェクトファイル
ytkai43$ svn revert build --recursive
ytaki43$ svn revert project.xcodeproj/ytaki43.*

5. 今後も追加できないよう設定を変更(vi利用)

ytaki43$ svn propset svn:ignore "build" .
ytaki43$ export EDITOR=vi
ytaki43$ svn propedit svn:ignore project.xcodeproj/

6. エディタ起動後,以下を記述(i)して保存(Esc->:w->Entr)->終了(:q->Entr)

*.mode*
*.pbxuser

7. レポジトリにここまでの処理をcommit

ytaki43$ svn ci -m "Added Xcode project"

8. レポジトリのアクセス権限が他の開発者もcommitできる状態かどうか確認

以上で登録完了です.
ポイントは,buildディレクトリと.xcodeprojに含まれるファイルをSVN管理から外すこと.これで,衝突や面倒が起きることなく複数人で開発ができます.


めでたし,めでたし.



※上記の手順は,過去にytaki43がプロジェクトに携わった際にチームメンバーによって作成されたありがたい手順書を基に構成されています.
svn propeditの内容を ``*.model'' から ``*.mode*''に修正しました.(2011/05/30)