У меня есть набор хуков Pre-и Post-Commit на стороне сервера, которые облегчили бы нам отслеживание изменений (VisualSVN на сервере Windows, если это имеет значение):
Pre-Commit экспортирует файлы пользователей на сервер, если они принадлежат к определенному типу (двоичные файлы), а затем использует программу для их экспорта в текстовый формат, который может просматривать любой текстовый редактор.
Затем Post-Commit должен SVN-импортировать эти файлы в тот же репозиторий и в ту же папку, в которой был сохранен исходный файл, как теперь отслеживаемые .exp-файлы.
Моя проблема заключается в пост-фиксации: кажется, что запуск импорта (позже замененного на 'svnmucc put') не работает, пока активна предыдущая фиксация (фиксация пользователей, по-видимому, не завершается полностью до завершения этого скрипта) ). Сценарий, таким образом, застревает здесь, без ошибок или деталей сообщения, и не завершает Post-Commit.
Это проблемная строка (если я удаляю Echo, фиксация останавливается):
Echo svnmucc put %LineName% %Address% -F comment%TXN%.txt --non-interactive --no-auth-cache>Command.txt
Это вывод в 'Command.txt', который успешно запускается, если инициируется впоследствии:
svnmucc put Test2.exp https://10.49.1.52/svn/PlcLibraries/TestFolder/Lib/Test2.exp -F comment79-6m.txt --non-interactive --no-auth-cache
Проблема здесь заключается в том, что папка заблокирована, или фиксации блокируются иным образом, до тех пор, пока исходная фиксация не будет завершена, что означает, что эта команда ожидает завершения исходной фиксации. Если бы я мог как-то заставить пост-фиксацию разблокировать папку или принудительно запустить svnmucc, это решило бы мою проблему.
Поэтому мой вопрос: есть ли способ заставить эту работу?
Для нас в лучшем случае было бы то, что SVN каким-то образом управляет этим после успешной фиксации, но при запуске любого сценария в Post-Commit заставляет SVN-клиента ждать завершения этих сценариев, прежде чем завершить его полностью.
Другая причина, по которой серверные сценарии фиксации были бы предпочтительнее, заключается в том, что вся операция экспорта в формат для чтения происходит на сервере. Поэтому файл .exp хранится на сервере, а не на клиенте. Возможно, можно добавить этот файл в исходный коммит, но я никогда не видел, чтобы кто-нибудь объяснил, как.