Я пытаюсь написать хук для SVN после фиксации и, как ни странно, зацикливаюсь на том, что должно быть самой простой частью.
Сценарий:
#!/usr/bin/sh
set REPO="$1"
set REV="$2"
set SVNBIN="/opt/CollabNet_Subversion/bin/"
set SSHBIN="/usr/bin/ssh"
set HOST="staging.domain.net"
set timeout=30
set USERNAME="svn-usr"
set E_NO_CONNECT=2
set E_WRONG_PASS=3
set E_UNKOWN=25
set CHANGED=`"$SVNBIN"svnlook changed --revision $REV $REPOS`
echo "Here are changes: $CHANGED" >> /var/svn/repos/www/logs/testing
echo "Command: $0; Repo: $REPO; Rev: $REV; Total: $#" >> /var/svn/repos/www/logs/testing
set PROJECT ""
Но когда я его вызываю, похоже, что он не видит аргументов, которые я ему передаю:
/var/svn/repos/www/logs> sudo ../hooks/post-commit /var/svn/repos/www 33
svnlook: missing argument: --revision
Type 'svnlook help' for usage.
/var/svn/repos/www/logs> cat testing
Here are changes:
Command: ../hooks/post-commit; Repo: ; Rev: ; Total: 1
Это на коробке Solaris 10 SPARC.
Я немного новичок в сценариях, но разве это не должно быть легко ??
set
не делает то, что вы думаете: он изменяет позиционные аргументы $1
, $2
, ... $@
и т.д. Он не присваивает переменные.
set REPO="$1"
set REV="$2"
должно быть:
REPO="$1"
REV="$2"
(и т.д)
REPO="$1"
REV="$2"
SVNBIN="/opt/CollabNet_Subversion/bin/"
SSHBIN="/usr/bin/ssh"
HOST="staging.domain.net"
timeout=30
USERNAME="svn-usr"
E_NO_CONNECT=2
E_WRONG_PASS=3
E_UNKOWN=25
CHANGED=`"$SVNBIN"svnlook changed --revision $REV $REPOS`
.....
PROJECT=""
Я не уверен, зачем тебе все это set
команды, удалите их и посмотрите, работает ли?