Auth/サーバの管理

このページの内容は古いです.最新版はこちら → Subversionレポジトリの使い方?

注意!

レポジトリの構成がまた変わりました。

  • 今まではチェックアウト時に「/export/spr/svn/repository/Springhead/trunk」を指定していましたが、
  • 今後は、チェックアウト時に「/home/svn/下記の略称/プロジェクト名/trunk」を指定してください。
    略称/プロジェクト名は,
  • Springheadは,spr/Springhead
  • Springhead2は,spr2/Springhead2
  • Experimentsは,lab/Experiments
  • Personalは,personnal/Personnal

です.

今までの作業コピーの切り替えは,コマンドライン版の場合は,

cd Springhead2
svn switch --relocate svn+ssh://springhead.info/export/spr/svn/repository/Springhead2/trunk  svn+ssh://springhead.info/home/svn/spr2/Springhead2/trunk

でできます.

GUIではこの操作はできないようです.申し訳ないですが,コマンドライン版をインストールしてください.GUIの場合,springhead.info が putty の設定名になります.


Springheadの開発システムとして、Subversionを導入中です。


用語の説明

レポジトリ
サーバにあるソースコードのデータベースのこと.
作業フォルダ
自分のPCのソースコードを置いて作業するフォルダ.
チェックアウト
新しく作業フォルダを作ること.
更新(Update)
作業フォルダのファイルをサーバにある最新版に置き換えること.
コミット
作業フォルダでの変更をデータベースに反映させること.

作業の流れ

  1. チェックアウト
  2. 更新
  3. 編集
  4. コミット
  5. 2から繰り返す.

導入と設定

次のどれを使うかを選んでください。

  • Windows版Subversion(コマンドライン) + PuTTY
    • コマンドライン(DOS窓で実行)。Cygwinは不要。
      • Cygwinを使うつもりがない、けど、GUIよりコマンドラインの方が好き、な人向け。
    • ⇒導入法
  • TortoiseSVN(GUI) + PuTTY
    • エクスプローラ上で動作するSubversionクライアント。
      • コマンドラインよりGUIの方が好き、な人向け。
      • 割と使い方が分かりやすい。
    • ⇒導入法
  • Windows版Subversion(コマンドライン) + CygwinSSH
    • コマンドライン(DOS窓、Cygwinなどで実行)。Cygwinが必要。
      • Cygwinを持っていて、SSHがすでに入っている人向け。
      • PuTTY関連の設定が不要になる分、少し楽できます。
    • ⇒導入法
  • Cygwin版Subversion + CygwinSSH の組み合わせは、おすすめしないことにしました。
    • Cygwin版Subversionは、試してみるといろいろ問題があることがわかったため。

Windows版Subversion(コマンドライン) + PuTTYの場合

必要なソフトのインストール

Subversion

PuTTY

  • 次のアドレスからダウンロードできます。
    • http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
    • putty.zipがおすすめです(必要なファイルがすべて含まれている)。
      • 解凍してできるファイルを、適当な場所(c:\Program Files\PuTTY\ とか)に全て放り込んでください。
      • ファイルを放り込んだフォルダに対して、手動でパスを通す必要があります。 
        (win2kの場合)
        * コントロールパネル⇒システム⇒「詳細」タブ⇒「環境変数」ボタン
        * 「システム環境変数」のリストから「Path」を選択して、「編集」
        * 変数値の末尾に(例えば)「;c:\Program Files\PuTTY」を追加

公開鍵の作成

  • putty.zipを解凍して得られたファイルに、「PUTTYGEN.EXE」というプログラムが含まれているはずなので、起動します。
  • 「Type of key to generate」の所で、「SSH-2 RSA」を選択します。
  • 「Generate」を押して、上の空白部分でマウスをランダムに動かします。(暗号鍵作成のための乱数種になります)
  • しばらく動かしていると鍵が生成されるので、「Key Passphrase」と「Confirm Passphrase」は空にしておく。
  • 「Save public key」で、公開鍵を保存。
  • 「Save private key」で、秘密鍵を保存。秘密鍵には、.ppkという拡張子がつきます。

アカウントの作成

先ほど「Save public key」で保存した公開鍵を、メールに添付してmitake@hi.pi.titech.ac.jpまで送ってください。こちらでアカウントを作成して、鍵を登録します。 同じメールに、「ユーザ名」の希望も書いて送ってください。

PuTTYの設定

