2011-03 / 2011-03-08

前のエントリ: SQLiteのデータベースファイルをSDカードに保存 [Android]
次のエントリ: CIFSのsvnリポジトリラッパ(追記) [cygwin]

CIFSのsvnリポジトリラッパ
2011-03-08-1 / カテゴリ: [svn][Apache][cygwin] / [permlink]

某所のsvnリポジトリがCIFS(Windowsファイルサーバ)にしかなく、どうしても手元のeclipse(subclipse)からチェックアウトできなかったので、ローカルのApacheでsvnサーバを立ててラッパとして動作させた。

windows用のApacheバイナリだと、UNC/ネットワークドライブともに(ファイルが見えなかったりログオン不可と出力されたりで)どうしてもうまくいかなかったので、cygwinのApache+svnで構築。
入れるパッケージは
apache2
subversion
subversion-apache2
あたり。

とりあえずdav設定は[2008-02-22-1]の流れで特に問題なし。
デフォルトでDigest認証設定になってるので、Basicに変えるなりなんなりと。
設定ファイルは /etc/apache2/extra/httpd-dav.conf
--- original/extra/httpd-dav.conf	2007-09-17 06:10:55.001000000 +0900
+++ extra/httpd-dav.conf	2011-03-08 13:27:22.246250000 +0900
@@ -16,5 +16,5 @@
 
-Alias /uploads "/usr/uploads"
+Alias /repos "/var/repos"
 
-<Directory "/usr/uploads">
+<Directory "/var/repos">
     Dav On
@@ -24,3 +24,3 @@
 
-    AuthType Digest
+    AuthType Basic
     AuthName DAV-upload
@@ -28,3 +28,3 @@
     #   htdigest -c "/usr/user.passwd" DAV-upload admin
-    AuthUserFile "/usr/user.passwd"
+    AuthUserFile "/etc/apache2/user/htpasswd"
 
@@ -32,5 +32,6 @@
     # to the admin user.
-    <LimitExcept GET OPTIONS>
-        require user admin
-    </LimitExcept>
+    #<LimitExcept GET OPTIONS>
+    #    require user admin
+    #</LimitExcept>
+    require valid-user
 </Directory>
あと、標準だとこのファイルがincludeされないのでhttpd.confにinclude追加する。(下記ラスト部分)
--- httpd.conf.default	2011-03-08 11:44:39.731750000 +0900
+++ httpd.conf	2011-03-08 12:47:10.558750000 +0900
@@ -39,3 +39,3 @@
 #Listen 12.34.56.78:80
-Listen 80
+Listen 8080
 
@@ -110,2 +110,6 @@
 
+# svn
+LoadModule dav_svn_module lib/apache2/mod_dav_svn.so
+Include /etc/apache2/extra/httpd-svn.conf
+
 <IfModule !mpm_netware_module>
@@ -149,3 +153,3 @@
 #
-#ServerName www.example.com:80
+ServerName localhost
 
@@ -446,3 +450,3 @@
 # Distributed authoring and versioning (WebDAV)
-#Include /etc/apache2/extra/httpd-dav.conf
+Include /etc/apache2/extra/httpd-dav.conf

Subversion用の設定はテンプレが見当たらなかったので他の環境から持ってきた。
extra/httpd-svn.confを作って
<IfModule mod_dav_svn.c>
<Location /repos/foo>
	DAV	svn
	SVNPath "/cygdrive/c/work/repos"
</Location>

<Location /repos/testrep>
	DAV	svn
	SVNPath "/cygdrive/x/svn"
</Location>
</IfModule>
こんな感じ。(xはネットワークドライブ)
多バイト文字が入ったパスだと(UTF-8にしてても"Can't converet string from 'UTF-8' to native encoding"とか出力されて)うまくいかないけど…

まぁ、CIFSでSubversion使うなってことよ。

そういや、subclipseだとhostsを見ないようだ。http://localhost(:8080)だとアクセスできなかったけど、http://127.0.0.1(:8080)ならOK。
ググると file:/// も使えるような記述はあるんだけどなぁ…

[2011-03-28-1]追記。↑だとcommitできない。
Referrer (Inside): [2011-03-28-1]
前のエントリ: SQLiteのデータベースファイルをSDカードに保存 [Android]
次のエントリ: CIFSのsvnリポジトリラッパ(追記) [cygwin]

2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12

最終更新時間: 2013-05-02 16:12