сценарий оболочки после коммита фиксации, который просто делает дату> /tmp/post-commit.log ничего не записывается в файл журнала

1272
Jason

Я установил сервер SVN с Apache 2 на Ubuntu 10

я создал post-commit.sh с двумя строками кода

хранилище / Крючки / post-commit.sh:

#!/bin/sh date > /tmp/post-commit.log 

в этот файл ничего не написано может кто нибудь помочь пожалуйста?

1

2 ответа на вопрос

1
Daniel Beck

От сюда :

название

post-commit - Уведомление об успешном коммите.

Описание

Хук post-commit запускается после фиксации транзакции и создания новой ревизии. Большинство людей используют этот хук для отправки описательных писем о коммите или для уведомления какого-либо другого инструмента (например, системы отслеживания проблем) о том, что коммит произошел. В некоторых конфигурациях этот хук также используется для запуска процессов резервного копирования.

Выходные данные и выходное значение, возвращаемые программой ловушек после фиксации, игнорируются.


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

название

pre-commit - Уведомление перед завершением коммита.

Описание

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

Если программа ловушки перед фиксацией возвращает ненулевое значение выхода, фиксация отменяется, транзакция фиксации удаляется, и все, что выводится на stderr, отправляется обратно клиенту.


Кроме того, убедитесь, что файл сценария является исполняемым, и используйте точное имя pre-commitили post-commit, т. Е. Без расширения имени файла!

@ Джейсон Ты сделал его исполняемым? `chmod + x репозиторий / hooks / post-commit.sh`? Кроме того, попробуйте удалить расширение имени файла .sh, я не уверен, работает ли оно с ними. Daniel Beck 13 лет назад 1
правильно пришлось удалить .sh Jason 13 лет назад 0
Цитата # 1: сам скрипт `post-commit` ничего не выводит; вывод, сделанный с помощью `date`, перенаправляется изнутри. grawity 13 лет назад 0
@grawity Он перенаправляет вручную в файл. Хотя `stdout` и` stderr`, вероятно, отбрасываются / перенаправляются, я не думаю, что этот вывод удален. В противном случае этим скриптам будет сложно что-либо делать. Daniel Beck 13 лет назад 0
1
Arcege

Попробуйте переименовать скрипт в repository/hooks/post-commit. Не должно быть расширения в имени файла. Прочитайте repository/hooks/post-commit.tmplфайл для получения дополнительной информации (в частности, первый абзац, в котором говорится:

Хук post-commit вызывается после коммита. Subversion запускает эту ловушку, вызывая программу (скрипт, исполняемый файл, двоичный файл и т. Д.) С именем ' post-commit '

Похожие вопросы