Subversion1.5のWebDAV transparent write-through proxy

タグ:

svnsyncはミラーリングの仕組みなのだが、write-through proxyを使うことで、ApacheにくるSVNリクエストを透過的に転送する。

わかりやすくいうと、svnsyncは同期のためのバックエンドの機能で、write-through proxyはSVNへのリクエストを振り分けを行うフロントエンドのもの。2つの技術を合わせて使うと、分散リポジトリ構成を組める。

svnsyncを使ってリポジトリレプリケーションでも書いたが、svnsyncだと、ミラー側のリポジトリはRアクセスしかだめにしないとだめ。そのために、hooks以下のスクリプトでcommitをはじいたりする処理をいれなければならない。
write-through proxyだと、ミラー側に来たリクエストをマスタ側に転送してくれるのでそういった心配が要らなくなる。Proxyぽく透過的にリクエストを転送してくれるのでwrite-through proxy。

この場合、ネットワーク上に1つのマスタリポジトリがあり、コミット処理はここにえいや!と一元的に管理する。それ以外のミラー側(スレーブ)はRを担当することで、たくさんのスレーブを立てて処理を分散することができる。

参考:
Subversion 1.5 WebDAV Write-Thru Proxies by 本家
Subversion 1.5.0 での新機能 (WebDAV Write Through Proxy)
エンタープライズ環境におけるSubversionの複製アーキテクチャ by japan.internet.com デベロッパーさん
複数のドメインを運営する (バーチャルホスト) by Linuxで自宅サーバさん
バーチャルホストによる複数サイトの同時運用 by @ITさん


共通して


ドメイン名はいいけど、それ以降のパスはそろえたほうがいい。リポジトリ名もそろえておいたほうが良し。
mod_proxy使うわけだからリポジトリ名が異なると「Unusable URI: it does not refer to this repository」みたいに怒られると思う。

環境は以下。ApacheのVirtualDomainを使って、1台のPCに2ドメインをひっつけて環境を作った。

Subversion1.5.3
Windows Vista。
Apache 2.2

master
・master.daipresents.com:8888/svn
・C:\fujihara\svn_masterがリポジトリ置場

slave
・slave.daipresents.com:8888/svn
・C:\fujihara\svn_slaveがリポジトリ置場

マスタの設定

通常のSVN設定と同じく下のような感じでhttpd.confを設定しておけばよい。
 LoadModule dav_module         modules/mod_dav.so
 LoadModule dav_svn_module     modules/mod_dav_svn.so
 LoadModule rewrite_module     modules/mod_rewrite.so
 LoadModule authz_svn_module   modules/mod_authz_svn.so
 
 <VirtualHost *:8888>
   ServerName master.daipresents.com
   DocumentRoot "C:/fujihara/Apache Software Foundation/Apache2.2/htdocs"
   ServerAdmin daipresents@gmail.com
   ErrorLog logs/error_master.log
   TransferLog logs/access_master.log
   
   <Location /svn>
     DAV svn
     SVNListParentPath on
     SVNParentPath C:\fujihara\svn_master
     AuthType Basic
     AuthName "Master Subversion Basic Auth"
     AuthUserFile C:\fujihara\svn_master\passwd
     Require valid-user
   </Location>
 
 </VirtualHost>

マスタにリポジトリを作成。

C:\fujihara\svn_master>svnadmin create repo01

マスタのpost-revprop-change.batを修正。

 echo post-revprop-change.bat,%1,%2,%3,%4,%5 >> "C:/fujihara/Apache Software Foundation/Apache2.2/logs/master.hocks.log"
 svnsync copy-revprops http://slave.daipresents.com:8888/svnsync/repo01 %2 --non-interactive --sync-username=svnsyncuser --sync-password=password

マスタのpost-commit.batを修正。

echo post-commit.bat,%1,%2 >> "C:/fujihara/Apache Software Foundation/Apache2.2/logs/master.hocks.log"
svnsync sync http://slave.daipresents.com:8888/svnsync/repo01 --non-interactive --source-username=svnsyncuser --source-password=password --sync-username=svnsyncuser --sync-password=password