PUTTY.EXEを起動すると、設定画面が開きます。

  • "Session"で
    • Host Name : springhead.info
    • Port : 22
    • Protocol : SSH
  • "Connection"で
    • Auto-login username : [アカウントの作成、の時に作成したユーザ名]
    • 最近のPuTTYでは場所が変わったようです。"Connection"=>"Data"の中を探してみてください。
  • "Connection"=>"SSH"=>"Auth"
    • Private key file for authentication : [先ほど「Save Private Key」で保存した秘密鍵]の場所
  • 再び"Session"に戻って、
    • Saved Sessionsに適当な名前を入力(「sprsvn」など)
      • ここで決めた名前が「接続の名前」となります。この接続名は以後も使います。
    • Saveボタンを押す

Subversionの設定

エディタ(メモ帳でも何でも)で、"C:\Documents and Settings\(Windowsのユーザ名)\Application Data\Subversion\config"というファイルを開いて、次の内容を書き加えて、保存してください。

[tunnels]
ssh = $SVN_SSH plink

チェックアウト

  • さきほど決めた「接続名」が、例えば「sprsvn」であるとします。
c:\> svn checkout svn+ssh://sprsvn/home/svn/spr/Springhead/trunk ./Springhead

以上で準備作業は終わりです。


TortoiseSVN(GUI) + PuTTYの場合

必要なソフトのインストール

TortoiseSVN

  • 次のアドレスからダウンロードできます。
    • http://tortoisesvn.net/downloads
    • TortoiseSVN本体、LanguagePack(Japanese)をダウンロード。
    • TortoiseSVN、LanguagePackの順にインストール。
    • 再起動を要求されるはずなので、ここで一度再起動しておきます。

PuTTY

  • 次のアドレスからダウンロードできます。
    • http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
    • putty.zipがおすすめです(必要なファイルがすべて含まれている)。
      • 解凍してできるファイルを、適当な場所(c:\Program Files\PuTTY\ とか)に全て放り込んでください。
      • ファイルを放り込んだフォルダに対して、手動でパスを通す必要があります。 
        (win2kの場合)
        * コントロールパネル⇒システム⇒「詳細」タブ⇒「環境変数」ボタン
        * 「システム環境変数」のリストから「Path」を選択して、「編集」
        * 変数値の末尾に(例えば)「;c:\Program Files\PuTTY」を追加

公開鍵の作成

  • putty.zipを解凍して得られたファイルに、「PUTTYGEN.EXE」というプログラムが含まれているはずなので、起動します。
  • 「Type of key to generate」の所で、「SSH-2 RSA」を選択します。
  • 「Generate」を押して、上の空白部分でマウスをランダムに動かします。(暗号鍵作成のための乱数種になります)
  • しばらく動かしていると鍵が生成されるので、「Key Passphrase」と「Confirm Passphrase」に同じパスフレーズを入力。パスフレーズは空にしておくと楽です。(ただし,秘密鍵ファイルが盗まれるとログインされてしまうので注意してください)。
  • 「Save public key」で、公開鍵を保存。
  • 「Save private key」で、秘密鍵を保存。秘密鍵には、.ppkという拡張子がつきます。

アカウントの作成

先ほど「Save public key」で保存した公開鍵を、メールに添付してmitake@hi.pi.titech.ac.jpまで送ってください。こちらでアカウントを作成して、鍵を登録します。 同じメールに、「ユーザ名」の希望も書いて送ってください。

PuTTYの設定

PUTTY.EXEを起動すると、設定画面が開きます。

  • "Session"で
    • Host Name : springhead.info
    • Port : 22
    • Protocol : SSH
  • "Connection"で
    • Auto-login username : [アカウントの作成、の時に作成したユーザ名]
    • 最近のPuTTYでは場所が変わったようです。"Connection"=>"Data"の中を探してみてください。
  • "Connection"=>"SSH"=>"Auth"
    • Private key file for authentication : [先ほど「Save Private Key」で保存した秘密鍵]の場所
  • 再び"Session"に戻って、
    • Saved Sessionsに適当な名前を入力(「sprsvn」など)
      • ここで決めた名前が「接続の名前」となります。この接続名は以後も使います。
    • Saveボタンを押す

TortoiseSVNの設定

エクスプローラの右クリックメニューを出すと、「TortoiseSVN」というメニューが追加されていると思います。そのメニューから「設定」を選ぶと、設定画面が出てきます。

  • 「ネットワーク」タブの「SSHクライアント」の欄に、次のように入力します。
    • c:\Program Files\TortoiseSVN\bin\TortoisePlink.exe

