SVN Post-commit импорт - PullRequest
       39

SVN Post-commit импорт

0 голосов
/ 12 сентября 2018

У меня есть набор хуков 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 хранится на сервере, а не на клиенте. Возможно, можно добавить этот файл в исходный коммит, но я никогда не видел, чтобы кто-нибудь объяснил, как.

1 Ответ

0 голосов
/ 14 сентября 2018

Трудно определить основную причину этого поведения, не глядя на код хука до и после фиксации, который вы запускаете. Тем не менее, кажется, что вы столкнулись с проблемами рекурсии, потому что:

...

Затем Post-Commit должен SVN-импортировать эти файлы в тот же хранилище и та же папка, в которой был сохранен исходный файл, как отслеживаемые .exp-файлы.

...

Я предполагаю, что ваш скрипт-хук запускает svn import или другую операцию, которая должна сделать новый коммит. Эта операция снова запустит ваши хуки коммита, в результате чего вы получите цикл.

Поэтому мой вопрос: есть ли способ заставить эту работу? Для нас, В лучшем случае SVN каким-то образом справится с этим после фиксация прошла успешно, но кажется, что запускается любой скрипт в Post-Commit заставляет SVN-клиента ждать завершения этих скриптов до полного завершения.

Каким SVN-клиентом пользуются ваши пользователи? Это TortoiseSVN? Они используют других клиентов?

Я спрашиваю о TortoiseSVN, потому что он поддерживает клиентские скрипты ловушек , и возможно, что выполнение этого экспорта / преобразования в *.exp формат будет лучше делать на сторона клиента.

Не стесняйтесь расширять свой вопрос с более подробной информацией - больше информации поможет лучше понять ваш случай и требования.

...