I maintain the computers and write software to control experiments and collect data at the research lab where I work. I run a subversion server (installed with brew) on the OS X machine at my desk. This lets me make software changes at any lab computer and keep all the stations in sync. The subversion server on my machine has been set up and running in /Library/LaunchDaemons for some years, originally under 10.5 on a G5 PowerMac and eventually transferred over to my current Intel iMac. I updated to Yosemite and did a brew upgrade
and now svnserve no longer responds to clients. Here's my current org.apache.subversion.svnserve.plist file from /Library/LaunchDaemons:
<?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>KeepAlive</key>
<true/>
<key>StandardErrorPath</key>
<string>/Users/Shared/subversion/svnserve_err.log</string>
<key>Umask</key>
<integer>2</integer>
<key>UserName</key>
<string>steve</string>
<key>GroupName</key>
<string>everyone</string>
<key>Label</key>
<string>org.apache.subversion.svnserve</string>
<key>RunAtLoad</key>
<true/>
<key>Program</key>
<string>/usr/local/bin/svnserve</string>
<key>ProgramArguments</key>
<array>
<string>svnserve</string>
<string>--inetd</string>
<string>--root=/Users/Shared/subversion</string>
<string>--log-file=/Users/Shared/subversion/svn.log</string>
</array>
<key>ServiceDescription</key>
<string>SVN Version Control System</string>
<key>Sockets</key>
<dict>
<key>Listeners</key>
<array>
<dict>
<key>Bonjour</key>
<true/>
<key>SockServiceName</key>
<string>svn</string>
</dict>
</array>
</dict>
<key>inetdCompatibility</key>
<dict>
<key>Wait</key>
<false/>
</dict>
</dict>
</plist>
It seems to be running at startup:
/Library/LaunchDaemons 502 $ sudo launchctl list | grep svnserve
82245 0 org.apache.subversion.svnserve
If I run an svn command from a client (including the machine running svnserve) that requires a response from the server, it hangs. If I do sudo launchctl unload org.apache.subversion.svnserve.plist
while the client is hung, the client command fails with:
svn: E000054: Unable to connect to a repository at URL 'svn://steveimac.local/igor/trunk'
svn: E000054: Can't read from connection: Connection reset by peer
So it does seem like there's some attempt at communication. If I do sudo launchctl unload org.apache.subversion.svnserve.plist
and try running an svn client command I get Can't connect to host 'steveimac.local': Connection refused
as expected.
Firewall is turned off in the machine's Security & Privacy preferences
The svn.log
and svnserve_err.log
files are both empty.
I added the StandardOutPath
key to the plist. The stdout file was filled with many copies of ( success ( 2 2 ( ) ( edit-pipeline svndiff1 absent-entries commit-revprops depth log-revprops atomic-revprops partial-replay inherited-props ephemeral-txnprops file-revs-reverse ) ) )
. Over a megabyte worth after thirty seconds or so. I don't know if that's normal.
svnserve version:
/Library/LaunchDaemons 503 $ /usr/local/bin/svnserve --version
svnserve, version 1.8.13 (r1667537)
compiled Jun 5 2015, 19:21:21 on x86_64-apple-darwin14.3.0
Copyright (C) 2014 The Apache Software Foundation.
This software consists of contributions made by many people;
see the NOTICE file for more information.
Subversion is open source software, see http://subversion.apache.org/
The following repository back-end (FS) modules are available:
* fs_fs : Module for working with a plain file (FSFS) repository.
Cyrus SASL authentication is available.
I'm not sure what to do next to try to troubleshoot.
Answers to questions in comments:
Permissions look ok:
/Users/Shared/subversion 495 $ ls -l ig*
igor:
total 16
-rw-r--r-- 1 steve wheel 229 Dec 8 2008 README.txt
drwxr-xr-x 5 steve wheel 170 Dec 8 2008 conf
drwxr-xr-x 2 steve wheel 68 Dec 8 2008 dav
drwxr-xr-x 12 steve wheel 408 Jul 15 10:33 db
-r--r--r-- 1 steve wheel 2 Dec 8 2008 format
drwxr-xr-x 11 steve wheel 374 Dec 8 2008 hooks
drwxr-xr-x 4 steve wheel 136 Dec 8 2008 locks
igor-mike:
total 16
-rw-r--r-- 1 steve wheel 229 Jan 25 2011 README.txt
drwxr-xr-x 5 steve wheel 170 Jan 25 2011 conf
drwxr-xr-x 16 steve wheel 544 Oct 2 2013 db
-r--r--r-- 1 steve wheel 2 Jan 25 2011 format
drwxr-xr-x 11 steve wheel 374 Jan 25 2011 hooks
drwxr-xr-x 4 steve wheel 136 Jan 25 2011 locks
igorniscope:
total 16
-rw-r--r-- 1 steve wheel 229 Aug 16 2013 README.txt
drwxr-xr-x 5 steve wheel 170 Aug 16 2013 conf
drwxr-xr-x 16 steve wheel 544 Sep 13 2013 db
-r--r--r-- 1 steve wheel 2 Aug 16 2013 format
drwxr-xr-x 11 steve wheel 374 Aug 16 2013 hooks
drwxr-xr-x 4 steve wheel 136 Aug 16 2013 locks
sudo launchctl print-cache | grep svn
returns nothing.
I'm not sure how to use launchctl plist
in this situation. It wants a Mach-O as an argument.
Using localhost
instead of steveimac.local
displays the same symptoms.
Accessing through the file
protocol on the host machine works fine:
~/Documents/deleteme 491 $ svn co file:///Users/Shared/subversion/igor/trunk igor
A igor/AcousticControl.ipf
...
A igor/AmplitudeSweep.ipf
A igor/PowerMonitor.ipf
I tried svn info svn://steveimac.local
and svn info svn://localhost
which shouldn't be accessing any specific repository and it also hung. So it appears to be a communication issue, not a repository issue. Port 3690 seems to be open. With the daemon loaded, I tried telnet localhost 3690
and was able to connect. With the daemon unloaded, telnet localhost 3690
returned Connection refused
.