スレーブの設定


Apache2.2のmod_proxyを使う。masterと同じく「/svn」とパスをそろえておく。ローカルのApache1台でやってるのでdav_svn.soとかは省略。

 LoadModule proxy_module modules/mod_proxy.so
 LoadModule proxy_http_module modules/mod_proxy_http.so
 
 <VirtualHost *:8888>
   ServerName slave.daipresents.com
   DocumentRoot "C:/fujihara/Apache Software Foundation/Apache2.2/htdocs"
   ServerAdmin daipresents@gmail.com
   ErrorLog logs/error_slave.log
   TransferLog logs/access_slave.log
   
   <Location /svn>
      DAV svn
      SVNListParentPath on
      SVNParentPath C:\fujihara\svn_slave
      AuthType Basic
      AuthName "Slave Subversion Basic Auth"
      AuthUserFile C:\fujihara\svn_master\passwd
      Require valid-user
      SVNMasterURI http://master.daipresents.com:8888/svn
   </Location>
 
   <Location /svnsync>
      DAV svn
      SVNListParentPath on
      SVNParentPath C:\fujihara\svn_slave
      AuthType Basic
      AuthName "Sync Subversion Basic Auth"
      AuthUserFile C:\fujihara\svn_master\passwd
      Require valid-user
   </Location>
 </VirtualHost>

次にpre-revprop-change.batとstart-commit.batを設定。

exit 0

次にスレーブのリポジトリを初期化。

 C:\fujihara\svn_slave>svnadmin create repo01
 C:\fujihara\svn_slave>svnsync init http://slave.daipresents.com:8888/svnsync/repo01 http://master.daipresents.com:8888/svn/repo01 --non-interactive --source-username=fujihara --source-password=password --sync-username=svnsyncuser --sync-password=password
 Copied properties for revision 0.

svnsyncのときに設定したミラー側(スレーブ)にコミットされないような仕組みが要らなくなるので楽ちん。


動作確認


ためしてみよー。

Masterへのコミット

Apacheのログを確認しながらMasterにコミットをすることには成功。そしてsvnsyncも動いた。
// master apache log.
 127.0.0.1 - - [14/Dec/2008:18:43:03 +0900] "OPTIONS /svn/repo01 HTTP/1.1" 401 401
 127.0.0.1 - fujihara [14/Dec/2008:18:43:08 +0900] "OPTIONS /svn/repo01 HTTP/1.1" 200 -
 127.0.0.1 - fujihara [14/Dec/2008:18:43:08 +0900] "PROPFIND /svn/repo01 HTTP/1.1" 207 651
 127.0.0.1 - fujihara [14/Dec/2008:18:43:08 +0900] "OPTIONS /svn/repo01 HTTP/1.1" 200 190
 127.0.0.1 - fujihara [14/Dec/2008:18:43:08 +0900] "MKACTIVITY /svn/repo01/!svn/act/a667e022-f5b3-a141-8c77-8f2fe9cb1a87 HTTP/1.1" 201 229
 127.0.0.1 - fujihara [14/Dec/2008:18:43:08 +0900] "PROPFIND /svn/repo01/!svn/vcc/default HTTP/1.1" 207 402
 127.0.0.1 - fujihara [14/Dec/2008:18:43:08 +0900] "CHECKOUT /svn/repo01/!svn/bln/2 HTTP/1.1" 201 243
 127.0.0.1 - fujihara [14/Dec/2008:18:43:08 +0900] "PROPPATCH /svn/repo01/!svn/wbl/a667e022-f5b3-a141-8c77-8f2fe9cb1a87/2 HTTP/1.1" 207 462
 127.0.0.1 - fujihara [14/Dec/2008:18:43:08 +0900] "PROPFIND /svn/repo01 HTTP/1.1" 207 387
 127.0.0.1 - fujihara [14/Dec/2008:18:43:08 +0900] "CHECKOUT /svn/repo01/!svn/ver/2/test.txt HTTP/1.1" 201 250
 127.0.0.1 - fujihara [14/Dec/2008:18:43:08 +0900] "PUT /svn/repo01/!svn/wrk/a667e022-f5b3-a141-8c77-8f2fe9cb1a87/test.txt HTTP/1.1" 204 -
 127.0.0.1 - - [14/Dec/2008:18:43:10 +0900] "OPTIONS /svn/repo01 HTTP/1.1" 401 401
 127.0.0.1 - svnsyncuser [14/Dec/2008:18:43:10 +0900] "OPTIONS /svn/repo01 HTTP/1.1" 200 -
 127.0.0.1 - svnsyncuser [14/Dec/2008:18:43:10 +0900] "PROPFIND /svn/repo01 HTTP/1.1" 207 651
 127.0.0.1 - fujihara [14/Dec/2008:18:43:08 +0900] "MERGE /svn/repo01 HTTP/1.1" 200 958
 127.0.0.1 - fujihara [14/Dec/2008:18:43:10 +0900] "DELETE /svn/repo01/!svn/act/a667e022-f5b3-a141-8c77-8f2fe9cb1a87 HTTP/1.1" 204 -
