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
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.
/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.
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
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