皆で開発!XcodeでSubversion : レポジトリ作成編
個人開発をするときは問題にならないけど,複数人で開発する場合,何も気にせず全てのファイルをSVNで管理すると,困った事になる.
以下,XcodeでSubversion(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のプロジェクトを登録します.
プロジェクト名 | 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)