Mac OS X Leopard 配置 svnserve 自动启动

December 06, 2008 · 51 comments

首先,下载并解压最新版的Subversion源文件。


然后,覆盖安装系统自带的1.4.x版本的Subversion
% cd subversion-1.x.x
#运行autogen检测依赖是否缺失
% ./autogen.sh
#设置安装路径,覆盖系统自带的旧版本
% ./configure --prefix=/usr
% sudo make
% sudo make install

安装完成后查看安装是否成功
% which svn
% svn --version

配置svnserve随系统启动
自从Mac OS X 10.4 Tiger开始,Apple引入了全新的启动程序launchd来统一取代传统的UNIX启动程序。
以Daemon(守护进程)方式启动svnserve
因此需要在/Library/LaunchDaemons目录下编写一个plist文件

% cd /Library/LaunchDaemons
% sodo vim com.svn.svnserve.plist

文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.svn.svnserve</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/svnserve</string>
<string>--daemon</string>
<string>--root=/repository/</string>
</array>

<key>RunAtLoad</key>
<true/>
</dict>
</plist>


装载这个启动项目,下次启动就会有效
% sudo launchctl load com.svn.svnserve.plist

也可以手动启动,以Label定义的名字启动
% sudo launchctl start com.svn.svnserve

svnserve还可以使用inetd守护进程来代理启动和访问
这样对于不频繁的操作更为节省系统资源

文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.svn.svnserve</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/svnserve</string>
<string>--inetd</string>
<string>--root=/repository/</string>
</array>
<key>inetdCompatibility</key>
<dict>
<key>Wait</key>
<false/>
</dict>
<key>Sockets</key>
<dict>
<key>Listeners</key>
<dict>
<key>SockServiceName</key>
<string>svn</string>
</dict>
</dict>

<!--<key>WorkingDirectory</key>
<string>/usr/bin</string>-->
</dict>
</plist>


编写plist文件需要注意:
  • 被执行的程序尽量使用全路径,否则的话需要指定WorkingDirectory选项
    不使用全路径而造成招不到svnserve时,svn checkout 执行后会产生如下错误

    svn 畸形的网络数据
    svn: Malformed network data


About this blog

Site Sponsors