SVN提交后钩子赢了';不要在提交后运行

SVN提交后钩子赢了';不要在提交后运行,svn,shell,post-commit,Svn,Shell,Post Commit,我在我的服务器上设置了SVN repo,并且存在提交后问题。我正在使用SmartSVN作为iMac上的客户端。我从SmartSVN通过ssh+svn连接。我能够成功连接到SVN并对其进行更改,但从SVN客户端提交后,我的提交后脚本无法工作 我创建了名为post-commit.sh的post-commit shell脚本,并将其放在hooks目录中,认为这是使其工作所需的全部操作。基本上,脚本所做的是将SVN签出到临时工作区,然后将必要的文件上载到服务器上的开发子域。我这样做是为了有一个测试环境来

我在我的服务器上设置了SVN repo,并且存在提交后问题。我正在使用SmartSVN作为iMac上的客户端。我从SmartSVN通过ssh+svn连接。我能够成功连接到SVN并对其进行更改,但从SVN客户端提交后,我的提交后脚本无法工作

我创建了名为
post-commit.sh
的post-commit shell脚本,并将其放在hooks目录中,认为这是使其工作所需的全部操作。基本上,脚本所做的是将SVN签出到临时工作区,然后将必要的文件上载到服务器上的开发子域。我这样做是为了有一个测试环境来测试用户对我的web应用程序所做的所有更改。文件最初看起来像这样

rm -rf /home/modionzc/tempworkspace/artistcondevspace/*
cd /home/modionzc/tempworkspace/artistcondevspace
svn checkout file:///home/modionzc/svnrepos/artistcondevrep
rm -rf /home/modionzc/public_html/devsuper/application/*
rm -rf /home/modionzc/public_html/devsuper/css/*
rm -rf /home/modionzc/public_html/devsuper/js/*
rm -rf /home/modionzc/public_html/devsuper/images/*
cp -r /home/modionzc/tempworkspace/artistcondevspace/artistcondevrep/trunk/application/* /home/modionzc/public_html/devsuper/application/
cp -r /home/modionzc/tempworkspace/artistcondevspace/artistcondevrep/trunk/css/* /home/modionzc/public_html/devsuper/css/
cp -r /home/modionzc/tempworkspace/artistcondevspace/artistcondevrep/trunk/js/* /home/modionzc/public_html/devsuper/js/
cp -r /home/modionzc/tempworkspace/artistcondevspace/artistcondevrep/trunk/images/* /home/modionzc/public_html/devsuper/images/
cp /home/modionzc/artistconconfig/appconfigfiles/config.php /home/modionzc/public_html/devsuper/application/config/config.php
cp /home/modionzc/artistconconfig/appconfigfiles/database.php /home/modionzc/public_html/devsuper/application/config/database.php
cd /home/modionzc/public_html/devsuper
chmod -R 755 *
chmod 644 $(find *.* ! -type d)
当我从命令行手动运行它并更新必要的文件时,它可以正常运行。现在,由于某些原因,无论何时我从SmartSVN提交,都不会调用它。这些更改是通过存储库进行的,如果我手动运行脚本,我可以看到更新实际上已经完成。我做了一些研究,发现可能是权限问题,或者我没有使用绝对路径。我在整个脚本中使用绝对路径。该文件的权限设置为755。我能想到的唯一一件事是,实际的SVN用户没有在conf文件中创建的用户的权限。我查阅了SVN手册并在互联网上查找修复方法,但没有取得多大成功

一个建议是创建一个日志文件,以查看调用脚本时导致的任何错误。现在,我的post-commit脚本调用另一个包含上述命令的文件,并将命令行返回到名为
svna.log
的文件。
post commit.sh
文件现在看起来像这样

cd /home/modionzc/hooktest/
/home/modionzc/hooktest/ac_post_commit.sh &> svna.log
其中ac_post_commit.sh具有上面的原始代码。 同样,如果我手动调用它,所有响应都会根据需要转到文件,但是如果我从SmartSVN提交我的工作,日志文件实际上是空的

仅供参考-出于某种原因,我的post-commit.sh在它的末尾有一个
*
,当我在hooks目录中查找文件时,它被列为post-commit.sh*


请,在此方面的任何帮助都将不胜感激。

可能是您缺少了一个#/bin/sh在开始时?

我在svn论坛上发现了这个问题,同时查看了另一个人在这里的帖子。问题在于提交后文件的末尾不能附加.sh。它需要命名为“post commit”。这确实需要有您在第一行中编写的脚本类型的路径,这是上面Mensi提到的,但不是脚本的问题。无论如何感谢您的帮助。

如果将
post-commit.sh
重命名为
post-commit
,会发生什么情况?您会在目录列表中的
post-commit.sh
末尾看到一个
*
,因为您的
ls
命令可能有类似
ls-CF
的别名。
-F
选项告诉
ls
*
标记可执行文件,用
/
标记目录等。它指示在linux上执行脚本时要使用的解释器,请参阅