チェックアウト

  • Springheadの作業をはじめようとする場所に、作業用のフォルダを新しく作ります。
    • 例えば、c:\springhead など。
  • エクスプローラでそのフォルダを開きます。
  • 右クリックメニューから「チェックアウト」を選択。
  • 「リポジトリのURL」の欄に、次のように入力してOKを押すと、チェックアウトが始まります。
    • svn+ssh://sprserv/home/svn/spr/Springhead/trunk
      • 「sprserv」は、PuTTYの設定のところで決めた「接続名」。
      • 「username」は、アカウントの作成の時に決めたユーザ名。

以上で準備作業は終わりです。


Windows版Subversion(コマンドライン) + CygwinSSHの場合

必要なソフトのインストール

Subversion

CygwinSSH

  • Cygwin導入済で、CygwinSSHがすでに入っている事を前提とします。
    • そうでない場合は、PuTTYを組み合わせて使ったほうが多分楽です。

公開鍵の作成

Cygwin上で、次のようにして鍵を作ってください。

$ ssh-keygen.exe -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/username/.ssh/id_dsa): [Enter]
Enter passphrase (empty for no passphrase): [パスフレーズを入力]
Enter same passphrase again: [同じパスフレーズをもう一度入力]
Your identification has been saved in id_dsa.
Your public key has been saved in id_dsa.pub.
The key fingerprint is:
61:0d:a5:b9:21:a8:97:91:c0:7f:fb:63:44:a1:34:b4 username@host

アカウントの作成

公開鍵(拡張子が.pubの方)を、メールに添付してmitake@hi.pi.titech.ac.jpまで送ってください。こちらでアカウントを作成して、鍵を登録します。 同じメールに、「ユーザ名」の希望も書いて送ってください。

sshの設定

Cygwinのホームディレクトリに、.ssh/configというファイルを作って、次のように書き込んでください(.ssh/configがすでにある場合は、追記してください)。

Host sprsvn
 HostName springhead.info
 User username ←アカウントの作成、の所で決めた「ユーザ名」

チェックアウト

c:\> svn checkout svn+ssh://sprsvn/home/svn/spr/Springhead/trunk ./Springhead

以上で準備作業は終わりです。


Cygwin版Subversion + CygwinSSHの場合(非推奨)

必要なソフトのインストール

Subversion

Cygwin用のSubversionパッケージがあります。

  • Cygwinを起動して、
    $ which svn
    svn: command not found.
  • こんな感じなら、Subversionが入っていないのでインストールが必要です。
    • 1, Cygwinのインストールに使った「setup.exe」を起動する。
    • 2, パッケージリストの所で、devel⇒Subversionの項目が「Skip」になっているはずなので、クリックして「1.1.1-1」にする。
      • 他の番号になるかもしれませんが、それでもOKです。
    • 3, 「次へ」で、インストールが始まる。

SSH

  • Cygwinを起動して、
    $ which ssh
    ssh: command not found.
  • こんな感じなら、SSHが入っていないのでインストールが必要です。
    • 同様にsetup.exeから導入してください。

公開鍵の作成

次のようにして、ssh用の暗号鍵を作成してください。

$ ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/jumius/.ssh/id_dsa): [Enter]
Enter passphrase (empty for no passphrase): [パスフレーズを入力]
Enter same passphrase again: [同じパスフレーズを入力]
Your identification has been saved in id_dsa.
Your public key has been saved in id_dsa.pub.
The key fingerprint is:
4c:fa:5c:61:53:fa:e6:b1:c7:fb:61:ae:19:10:57:38 Administrator@sora

アカウントの作成

先ほど作成した"id_dsa.pub"を、メールに添付してmitake@hi.pi.titech.ac.jpまで送ってください。こちらでアカウントを作成して、鍵を登録します。 同じメールに、「ユーザ名」の希望も書いて送ってください。

  • すでにspringhead.infoにアカウントを持っている人は、この作業は必要ないです。

作業フォルダの作成

Cygwinユーザで、改行コードの設定を「DOS」にしている方は、改行コードによるトラブルを避けるために次のようにしてください(改行コードをどう設定したか覚えていない、という方も念のためにやってください)。

  • 1, Subversion作業専用のフォルダを作る。例えばc:\subversionworkなど。
  • 2, そのフォルダを、次のようにしてCygwinにマウントする。(someoneはCygwinのログイン名)
    $ mount -b c:\subversionwork /home/someone/svnwork
  • 3, チェックアウトするときに、必ず/home/someone/svnwork以下にチェックアウトする。

