BathyScaphe

BathyScapheWiki

Subversion

オブソリート記事:この記事は古い内容で、長い間更新されていません。現在の BathyScaphe や OS X には内容が適用されない可能性があります。

Subversion を使って BathyScaphe のソースコードをダウンロードする操作の手順、注意点をまとめました。(Rev.10)

目次


Xcode 3.1.xで簡単チェックアウト

Xcode 3.1.xのSCM機能で簡単にチェックアウトしてみよう。

まず、Xcode 3.1.xを起動し、「環境設定」から「SCM」を選択してください。
そして、左下の「+」をクリックします。

svnXcode01.png

リポジトリ構成の設定をします。
「名前」は適当に付けてください。「SCM システム」は「Subversion」を選択します。

svnXcode02.png

新しいリポジトリ構成ができたら「URL」に「http://svn.sourceforge.jp/svnroot/bathyscaphe」と入力します。
フォーカスを移動させると、必要な部分が自動的に補完されます。
下部に緑色のポッチと「認証されました」の表示があることを確認してください。
出ていない場合は、「SCM システム」が「Subversion」になっていること、「URL」が正しく入力されていることをもう一度確認してください。

svnXcode03.png

設定が終わったら、Xcode 3.1.xの「SCM」メニューから「リポジトリ」を選択します。
左のリストから先ほど作ったリポジトリ構成を選択します。
そして、右のブラウザで「bathyscaphe」「trunk」を選択し、ツールバーの「チェックアウト」をクリックします。

svnXcode04.png

保存する場所を設定し、「チェックアウト」します。

svnXcode05.png

これで、BathyScapheのソースコード一式が取得出来ました。

Terminal.appなどを使ったチェックアウト

Mac OS 10.4.x以前をお使いの方は頑張ってSubversionをインストールします。
がんばりましょう。

さて、単刀直入いきなりコマンドを入力しちゃいましょう。

はい、終了。
これで、デスクトップのbathyscapheフォルダにチェックアウトされます。
これを作業コピーといいます。
一度チェックアウトしたあとは、好きな場所に作業コピーを移動して構いません。

CVSに慣れている方へ
作業コピー内の各ディレクトリにはCVSディレクトリの代わりに.svnディレクトリがリポジトリ情報等の保存のために存在しています。この中にはチェックアウト時のオリジナルファイルが含まれており、スタンドアロン状態でもある程度の状況確認や差分の確認が可能です。

アップデート

手元にある作業コピーの内容と SourceForge.jp に置いてあるリポジトリの内容を比較して、更新・追加されたファイルがあれば差分をダウンロードして手元のソースにマージします。

この操作で、作業コピーの内容を最新の状態にすることができます(もちろんチェックアウトした直後はこの操作は必要ありません)。

cd (作業コピーのパス)
svn update
CVSに慣れている方へ
CVSではお決まりだったd,PオプションはSubversionでは不要です。

状況確認

以下のコマンドでローカルで行った変更を確認出来ます。

cd (作業コピーのパス)
svn status
CVSに慣れている方へ
これは cvs -n update とほぼ同じです。ただし、ローカルに保存されたチェックアウト時のオリジナルファイルとの差を表示します。

処理結果を表すコード文字

update などの処理中、ログの各ファイルの前に付くコード文字の説明です。Subversionでは最大五つのカラム渡ってコード文字が付与されます。が、大抵はひとつ目のカラムだけに注目すれば大丈夫です。

文字処理結果
Uファイルが更新されて最新の状態になった。
Aファイルが追加された。(追加される予定)
Dファイルが削除された。(削除される予定)
Rファイルが置き換えられた。(ファイル名は同じだが履歴を共有していない)
Gリポジトリ、ローカル双方で変更があったがマージされた。
Cリポジトリ、ローカル双方で変更がありマージ出来なかった。(コンフリクトした)
Mローカルで変更されている。
!リポジトリの管理下にあるが問題が発生している。(バンドル内の.svnディレクトリが削除されている等)
?リポジトリで管理していないファイル。

ちょっと進んだお話

コンフリクトの解消

コンフリクトが起こるとSubversionはそれが解消されたことが通知されるまでそのファイルがコンフリクト状態であると認識し続けます。コンフリクトを解消したら以下のコマンドでSubversionに解消したことを通知する必要があります。

svn resolved <file>

ファイル名は必須です。

file.mine file.rn file.rm などの一時ファイルをすべて削除することでも通知と見なされます。(n,mはリビジョンナンバー)

tagはどこへ?

Subversionのタグ、ブランチはCVSのそれとは全くの別物になっています。
タグとブランチはそれぞれ
http://svn.sourceforge.jp/svnroot/bathyscaphe/bathyscaphe/tags
http://svn.sourceforge.jp/svnroot/bathyscaphe/bathyscaphe/branches
以下にあります。
作業コピーをtagに変えるには次のコマンドを実行します。

tagとの切り替えが面倒過ぎる

はい、もっともです。私は次のようなaliasとbash functionを常用しています。

alias svnroot="LC_ALL=C svn info | awk '/Root:/{print \$3}'"
\はバックスラッシュ
function svnls {
    svn ls `svnroot`/$1
}
function svnswitch {
    if [ ! $# -eq 1 ]; then
        echo chose directory
        return
    fi
    svn switch `svnroot`/$1
}

svnrootは作業コピー上でリポジトリのRootURLを表示します。
svnlsは作業コピー上でRootURL相対のリポジトリの内容を表示します。
tagを表示するには次のようにします。

svnls bathyscaphe/tags

svnswitchは作業コピー上でRootURL相対の位置にswitchします。
v162_FINAL tagに切り替えるには次のようにします。

svnswitch bathyscaphe/tags/v162_FINAL

カテゴリ: Development

Last Modified: