Ошибка слияния фиксации SVN при использовании ловушки после фиксации

Я читал некоторые другие подобные вопросы, которые люди задавали с хуком post-commit. Но не нашел того, который был бы достаточно близок к моим проблемам, чтобы дать ответ :(. У меня есть репозиторий SVN, который я могу проверить, и когда я делаю коммит, я пытаюсь подключить его, чтобы он автоматически обновлял веб-сайт папка.

В настоящее время мой скрипт после фиксации выглядит так:

#!/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

Когда я полностью удаляю скрипт после фиксации, все работает, как и ожидалось (за исключением того, что веб-сайт, конечно, не обновляется). Таким образом, похоже, проблема в том, что subversion включает этот скрипт после фиксации.

Любая помощь будет принята с благодарностью, так как я не уверен, куда обратиться дальше :(


person Danoweb    schedule 28.01.2014    source источник


Ответы (1)


Оказывается, мне нужно было выполнить скомпилированную программу в хуке после фиксации.

Моя скомпилированная программа - это "автоматическое обновление", в которой есть следующее:

#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 --- перенаправляет любой вывод для предотвращения помех)

Права доступа к файлам скомпилированной программы на C таковы:

-rwsr-sr-x   1 apache apache 4813 Jan 28 11:40 thecruisein_dev-autoupdate

Это решило проблему и позволило делать коммиты и автоматически отображать их в ожидаемой веб-папке.

person Danoweb    schedule 28.01.2014