2011-03-02 101 views
0

我在网上查看了很多很多文章,但没有一篇似乎得出答案。 我运行一个设置,其中:Dreamhost颠覆后提交挂钩不能正常工作

我有一个网站,将运行的主干文件副本 这个网站有它 有关我wampserver/MAMP的本地测试环境在我的Mac,乌龟SVN的SVN文件夹在我的电脑上

所以我有一个存储库的结帐,我做了我的更改,当我有一个版本 - 我提交的文件。

我想就提交到svn库的自动更新 - 这个维基解释如何做到这一点:http://wiki.dreamhost.com/Subversion#Automatic_Post-commit_Checkout

不幸的是充满了问题。一旦我有我的CGI文件夹和我更新后的提交钩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

这是我做的,它不是一个Linux机器上,但它似乎对工作我只需在提交后直接调用svn即可。如果你有一个大的出口,它会延迟你的签入,但是非常简单。对于linux机器应该非常相似。

挂钩:

svn.exe export https://myhostname/svn/project/trunk %WEBSITEDIR%\httpdocs\store --quiet --non-interactive --force --username user --password pass 
1

喜欢自己的麻烦后,我终于得到了SVN post-commit钩子Dreamhost上工作。我的两个文件都与你的文件完全相同,除非它看起来像在你的CGI脚本中有一个额外的'echo'。

我的CGI文件的权限为:-rwxr-XR-X(这是755,如果我没记错的话)

不要忘记的.htaccess/.htpasswd则设置为你的/ cgi-bin目录/目录:

下面是我的/ CGI-bin /目录下的.htaccess的样子:

AuthName "Dialog prompt" 

AuthType Basic 

AuthUserFile /home/username/x.com/cgi-bin/.htpasswd 

Require valid-user 

请记住,用户名/密码为您的CGI脚本文件 'wget的' 是不是你的svn用户/ pass,而是用户/通过你设置f或者通过特定的cgi-bin目录。htaccess文件(也不是你的DH用户名/密码)。我不确定svn用户/密码的起始位置,也许只在最初的结帐时(通过bash)。

昨晚我正在研究SO,以了解如何“重置”我的SVN(它停止运行提交后的挂钩,但没有报告任何错误)。对于修复这个问题,我不得不通过bash登录到DH,然后手动运行一个svn up。在我的X.com站点目录中运行该命令后,SVN最终报告了一个错误('文件已经存在',并且svn没有覆盖它)。为了弥补这一点,我只是重新做我的更新命令:svn up --force。 Whammy !,我的svn在我的web目录中完成了一个完整的更新,最后我在我的web服务器上安装了最新的文件。呼!

如果我记得正确(这个post-commit-hook可以正常工作好几个月),我不得不通过bash将svn checkout加入我的web目录。一旦初始结账完成,挂钩的svn update工作正常。 (仅供参考,我用乌龟代表所有通常的提交)

祝大家好运,试图在DH上运行post-commit-hooks。它可能很难设置,但最终,完全值得!

:-P