// slave apache.log
 127.0.0.1 - - [14/Dec/2008:18:43:09 +0900] "OPTIONS /svnsync/repo01 HTTP/1.1" 401 401
 127.0.0.1 - svnsyncuser [14/Dec/2008:18:43:09 +0900] "OPTIONS /svnsync/repo01 HTTP/1.1" 200 -
 127.0.0.1 - svnsyncuser [14/Dec/2008:18:43:09 +0900] "PROPFIND /svnsync/repo01 HTTP/1.1" 207 659
 127.0.0.1 - svnsyncuser [14/Dec/2008:18:43:09 +0900] "PROPFIND /svnsync/repo01/!svn/vcc/default HTTP/1.1" 207 410
 127.0.0.1 - svnsyncuser [14/Dec/2008:18:43:09 +0900] "PROPFIND /svnsync/repo01/!svn/bln/2 HTTP/1.1" 207 461
 127.0.0.1 - svnsyncuser [14/Dec/2008:18:43:09 +0900] "PROPFIND /svnsync/repo01 HTTP/1.1" 207 659
 127.0.0.1 - svnsyncuser [14/Dec/2008:18:43:09 +0900] "PROPFIND /svnsync/repo01/!svn/vcc/default HTTP/1.1" 207 1312
 127.0.0.1 - svnsyncuser [14/Dec/2008:18:43:09 +0900] "PROPFIND /svnsync/repo01 HTTP/1.1" 207 659
 127.0.0.1 - svnsyncuser [14/Dec/2008:18:43:09 +0900] "PROPFIND /svnsync/repo01/!svn/vcc/default HTTP/1.1" 207 300
 127.0.0.1 - svnsyncuser [14/Dec/2008:18:43:09 +0900] "PROPPATCH /svnsync/repo01/!svn/bln/0 HTTP/1.1" 207 435
 127.0.0.1 - svnsyncuser [14/Dec/2008:18:43:09 +0900] "PROPFIND /svnsync/repo01 HTTP/1.1" 207 659
 127.0.0.1 - svnsyncuser [14/Dec/2008:18:43:10 +0900] "PROPFIND /svnsync/repo01/!svn/vcc/default HTTP/1.1" 207 1442
 127.0.0.1 - svnsyncuser [14/Dec/2008:18:43:10 +0900] "PROPFIND /svnsync/repo01 HTTP/1.1" 207 659
 127.0.0.1 - svnsyncuser [14/Dec/2008:18:43:10 +0900] "PROPFIND /svnsync/repo01/!svn/vcc/default HTTP/1.1" 207 1442
 127.0.0.1 - svnsyncuser [14/Dec/2008:18:43:10 +0900] "PROPFIND /svnsync/repo01 HTTP/1.1" 207 659
 127.0.0.1 - svnsyncuser [14/Dec/2008:18:43:10 +0900] "PROPFIND /svnsync/repo01/!svn/vcc/default HTTP/1.1" 207 1442
 127.0.0.1 - svnsyncuser [14/Dec/2008:18:43:10 +0900] "PROPFIND /svnsync/repo01 HTTP/1.1" 207 659
 127.0.0.1 - svnsyncuser [14/Dec/2008:18:43:10 +0900] "PROPFIND /svnsync/repo01/!svn/vcc/default HTTP/1.1" 207 1442
 127.0.0.1 - svnsyncuser [14/Dec/2008:18:43:10 +0900] "PROPFIND /svnsync/repo01 HTTP/1.1" 207 659
 127.0.0.1 - svnsyncuser [14/Dec/2008:18:43:10 +0900] "PROPFIND /svnsync/repo01/!svn/vcc/default HTTP/1.1" 207 1442
 127.0.0.1 - svnsyncuser [14/Dec/2008:18:43:10 +0900] "PROPFIND /svnsync/repo01 HTTP/1.1" 207 659
 127.0.0.1 - svnsyncuser [14/Dec/2008:18:43:10 +0900] "PROPFIND /svnsync/repo01/!svn/vcc/default HTTP/1.1" 207 410
 127.0.0.1 - svnsyncuser [14/Dec/2008:18:43:10 +0900] "PROPFIND /svnsync/repo01/!svn/bln/2 HTTP/1.1" 207 461
 127.0.0.1 - svnsyncuser [14/Dec/2008:18:43:10 +0900] "PROPFIND /svnsync/repo01 HTTP/1.1" 207 659
 127.0.0.1 - svnsyncuser [14/Dec/2008:18:43:10 +0900] "PROPFIND /svnsync/repo01/!svn/vcc/default HTTP/1.1" 207 300
 127.0.0.1 - svnsyncuser [14/Dec/2008:18:43:10 +0900] "PROPPATCH /svnsync/repo01/!svn/bln/0 HTTP/1.1" 207 435


