我在我的服务器上设置了一个SVN repo,并且有提交后的问题。我在我的iMac上使用SmartSVN作为我的客户端。我从SmartSVN通过ssh+svn连接。我能够成功地连接到SVN并对其进行更改,但是在我从SVN客户端提交后,提交后脚本就不起作用了。
我创建了一个名为post-commit.sh的提交后shell脚本,并将其放在钩子目录中,认为这就是让它正常工作所需做的全部工作。基本上,该脚本所做的是将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手册和互联网上的修复程序,但没有太多成功。
一种建议是创建一个日志文件,以查看在调用脚本时导致的任何错误。因此,现在我的提交后脚本调用另一个包含上述命令的文件,并将命令行返回输出到一个名为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 .sh的末尾有一个*,当我在钩子目录中查找文件时,它被列为post-commit.sh.sh*。
请,在这方面的任何帮助将非常感谢。
发布于 2012-04-06 07:19:08
我发现这个问题是在svn论坛上,同时看了另一个人在这里的帖子http://www.svnforum.org/threads/40951-How-repository-hooks-works?highlight=post-commit。问题在于提交后的文件不能在其末尾附加.sh。它只需要命名为"post-commit“即可。这确实需要有您在第一行中编写的脚本类型的路径,Mensi在上面提到了这一点,但这不是脚本的问题。不管怎样,谢谢你的帮助。
发布于 2012-04-06 00:42:39
会不会是你在开头漏掉了一个#!/bin/sh?
https://stackoverflow.com/questions/10032531
复制相似问题