Dom*_*Dom 4 svn shell post-commit
我在我的服务器上设置了一个SVN repo并且有提交后问题.我在我的iMac上使用SmartSVN作为我的客户端.我通过SmartSVN的ssh + svn连接.我能够成功连接到SVN并对其进行更改,但是在我从SVN客户端提交后,我的提交后脚本无法正常工作.
我创建了我的post-commit 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)
Run Code Online (Sandbox Code Playgroud)
当我从命令行手动运行它并更新必要的文件时,它运行正常.现在由于某种原因,每当我从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
Run Code Online (Sandbox Code Playgroud)
其中ac_post_commit.sh具有上面的原始代码.再次,如果我手动调用它,所有响应都会根据需要转到文件,但如果我从SmartSVN提交我的工作,则日志文件实际上是空的.
仅供参考 - 出于某种原因,我的post-commit.sh *在它的末尾有一个,当我在hooks目录中找到文件时,它被列为post-commit.sh*.
对此,任何帮助将不胜感激.
我发现svn论坛上的问题,同时看着另一个人在这里发帖http://www.svnforum.org/threads/40951-How-repository-hooks-works?highlight=post-commit.问题在于提交后文件不能在其末尾附加.sh.它需要被命名为"post-commit".这确实需要具有您在第一行中编写的脚本类型的路径,这是Mensi上面提到的,但不是脚本的问题.还是要谢谢你的帮助.