Slaveへのコミット


うまくいった。Masterへ転送され、svnsycnでスレーブも更新となる。

// master apache.log
 127.0.0.1 - fujihara [14/Dec/2008:23:16:30 +0900] "MKACTIVITY /svn//repo01/!svn/act/091ba693-9a6b-ed46-a57d-b3d4a5362a41 HTTP/1.1" 201 229
 127.0.0.1 - fujihara [14/Dec/2008:23:16:30 +0900] "CHECKOUT /svn//repo01/!svn/bln/6 HTTP/1.1" 201 243
 127.0.0.1 - fujihara [14/Dec/2008:23:16:31 +0900] "PROPPATCH /svn//repo01/!svn/wbl/091ba693-9a6b-ed46-a57d-b3d4a5362a41/6 HTTP/1.1" 207 462
 127.0.0.1 - fujihara [14/Dec/2008:23:16:31 +0900] "CHECKOUT /svn//repo01/!svn/ver/6/test.txt HTTP/1.1" 201 250
 127.0.0.1 - fujihara [14/Dec/2008:23:16:31 +0900] "PUT /svn//repo01/!svn/wrk/091ba693-9a6b-ed46-a57d-b3d4a5362a41/test.txt HTTP/1.1" 204 -
 127.0.0.1 - - [14/Dec/2008:23:16:32 +0900] "OPTIONS /svn/repo01 HTTP/1.1" 401 401
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:32 +0900] "OPTIONS /svn/repo01 HTTP/1.1" 200 -
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:32 +0900] "PROPFIND /svn/repo01 HTTP/1.1" 207 651
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:33 +0900] "PROPFIND /svn/repo01 HTTP/1.1" 207 651
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:33 +0900] "PROPFIND /svn/repo01/!svn/vcc/default HTTP/1.1" 207 402
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:33 +0900] "PROPFIND /svn/repo01/!svn/bln/7 HTTP/1.1" 207 453
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:33 +0900] "PROPFIND /svn/repo01 HTTP/1.1" 207 651
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:33 +0900] "PROPFIND /svn/repo01/!svn/vcc/default HTTP/1.1" 207 1214
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:33 +0900] "REPORT /svn/repo01 HTTP/1.1" 200 378
 127.0.0.1 - fujihara [14/Dec/2008:23:16:31 +0900] "MERGE /svn//repo01 HTTP/1.1" 200 724
 127.0.0.1 - fujihara [14/Dec/2008:23:16:35 +0900] "DELETE /svn//repo01/!svn/act/091ba693-9a6b-ed46-a57d-b3d4a5362a41 HTTP/1.1" 204 -
