バージョン管理ソフトsubversionのサーバーを立ち上げようというお話。
細かい設定やWindowsでのクライアントの使い方などは Subversion も参考にしてください。
apt-get install subversion
とりあえず、ローカルのファイル経由(ネットワークではなく)でテストしてみる。
/homeの下にsvnというユーザーで、
svnというディレクトリを作り、そこにレポジトリを作っていくとします。
(この辺は、自由に決めてください)
以下のようにして、ユーザーを作成し、ディレクトリも作っておく。
adduser svn su svn
テスト用のhogeプロジェクトのレポジトリを作る。
cd /home/svn svnadmin create hoge
テスト用のファイルを作る。
mkdir ~/work; cd ~/work mkdir test_import cd test_import mkdir trunk branches tags echo "Hello, subversion!!" > trunk/test.txt
そして、インポート(レポジトリに入れる)してみる。
svn import . file:///home/svn/hoge/ -m "initial import"
以下のように表示されるはず。
Adding trunk Adding trunk/test.txt Adding branches Adding tags Committed revision 1.
そして、ファイル内容を表示してみる。
svn ls -R file:///home/svn/hoge/
以下のように出るはず。
branches/ tags/ trunk/ trunk/test.txt
ためしにチェックアウト(レポジトリから取り出す)してみる。
(ここでは、trunkのみを取り出してみる)
cd ~/work/ mkdir test_checkout; cd test_checkout svn checkout file:///home/svn/hoge/trunk
以下のように表示されるはずです。
A trunk/test.txt Checked out revision 1.
中身を表示してみる
cat trunk/test.txt
上手くいった?
svn+sshで認証して、subversionしようというお話。
クライアントは、Windows + TortoiseSVN + PuTTYです。
その他の環境の人、ごめんなさい。
su svn cd mkdir .ssh chmod 700 .ssh vi .ssh/authorized_keys chmod 600 .ssh/authorized_keys
などとして、公開鍵を設定しておく。細かいところは、ssh/PuTTY参照。
具体的な作業としては、
といったことが必要。
この時点で、ユーザーsvnでsshで、ログインできるはず。でないとダメです。
上記のままでコミットすると、複数人で書き込んでもコミッタ名がすべてsvnになってしまいます。(svnユーザーでコミットしたことになる)
ここでは、svnユーザーのみで複数人のコミッタさんがいる場合、コミッタごとに名前を区別する方法です。
(コミッタを増やすたびに、Unixのシステムのユーザーを増やすのはよくなかろう、というのが前提です)
ユーザー名がfoobarの場合、.ssh/authorized_keys に以下のように書きます。
command="svnserve -t --tunnel-user=foobar -r /home/svn" (以降、公開鍵)
通常のauthorized_keysに書き込むように、
公開鍵の前に command="〜〜" と書くことで、
鍵に当てはまる人は指定のユーザー名でコミットできるようになります。
また、"-r /home/svn"にてリポジトリのルートディレクトリを指定しています。
こうすることで、
svn+ssh://myhost/home/svn/my_repo/
と長かったリポジトリURLが
svn+ssh://myhost/my_repo/
のように短くできます(やったー!)
リポジトリの運用途中でリポジトリURLの変更する場合は、
などを参考にしてみてください。
※ただし、上記設定だとsshシェルアクセスもできなくなります…。
シェルアクセスするには、鍵を追加するしかないのかな…。
こちらも参考にしてください。
PUTTYのセッション管理を利用するとsubversionと連携して、
いろいろと自動で働かせることができます。
というか、subversionだけだと、いろいろ面倒なんですよ。
(ユーザー管理とか、ポートとか、毎回パスフレーズ聞いてきたりとか)
今回は、PuTTYごった煮版を利用しました
抑えるポイントは、ごった煮版の機能の ini保存機能を使っちゃダメだという点です。
subversionの内部のPuTTYがレジストリを見ているためです。
基本的な設定は、ssh/PuTTYを見てください。
そのようにして、接続テストを行い、セッション(設定)を保存しておきます。
これで、接続が少し楽になります。
ただし、このままでは、接続できても、何かやるたびに、パスフレーズを聞かれるので、pageant.exeを使って、パスフレーズの入力を自動化します。
まず、おもむろに、ごった煮版に含まれる、pageant.exeのショートカットをつくり、プロパティで、引数に、秘密鍵のパスを指定します。
(pageantは、キー設定を覚えてくれないので、明示的に指定しないといけません。面倒ですね)
ショートカットを起動すると、パスフレーズが聞かれるので、入力してください。
※「パスフレーズを記憶する」のチェック項目がありますが、保存するとレジストリに復号可能なパスフレーズが記録されてしまいます。面倒かと思いますがチェックを入れないで下さい。(=起動時一度だけパスフレーズの入力が必要)保存するのはセキュリティ上よくありません。puttyの設定を狙うウィルスやマルウェアがあった場合に非常に危険
あとは、このショートカットをスタートアップにでも放り込んでおくか、ランチャーなどに登録してSubversionを使う前に起動します。
確認します。
準備は整いました。
ここで、TortoiseSVNで接続してみましょう。
まずは、リポジトリを見てみます。
右クリック→TotoiseSVN→リポジトリブラウザを実行します。
URLを入力する欄がでるので、
svn+ssh://(設定名)/home/svn/hoge/
などと入力します。
設定名は、PuTTYで設定したセッション名です。
すると、以下のような感じで、表示されます。
次は、リポジトリからファイルを取り出してきます。
適当なディレクトリで、右クリック→SVNチェックアウト、します。
無事に、とりだせましたか?
あとの使い方は、普通にTortoiseSVNを使うのと一緒ですので、ご自由にどうぞヽ( ´ー`)ノ
便利やねー
Show recent 10 comments. Go to the comment page.