Я обслуживаю компьютеры и пишу программное обеспечение для управления экспериментами и сбора данных в исследовательской лаборатории, где я работаю. Я запускаю сервер Subversion (установленный вместе с brew) на машине OS X на моем столе. Это позволяет мне вносить изменения в программное обеспечение на любом лабораторном компьютере и синхронизировать все станции. Сервер подрывной деятельности на моем компьютере был настроен и запущен в / Library / LaunchDaemons в течение нескольких лет, первоначально под 10.5 на G5 PowerMac и в конечном итоге перенесен на мой текущий Intel iMac. Я обновился до Йосемити и сделал brew upgrade
и теперь svnserve больше не отвечает клиентам. Вот мой текущий файл org.apache.subversion.svnserve.plist из / 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>
Вроде при запуске запускается:
/Library/LaunchDaemons 502 $ sudo launchctl list | grep svnserve
82245 0 org.apache.subversion.svnserve
Если я запускаю команду svn от клиента (включая машину, на которой запущена svnserve), требующей ответа от сервера, она зависает. Если я сделаю sudo launchctl unload org.apache.subversion.svnserve.plist
пока клиент завис, команда клиента завершается ошибкой:
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
Так что, похоже, есть какая-то попытка общения. Если я сделаю sudo launchctl unload org.apache.subversion.svnserve.plist
и попробуйте запустить команду svn client, я получаю Can't connect to host 'steveimac.local': Connection refused
как и ожидалось.
Брандмауэр отключен в настройках безопасности и конфиденциальности устройства.
В svn.log
и svnserve_err.log
файлы оба пусты.
Я добавил StandardOutPath
ключ к списку. Файл stdout был заполнен множеством копий ( success ( 2 2 ( ) ( edit-pipeline svndiff1 absent-entries commit-revprops depth log-revprops atomic-revprops partial-replay inherited-props ephemeral-txnprops file-revs-reverse ) ) )
. Более мегабайта стоит примерно через тридцать секунд. Не знаю, нормально ли это.
версия svnserve:
/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.
Я не знаю, что делать дальше, чтобы попытаться устранить неполадки.
Разрешения выглядят нормально:
/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
ничего не возвращает.
Я не уверен, как использовать launchctl plist
в этой ситуации. Он хочет использовать Mach-O в качестве аргумента.
С помощью localhost
вместо того steveimac.local
проявляет те же симптомы.
Доступ через file
протокол на хост-машине работает нормально:
~/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
и svn info svn://localhost
который не должен иметь доступа к какому-либо конкретному репозиторию, и он также завис. Таким образом, это проблема со связью, а не с репозиторием. Порт 3690 вроде открыт. С загруженным демоном я попробовал telnet localhost 3690
и смог подключиться. Когда демон выгружен, telnet localhost 3690
вернулся Connection refused
.