// slave apache.log
 127.0.0.1 - - [14/Dec/2008:23:16:27 +0900] "OPTIONS /svn/repo01 HTTP/1.1" 401 401
 127.0.0.1 - fujihara [14/Dec/2008:23:16:30 +0900] "OPTIONS /svn/repo01 HTTP/1.1" 200 -
 127.0.0.1 - fujihara [14/Dec/2008:23:16:30 +0900] "PROPFIND /svn/repo01 HTTP/1.1" 207 651
 127.0.0.1 - fujihara [14/Dec/2008:23:16:30 +0900] "OPTIONS /svn/repo01 HTTP/1.1" 200 190
 127.0.0.1 - fujihara [14/Dec/2008:23:16:30 +0900] "MKACTIVITY /svn/repo01/!svn/act/091ba693-9a6b-ed46-a57d-b3d4a5362a41 HTTP/1.1" 201 229
 127.0.0.1 - fujihara [14/Dec/2008:23:16:30 +0900] "PROPFIND /svn/repo01/!svn/vcc/default HTTP/1.1" 207 402
 127.0.0.1 - fujihara [14/Dec/2008:23:16:30 +0900] "CHECKOUT /svn/repo01/!svn/bln/6 HTTP/1.1" 201 243
 127.0.0.1 - fujihara [14/Dec/2008:23:16:31 +0900] "PROPPATCH /svn/repo01/!svn/wbl/091ba693-9a6b-ed46-a57d-b3d4a5362a41/6 HTTP/1.1" 207 462
 127.0.0.1 - fujihara [14/Dec/2008:23:16:31 +0900] "PROPFIND /svn/repo01 HTTP/1.1" 207 387
 127.0.0.1 - fujihara [14/Dec/2008:23:16:31 +0900] "CHECKOUT /svn/repo01/!svn/ver/6/test.txt HTTP/1.1" 201 250
 127.0.0.1 - fujihara [14/Dec/2008:23:16:31 +0900] "PUT /svn/repo01/!svn/wrk/091ba693-9a6b-ed46-a57d-b3d4a5362a41/test.txt HTTP/1.1" 204 -
 127.0.0.1 - - [14/Dec/2008:23:16:32 +0900] "OPTIONS /svnsync/repo01 HTTP/1.1" 401 401
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:32 +0900] "OPTIONS /svnsync/repo01 HTTP/1.1" 200 -
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:32 +0900] "PROPFIND /svnsync/repo01 HTTP/1.1" 207 659
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:32 +0900] "PROPFIND /svnsync/repo01/!svn/vcc/default HTTP/1.1" 207 410
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:32 +0900] "PROPFIND /svnsync/repo01/!svn/bln/6 HTTP/1.1" 207 461
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:32 +0900] "PROPFIND /svnsync/repo01 HTTP/1.1" 207 659
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:32 +0900] "PROPFIND /svnsync/repo01/!svn/vcc/default HTTP/1.1" 207 1312
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:32 +0900] "PROPFIND /svnsync/repo01 HTTP/1.1" 207 659
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:32 +0900] "PROPFIND /svnsync/repo01/!svn/vcc/default HTTP/1.1" 207 300
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:32 +0900] "PROPPATCH /svnsync/repo01/!svn/bln/0 HTTP/1.1" 207 435
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:32 +0900] "PROPFIND /svnsync/repo01 HTTP/1.1" 207 659
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:32 +0900] "PROPFIND /svnsync/repo01/!svn/vcc/default HTTP/1.1" 207 1442
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:32 +0900] "PROPFIND /svnsync/repo01 HTTP/1.1" 207 659
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:32 +0900] "PROPFIND /svnsync/repo01/!svn/vcc/default HTTP/1.1" 207 1442
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:32 +0900] "PROPFIND /svnsync/repo01 HTTP/1.1" 207 659
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:32 +0900] "PROPFIND /svnsync/repo01/!svn/vcc/default HTTP/1.1" 207 1442
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:32 +0900] "PROPFIND /svnsync/repo01 HTTP/1.1" 207 659
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:32 +0900] "PROPFIND /svnsync/repo01/!svn/vcc/default HTTP/1.1" 207 1442
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:32 +0900] "PROPFIND /svnsync/repo01 HTTP/1.1" 207 659
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:32 +0900] "PROPFIND /svnsync/repo01/!svn/vcc/default HTTP/1.1" 207 1442
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:33 +0900] "PROPFIND /svnsync/repo01 HTTP/1.1" 207 659
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:33 +0900] "PROPFIND /svnsync/repo01/!svn/vcc/default HTTP/1.1" 207 410
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:33 +0900] "PROPFIND /svnsync/repo01/!svn/bln/6 HTTP/1.1" 207 461
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:33 +0900] "PROPFIND /svnsync/repo01 HTTP/1.1" 207 659
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:33 +0900] "PROPFIND /svnsync/repo01/!svn/vcc/default HTTP/1.1" 207 300
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:33 +0900] "PROPPATCH /svnsync/repo01/!svn/bln/0 HTTP/1.1" 207 448
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:33 +0900] "OPTIONS /svnsync/repo01 HTTP/1.1" 200 194
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:33 +0900] "MKACTIVITY /svnsync/repo01/!svn/act/a52dca44-7e57-574e-ad16-1d7cb314f0c9 HTTP/1.1" 201 233
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:33 +0900] "PROPFIND /svnsync/repo01/!svn/vcc/default HTTP/1.1" 207 410
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:33 +0900] "CHECKOUT /svnsync/repo01/!svn/bln/6 HTTP/1.1" 201 247
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:33 +0900] "PROPPATCH /svnsync/repo01/!svn/wbl/a52dca44-7e57-574e-ad16-1d7cb314f0c9/6 HTTP/1.1" 207 466
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:33 +0900] "PROPFIND /svnsync/repo01 HTTP/1.1" 207 395
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:33 +0900] "CHECKOUT /svnsync/repo01/!svn/ver/6/test.txt HTTP/1.1" 201 254
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:33 +0900] "PUT /svnsync/repo01/!svn/wrk/a52dca44-7e57-574e-ad16-1d7cb314f0c9/test.txt HTTP/1.1" 204 -
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:33 +0900] "MERGE /svnsync/repo01 HTTP/1.1" 200 488
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:34 +0900] "DELETE /svnsync/repo01/!svn/act/a52dca44-7e57-574e-ad16-1d7cb314f0c9 HTTP/1.1" 204 -
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:34 +0900] "PROPFIND /svnsync/repo01 HTTP/1.1" 207 659
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:34 +0900] "PROPFIND /svnsync/repo01/!svn/vcc/default HTTP/1.1" 207 1228
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:34 +0900] "PROPFIND /svnsync/repo01 HTTP/1.1" 207 659
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:34 +0900] "PROPFIND /svnsync/repo01/!svn/vcc/default HTTP/1.1" 207 300
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:34 +0900] "PROPPATCH /svnsync/repo01/!svn/bln/7 HTTP/1.1" 207 432
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:34 +0900] "PROPFIND /svnsync/repo01 HTTP/1.1" 207 659
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:34 +0900] "PROPFIND /svnsync/repo01/!svn/vcc/default HTTP/1.1" 207 300
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:34 +0900] "PROPPATCH /svnsync/repo01/!svn/bln/7 HTTP/1.1" 207 430
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:34 +0900] "PROPFIND /svnsync/repo01 HTTP/1.1" 207 659
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:34 +0900] "PROPFIND /svnsync/repo01/!svn/vcc/default HTTP/1.1" 207 300
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:34 +0900] "PROPPATCH /svnsync/repo01/!svn/bln/0 HTTP/1.1" 207 446
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:34 +0900] "PROPFIND /svnsync/repo01 HTTP/1.1" 207 659
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:34 +0900] "PROPFIND /svnsync/repo01/!svn/vcc/default HTTP/1.1" 207 300
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:34 +0900] "PROPPATCH /svnsync/repo01/!svn/bln/0 HTTP/1.1" 207 448
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:34 +0900] "PROPFIND /svnsync/repo01 HTTP/1.1" 207 659
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:34 +0900] "PROPFIND /svnsync/repo01/!svn/vcc/default HTTP/1.1" 207 300
 127.0.0.1 - svnsyncuser [14/Dec/2008:23:16:34 +0900] "PROPPATCH /svnsync/repo01/!svn/bln/0 HTTP/1.1" 207 435
 127.0.0.1 - fujihara [14/Dec/2008:23:16:31 +0900] "MERGE /svn/repo01 HTTP/1.1" 200 724
 127.0.0.1 - fujihara [14/Dec/2008:23:16:35 +0900] "DELETE /svn/repo01/!svn/act/091ba693-9a6b-ed46-a57d-b3d4a5362a41 HTTP/1.1" 204 -


