2011-10-19 55 views
0

我们有一个基于Linux的web服务器(Media Temple),我们通过他们的DV托管解决方案托管多个域。我已成功为我们的项目之一创建SVN存储库,但现在我希望它能同步实际的web文件夹。无论是回购和站点文件是在同一台服务器上...路径如下:SVN update-commit需要钩子帮助

将svn的是在这里:/家庭/ SVN /库/ <网站名称>

活动网站文件这里:/ var/www/vhosts/<域名>/httpdocs/<子域>

我可以连接到回购没有问题。现场也适用。现在我只需要让它们同步。

我根据指南创建了以下更新文件,并正确更新了POST-COMMIT.tmpl,但仍然没有骰子。 http://www.frenssen.be/content/using-subversion-automatically-update-live-website

这里是我的更新程序代码:

#include <stddef.h> 
#include <stdlib.h> 
#include <unistd.h> 
int main(void) 
{ 
    execl("/usr/bin/svn", "svn", "update", 
     "/var/www/vhosts/<domain>/httpdocs/<subdomain>", 
     (const char *) NULL); 
    return(EXIT_FAILURE); 
} 

我叫在后COMMIT.tmpl文件的程序有以下几点:

#!/bin/sh 
/home/svn/repositories/autoupdate/autoupdate 

任何想法我我错过了?必须有一个更简单的方法来让文件同步?

回答

2

您需要将post-commit.tmpl重命名为post-commit - 即删除.tmpl后缀。请参阅“Implementing Repository Hooks” from Version Control with Subversion.(.tmpl文件的名称就是为了说明它们是示例,可用于构建自己的脚本的模板)。

另外,您引用的指南建议将挂钩的所有权更改为apache。他们实际上是指任何用户拥有您的存储库(这对于指南作者来说显然是apache)。

+0

我只是改名该文件并丢弃.tmpl - 重新启动守护程序 - 对存档中的文件进行了更改并将其提交,没有发生任何事情。 - 也进入/ home/avn/autoupdate文件夹并通过./autoupdate运行脚本。该脚本执行但活动服务器文件没有任何更改... – xXPhenom22Xx

+0

要尝试和解决可能的权限问题,我做了整个路径到活服务器chmod 777.这一次,当我去脚本并手动执行它,我得到以下内容: 跳过'/ var/www/vhosts//httpdocs/' – xXPhenom22Xx

+0

@ xXPhenom22Xx:这实际上是结帐吗?如果你进入该目录,并手动运行'svn',会发生什么? – derobert

0

没有真正的答案(还),但你能适应你的服务器上执行这些命令,以收集有关您的设置的一些信息:

REPO=/home/svn/repositories/XYZ 
WORK=/var/www/vhosts/FOO/httpdocs/BAR 

set -x 

ls -ld $REPO $REPO/hooks $REPO/hooks/post-commit* $REPO/db/revs 
head -2 $REPO/hooks/post-commit | hexdump -C 
svnlook youngest $REPO 

ls -ld $WORK $WORK/.svn $WORK/.svn/entries 
svn info $WORK 

请输出连接到你的问题。

编辑输出已被无格式粘贴到一系列评论中。这里是相关部分:

svn info $WORK 
+ svn info /var/www/vhosts/unionjobtracker.com/httpdocs/pdc30/ 
svn: '/var/www/vhosts/unionjobtracker.com/httpdocs/pdc30' is not a working copy 

ls -ld $WORK $WORK/.svn $WORK/.svn/entries 
+ ls --color=tty -ld /var/www/vhosts/unionjobtracker.com/httpdocs/pdc30/ /var/www/vhosts/unionjobtracker.com/httpdocs/pdc30//.svn /var/www/vhosts/unionjobtracker.com/httpdocs/pdc30//.svn/entries 

ls: /var/www/vhosts/unionjobtracker.com/httpdocs/pdc30//.svn: No such file or directory 
ls: /var/www/vhosts/unionjobtracker.com/httpdocs/pdc30//.svn/entries: No such file or directory 
drwxrwxrwx 8 root root 4096 Oct 19 13:15 /var/www/vhosts/unionjobtracker.com/httpdocs/pdc30/ 

这意味着,$ WORK不是SVN工作副本。在你的问题的链接解释了部分所需的步骤“第1步:检查出库到Web根”

网络树内
+0

这里edit_job.php 是我: [根@ myspiderdesign自动更新] #REPO =/home/svn/repositories/baportal/ [root @ myspiderdesign autoupdate]#WORK =/var/www/vhosts/unionjobtracker.com/httpdocs/pdc30/ [root @ myspiderdesign autoupdate]#set -x + + echo -ne'\ 033] 0; root @ myspiderdesign:/ home/svn/autoupdate' – xXPhenom22Xx

+0

[root @ myspiderdesign autoupdate]#ls -ld $ REPO $ REPO/hooks $ REPO/hooks/post-commit * $ REPO/db/revs + ls --color = tty -ld/home/svn/reposito ries/baportal/home/svn/repositories/baportal // hooks/home/svn/repositories/baportal // hooks/post-commit/home/svn/repositories/baportal // db/revs drwxr-xr-x 9 root root 4096 Oct 19 13:19/home/svn/repositories/baportal/ drwxr-sr-x 3 root root 4096 Oct 19 13:18/home/svn/repositories/baportal // db/revs drwxr-xr- x 2 root root 4096 Oct 19 14:41/home/svn/repositories/baportal // hooks-rwxr - r-- 1 apache apache 2098 – xXPhenom22Xx

+0

[root @ myspiderdesign autoupdate]#svn info $ WORK + svn info/var /www/vhosts/unionjobtracker.com/httpdocs/pdc30/ svn:'/var/www/vhosts/unionjobtracker.com/httpdocs/pdc30'不是工作副本 ++ echo -ne'\ 033] 0; root @myspiderdesign:/ home/svn/autoupdate' – xXPhenom22Xx

0
  1. WC是总是坏主意
  2. 当您导入网站回购,它不会将网站自动转换为WC
  3. 如果您仍然想忽略我的p.1,您必须1次执行svn co(先前清空???)TBT),以便为获得WC在它
  4. 比较正确的做法选址post-commit钩子(从我的POV)是从网站和svn出口HEAD删除所有旧的数据到站点路径
+0

我删除了网站文件夹,然后做了一个SVN Checkout,它以我想要的方式导入所有文件和文件夹。导入后仍然会加载实况网站,并且所有网站都显示在正面。 在对仓库中的文件进行更改并提交时,我没有看到任何立即更改,因此我去了自动更新脚本并手动运行它。得到如下: \t 的svn:无法打开文件“/var/www/vhosts/unionjobtracker.com/httpdocs/pdc30/.svn/lock”:权限被拒绝 – xXPhenom22Xx

+1

文件所有权或许可,效果显着。更新需要一组不同的文件的写权限(在.svn目录也是),但你不是万维网用户,我认为 –

+0

我必须添加“ - 用户名”,“用户名”,“ - 密码” ,“密码”,现在脚本更新没有问题。谢谢您的帮助。 – xXPhenom22Xx