SVN update-commit Требуется помощь хука - PullRequest
0 голосов
/ 19 октября 2011

У нас есть веб-сервер на базе Linux (Media Temple), где мы размещаем несколько доменов через их решение для хостинга DV. Я успешно создал SVN-репозиторий для одного из наших проектов, но теперь я хотел бы синхронизировать живую веб-папку при коммите. Файлы репо и сайта находятся на одном сервере ... Пути следующие:

Репозиторий SVN находится здесь: / home / svn / repositories / <имя сайта>

Файлы Live Site находятся здесь: / 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);
}

И я вызвал программу в файле POST-COMMIT.tmpl со следующим:

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

Есть идеи, что мне не хватает? Должен быть более простой способ синхронизировать файлы?

Ответы [ 3 ]

2 голосов
/ 19 октября 2011

Вам необходимо переименовать post-commit.tmpl в post-commit, то есть удалить суффикс .tmpl.См. «Реализация ловушек репозитория» из Контроль версий с Subversion. (Файлы .tmpl названы так, чтобы показать, что они являются примерами, шаблонами, на которых можно создавать свои собственные сценарии.)

Кроме того, в руководстве, на которое вы ссылались, предлагается сменить владельца ловушки на apache.На самом деле они имеют в виду, какой пользователь является владельцем вашего хранилища (что, по-видимому, является apache для автора).

0 голосов
/ 19 октября 2011
  1. WC внутри веб-дерева всегда плохая идея
  2. Когда вы импортировали сайт в репо, он не будет автоматически конвертирован в WC
  3. Если вы все еще хотите игнорировать мой п. 1, вы должны 1 раз выполнить местоположение сайта svn co (для опустошенной ранее ТБТ), чтобы получить в нем WC
  4. Более правильный способ для перехвата после фиксации (из моего POV) - удалить все старые данные с сайта и экспортировать заголовок svn в путь к сайту
0 голосов
/ 19 октября 2011

На самом деле ответа нет (пока), но вы можете адаптировать и выполнить эти команды на своем сервере, чтобы собрать некоторую информацию о вашей настройке:

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: извлеките хранилище в корневой каталог»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...