我们有一个基于Linux的Web服务器(Media Temple),我们通过他们的DV托管解决方案托管多个域。我已成功为其中一个项目创建了SVN存储库,但现在我希望它能在committ上同步实时Web文件夹。 repo和站点文件都在同一台服务器上......路径如下:
SVN Repo在这里:/ home / svn / repositories /<网站名称>
Live Site文件位于:/ var / www / vhosts /< domain> / httpdocs /< subdomain>
我可以毫无问题地连接回购。现场网站也有效。现在我只需要让它们同步。
我已根据指南创建了以下更新文件,并正确更新了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);
}
我在POST-COMMIT.tmpl文件中使用以下命令调用该程序:
#!/bin/sh
/home/svn/repositories/autoupdate/autoupdate
我缺少什么想法?必须有一种更简单的方法来让文件同步吗?
答案 0 :(得分:2)
您需要将post-commit.tmpl
重命名为post-commit
- 也就是说,删除.tmpl
后缀。请参阅“Implementing Repository Hooks” from Version Control with Subversion.(.tmpl文件的名称是这样的,以显示它们是示例,用于构建自己的脚本的模板。)
此外,您引用的指南建议将挂钩的所有权更改为apache。它们实际上意味着您的存储库中的任何用户所有者(显然是指南编写者的apache)。
答案 1 :(得分: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根目录”
部分中所需的步骤答案 2 :(得分:0)