我在网上看过很多文章,但似乎没有一个回答。 我运行一个设置:
我有一个网站会运行中继文件的副本 该网站有一个与之关联的svn文件夹 我的Mac上有wampserver / mamp的本地测试环境,我的电脑上有乌龟svn
所以我有一个存储库的检查,我做了我的更改,当我有一个版本 - 我提交文件。
我希望自动更新提交到svn存储库 - 这个wiki解释了如何执行:http://wiki.dreamhost.com/Subversion#Automatic_Post-commit_Checkout
不幸的是,它充满了问题。一旦我有了我的cgi文件夹和我更新的post-commit hook sortedm,我就收到255的退出代码。在我将cgi和钩子转换为unix并重新上传后,我的退出代码为1。我再次更改了chmod,没有收到任何错误。 不幸的是,dreamhost不会将文件更新到我的实时网站。
我的钩子文件如下所示:
提交后:
#!/bin/bash
wget --http-user=username --http-passwd=password -qO - http://website.com/cgi-bin/pri/do_update.cgi
和我的do_update.cgi: #!/ bin / sh的
# disable filename globbing
set -f
echo "Content-type: text/plain; charset=iso-8859-1"
echo
echo /usr/bin/svn update /home/username/website.com
谷歌回复了很多页面有这个问题,除非我突然学习如何用C编译程序,否则我无法完成这项工作。
任何帮助表示感谢,并最终会在互联网上为其他人提供一个好的答案......
答案 0 :(得分:1)
我的cgi文件的权限是: -rwxr-xr-x (如果我没记错的话是755)
不要忘记/ cgi-bin /目录的.htaccess / .htpasswd设置:
这是/ cgi-bin /目录中的.htaccess:
AuthName "Dialog prompt"
AuthType Basic
AuthUserFile /home/username/x.com/cgi-bin/.htpasswd
Require valid-user
请记住,cgi-script文件中'wget'的用户名/密码不是你的svn用户/密码,而是你通过该.htaccess文件专门为cgi-bin目录设置的用户/密码(也不是你的DH用户名/通行证)。我不确定svn用户/通行证在哪里发挥作用,可能只在初始结账时(通过bash)。
昨晚我正在研究SO,以了解如何'重置'我的SVN(它停止运行post-commit钩子,但没有报告任何错误)。要解决此问题,我必须通过bash登录DH,然后手动运行svn up
。在我的X.com站点目录中运行该命令后,SVN最终报告了一个错误('文件已经存在',并且svn没有覆盖它)。为了解决这个问题,我只需将更新命令重新执行到:svn up --force
。哇哇!,我的svn在我的网页目录中运行了一个完整的更新,最后我的最新文件在我的网络服务器上。呼!
如果我没记错的话(让这个post-commit-hook正常工作了几个月),我不得不通过bash在我的web目录中初步进行svn checkout
。初始结账完成后,挂钩svn update
正常工作。 (仅供参考,我使用乌龟进行所有常规提交)
祝所有试图在DH上运行post-commit-hooks的人好运。它可能很难设置,但最终,完全值得!
: - P
答案 1 :(得分:0)
这是我做的,它不是在linux机器上,但它似乎对我来说只是在提交后直接调用svn。如果你有一个大的出口,它会延迟你的签到一点,但是非常简单。 Linux机器应该非常相似。
钩子:
svn.exe export https://myhostname/svn/project/trunk %WEBSITEDIR%\httpdocs\store --quiet --non-interactive --force --username user --password pass