参考

Subversionの導入から運用まで、即戦力の一冊。最短距離で目的にたどり着ける、頼れる逆引きリファレンス!リポジドリ、ブランチ、タグなど運用のノウハウも解説... 続き
この本は、Subversionというバックアップのためのソフトについて説明したものです。Windowsの上で動きます。他の環境でも使えますが、入門書ということで... 続き
バージョン管理システム「Subversion」の開発者が執筆したSubversionの解説書。Subversion開発の中心的メンバーである3人の著者が技術的な... 続き
バージョン管理からプロジェクト管理へ。Subversionでコミットするだけ。Webで手軽に「プロジェクト管理」。インストールから運用、トラブル対策まで1冊で丸... 続き

コメントする


画像の中に見える文字を入力してください。

Mike Cohn (著), マイク コーン (著), 安井 力 (翻訳), 角谷 信太郎 (翻訳)
採用した現在のタイトルは、見積りや計画づくりといったプロセスを、アジャイルに進めなければならないと謳っているのだ。見積りと計画づくりがアジャイルでないのに、プロジェクトがアジャイルであるということはありえない。

メアリー・ポッペンディーク (著), トム・ポッペンディーク (著), 高嶋 優子 (翻訳), 天野 勝 (翻訳), 平鍋 健児 (翻訳) 「トヨタ生産方式」を源流にする「リーン開発」をソフトウエア開発に取り入れるための具体的方法を紹介した本です。製造分野から始まったリーン活動は、その原則を理解しないままプラクティスだけを開発分野に適用しようとしても、行き詰るか失敗に終わってしまいます。本書は、リーンの7大原則を「価値」「ムダ」「スピード」「人」「知識」「品質」「パートナー」に整理し、ソフト開発現場にどうしたら効果的に適用できるかを、多くの実例を交えながら具体的に説明します。

著者:Yugui 税込 2,310 円
本書は、他言語でのプログラミング経験を持つ人を対象に、Rubyの特徴、Rubyならではの方法や慣習について解説します。これはRubyの資料を読んで実践的な学習を進めていくために必要な前提知識です。本書はRubyの基礎的な部分とメタクラスやブロック構文のような独自の概念、それらにまつわる文化を説明し、Ruby特有の考え方を知ってもらうことを目的としています。

本書は、Railsの入門からリファレンスまでをわかりやすく解説した書籍です。第1部と第2部では、Railsの背景にある概念について説明し、あっという間に簡単なオンラインストアを開発してみせます。

著者:James Shore, Shane Warden アジャイル開発は人のなせる技である。アジャイル開発を極めるためには、その時々で無数の可能性を評価して最善の方策を選択することを学ぶ必要がある。本書は、あなたがアジャイル開発の「道」を極める手助けをしたい。

daipresents!! ҂̑蕨

tWn{github tWn{Google Code