在Snow Leopard上自动启动svnserve

我将Subversion安装到运行Snow Leopard的iMac上,但却无法让svnserve自动启动。 据我了解(我还是相当绿色的OSX),最好的方法是利用launchd。 为此,我在/ Library / LaunchDaemons文件夹中创build了以下.plist文件。 如果我使用launchctl来执行这个文件,svnserve像预期的那样启动,但是当系统启动或者login时它不会自动启动。

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Disabled</key> <false/> <key>Label</key> <string>org.tigris.subversion.svnserve</string> <key>UserName</key> <string>Dave</string> <key>ProgramArguments</key> <array> <string>/opt/subversion/bin/svnserve</string> <string>--inetd</string> <string>--root=/Users/Shared/SVNrep</string> </array> <key>ServiceDescription</key> <string>Subversion Standalone Server</string> <key>Sockets</key> <dict> <key>Listeners</key> <array> <dict> <key>SockFamily</key> <string>IPv4</string> <key>SockServiceName</key> <string>svn</string> <key>SockType</key> <string>stream</string> </dict> <dict> <key>SockFamily</key> <string>IPv6</string> <key>SockServiceName</key> <string>svn</string> <key>SockType</key> <string>stream</string> </dict> </array> </dict> <key>inetdCompatibility</key> <dict> <key>Wait</key> <false/> </dict> </dict> </plist> 

如果任何人在这里可以提供任何build议,以如何得到这个工作,我真的很感激。

尝试添加此密钥

 <key>RunAtLoad</key> <true/> 

(与“禁用”,“标签”…键相同的“级别”)

我还没有在inetdCompatibility模式下创build任何launchd plists,但我发现在守护进程模式下运行的程序w / KeepAliveNetworkState设置为true工作得很好。 在守护进程模式下运行时必须使用NetworkState ,因为launchd根本不依赖,所以守护进程几乎总是在networking启动之前启动。

所以,我可能会尝试/Library/LaunchDaemons/org.tigris.subversion.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>org.tigris.subversion.svnserve</string> <key>ProgramArguments</key> <array> <string>/opt/subversion/bin/svnserve</string> <string>-d</string> <string>--root=/Users/Shared/SVNrep</string> </array> <key>RunAtLoad</key> <true/> <key>KeepAlive</key> <dict> <key>NetworkState</key> <true/> </dict> </dict> </plist> 

我find了几个选项。

首先, http: //www.kashum.com/blog/1217783696描述了使用plist方法,但它似乎在xml中指定了比您使用的更多的选项。

其次, http://www.scottboms.com/2007/03/launchsvnserveatstartup/描述了使用一个预先构build的工作plist文件放入LaunchDaemons文件夹,修改指定的path,然后运&#x884C;

 sudo launchctl load /Library/LaunchDaemons/org.tigris.Subversion.plist 

并validation它正在使用

 sudo launchctl list 

(或者,你知道,试图使用svn …)