2013-11-30 3 views
1

У меня проблема с моим связыванием SVN после фиксации. Сам крючок отлично работает.

Я добавил:

echo "REPOS: $REPOS Rev: $REV" >>/tmp/mylog.txt 

.. и когда я бегу его, используя оболочку, как WWW-данных все работает отлично и выход:

REPOS: /var/local/svn/svn_project Rev: 624 

Но когда SVN автоматически вызывается крюк, крюк выполняет и выход:

REPOS: Rev: 

в результате, что обновление, команда в мой файл с крюком также не работал.:/

У кого-то есть идея, где проблема может быть? Почему $ REPOS и $ REV не установлены?

ответ

1

Почему $REPOS и $REV не настроен?

Потому что вам нужно установить их в свой скрипт. См. this article:

Крючки вызываются с помощью упорядоченных аргументов.
Первый из них в каждом случае является $REPOS (путь к хранилищу), а затем второй аргумент отличается в каждом случае:

  • start-commit: $USER (пользователь пытается совершить)
  • pre-commit: $TXN-NAME (название транзакции, которая должна быть совершена. Это по умолчанию генерируется из номера текущей версии.)
  • post-commit: $REV (номер только что внесенной ревизии).

Хотя эти аргументы по умолчанию и стандартные имена для них, конечно, сценарий не будет знать имена аргументов, пока вы не установите их! Они передаются в виде упорядоченных аргументов (например, $1 и $2 в bash, например).
Рекомендуется установить соответствующие именованные переменные в начале сценария и, разумеется, перед тем, как вы вызовете какой-либо другой скрипт, чтобы избежать излишнего смущения. Так, например, с пост зафиксированной сценария в ш:

#!/bin/sh 

REPOS="$1" 
REV="$2" 

SCRIPT="/home/username/svn/repository/hooks/script.pl" 

"$SCRIPT" "$REPOS" "$REV" thirdarg || exit 1 
+0

Если вы сделали установить эти переменные, то вам нужно добавить «' 1' выход»в конце сценария, чтобы захватить и см. любое сообщение о выходе/ошибке, которое может помочь вам отладить захват: см. http://stackoverflow.com/a/18486074/6309. – VonC

Смежные вопросы