set
não faz o que você pensa: modifica os argumentos posicionais $1
, $2
, ... $@
, etc. Não atribui variáveis.
set REPO="$1"
set REV="$2"
deve ser:
REPO="$1"
REV="$2"
(etc)
Estou tentando escrever um hook de pós-commit do SVN e, estranhamente, estou ficando preso no que deveria ser a parte mais fácil.
O script:
#!/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 ""
No entanto, quando eu chamo isso, parece que não vejo os argumentos que eu passo para ele:
/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
Isso está em uma caixa do Solaris 10 SPARC.
Sou um pouco novato em um roteiro, mas isso não deve ser realmente fácil?
Não sei por que você tem todos os comandos set
, removê-los e ver se funciona?
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=""