チェックアウト

「アカウントの作成」で、作成したアカウントのユーザ名が「username」であるとします。

$ cd ~/svnwork   ← 先述の改行コード設定に該当していた場合は、必須
$ svn checkout svn+ssh://username@springhead.info/home/svn/spr/Springhead/trunk ./Springhead
Enter passphrase for key '/home/jumius/.ssh/id_dsa':(パスフレーズを入力)

以上で準備作業は終わりです。




よくある使い方

チェックアウト

作業用のデータ(最新のソースコード他、一式)をダウンロードします。

  • コマンドライン
    $ svn checkout svn+ssh://someone@springhead.info/home/svn/spr/Springhead/trunk ./Springhead
  • GUI
    • 1, チェックアウトしたいフォルダで、右クリックメニュー⇒「チェックアウト」
    • 2, レポジトリのURL、にsvn+ssh://sprserv/home/svn/spr/Springhead/trunkと入力してOKを押す

アップデート

一度チェックアウトしたら、以後はアップデートによって最新のソースコードに更新します。

  • コマンドライン
    $ svn update
  • GUI
    • チェックアウトしたフォルダで、右クリックメニュー⇒「更新」

ファイル、ディレクトリの追加、削除

新しく作成したファイル"hoge.cpp"を、Subversionに管理させるには次のようにします。

  • コマンドライン
    $ svn add hoge.cpp
  • GUI
    • 新しく追加したファイルを右クリック⇒「TortoiseSVN」⇒「追加」

また、次のようにすると、ファイル"hoge.cpp"をSubversionの管理からはずし、ファイルそのものも削除します。

  • コマンドライン
    $ svn remove hoge.cpp
  • GUI
    • 削除したいファイルを右クリック⇒「TortoiseSVN」⇒「削除」

ディレクトリに関しては、次のようにすると、ディレクトリ"fuga"を新しく作成すると同時にSubversionの管理下に置きます(コマンドライン限定)。

  • コマンドライン
    $ svn mkdir fuga

ファイル名の変更、ファイルの移動

ディレクトリに関しても同じです。

  • 移動:
    • コマンドライン
      $ svn move hoge.cpp fuga/piyo.cpp
      ## 現在のディレクトリから、fugaディレクトリの中へ移動する
    • GUI
      • 移動したいファイルを右クリック⇒「TortoiseSVN」⇒「名前を変更」
      • fugaフォルダに移動したいなら、変更後の名前として「fuga\piyo.cpp」などと入力。
      • 一つ上のフォルダに移動したいなら、「..\piyo.cpp」などと入力。
  • 名前変更:
    • コマンドライン
      $ svn move hoge.cpp piyo.cpp
      ## 名前がhoge.cppからpiyo.cppに変わる
    • GUI
      • 移動したいファイルを右クリック⇒「TortoiseSVN」⇒「名前を変更」
      • 変更後の名前を入力

コミット

自分の加えた変更を、サーバにアップロードします。コミットするときには、記録をとるためにメッセージの入力が必須です。

  • コマンドライン
    $ svn commit -m "Commit Log Message."
  • GUI
    • コミットするフォルダで、何もないところを右クリック⇒「コミット」
    • ログメッセージを入力して、OKを押す

確認

現在の状況の確認です。

左端の文字が、状況を表します。

  • コマンドライン
    $ svn status
    A    hoge.h       ←あなたは、hoge.hを追加しました(まだコミットしていません)
    M    fuga.cpp     ←あなたは、fuga.cppを編集しました(まだコミットしていません)
    M    fuga.h       ←上に同じ
    D    test.ini     ←あなたは、test.iniを削除しました(まだコミットしていません)
    ?    test_1.txt   ←test_1.txtは、Subversionの管理外にあります

特に変更のないファイルは、表示されません。

特に、「?」が付いているファイルは要注意です。もしかすると、新しいファイルを追加したのに「svn add」し忘れているのかもしれないからです。

  • GUI
    • GUIの場合、エクスプローラ上のファイル一つ一つに状態を示すアイコンが付きます。
      • 緑のチェック:特に変更なし
      • 赤い「!」:変更が加わったファイル
      • 黄色の「!」:更新処理中に衝突が起きたファイル
      • 「+」:追加されたファイル
      • 何のアイコンも付いていない:Subversionの管理外

参考資料

過去の資料

Auth/Subversion、過去の資料