我的服务器上设置了 SVN 存储库,并且遇到提交后问题。我在 iMac 上使用 SmartSVN 作为客户端。我通过 SmartSVN 的 ssh+svn 连接。我能够成功连接到 SVN 并对其进行更改,但从 SVN 客户端提交后,我的提交后脚本无法运行。
我创建了名为的提交后 shell 脚本post-commit.sh
并将其放在 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 手册并通过互联网寻求修复,但没有取得太大成功。
一项建议是创建一个日志文件以查看调用脚本时引起的任何错误。所以现在我的提交后脚本调用另一个包含上述命令的文件,并将命令行返回到名为的文件svna.log
. The 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* 。
请您提供任何帮助,我们将不胜感激。