SVN Commit Merge Ошибка при использовании пост-фиксации хука
Я читал некоторые другие подобные вопросы, которые люди задавали с помощью пост-фиксации хука. Но я не нашел тот, который достаточно близок к моим проблемам, чтобы он дал ответ:(. У меня есть SVN-репозиторий, который я могу проверить, и когда я фиксирую, я пытаюсь подключить его, чтобы он автоматически обновлял webroot папка.
В настоящее время мой скрипт пост-фиксации выглядит так:
#!/bin/sh
#REPOS="$1"
#REV="$2"
cd /var/www/thecruisein.com_dev/ && /usr/bin/svn update --username anon --password anon
Который имеет разрешения:
-rwxr--r--. 1 apache apache 122 Jan 28 10:00 post-commit
Однако, когда я пытаюсь зафиксировать свои изменения в файле через NetBeans, я получаю следующую ошибку:
org.apache.subversion.javahl.ClientException: E175002: Commit failed (details follow):
E175002: Processing MERGE request response failed: Element type "http:" must be followed by either attribute specifications, ">" or "/>". (/subversion/thecruisein_dev)
E175002: MERGE request failed on '/subversion/thecruisein_dev'
В настоящее время я отключил SELinux (без изменений в поведении:(), а разрешения для файла /usr/bin/svn:
-rwxr-xr-x. 1 apache apache 181500 Apr 11 2013 /usr/bin/svn
Когда я полностью удаляю скрипт пост-фиксации, все работает как положено (за исключением того, что webroot не обновляется, конечно). Так что, похоже, проблема с Subversion, у которой включен этот скрипт после фиксации.
Любая помощь будет принята с благодарностью, так как я не уверен, куда обратиться дальше:(
1 ответ
Оказывается, мне нужно было выполнить скомпилированную программу в хуке post-commit.
Моя скомпилированная программа "автообновление", которая имеет это:
#include <stddef.h>
#include <stdlib.h>
#include <unistd.h>
int main(void) {
execl("/usr/bin/svn", "svn", "update", "/var/www/thecruisein.com_dev/", "--username", "anon", "--password", "anon",
(const char *) NULL);
return(EXIT_FAILURE);
}
Мой скрипт после фиксации выглядит так:
#!/bin/sh
REPOS="$1"
REV="$2"
/var/svn/thecruisein_dev-autoupdate &>/dev/null
(&> / dev / null --- Это перенаправляет любой вывод для предотвращения помех)
Права доступа к файлу скомпилированной программы на Си таковы:
-rwsr-sr-x 1 apache apache 4813 Jan 28 11:40 thecruisein_dev-autoupdate
Это решило проблему и позволило сделать коммиты и автоматически отобразиться в ожидаемой папке webroot.