svn post- и pre-commit хуки не работают, когда subversion фиксируется

Понятия не имею, как это исправить. Я написал простой скрипт bash, который записывает текущую дату и время в файл и помещает его в ловушку post-commit и pre-commit. Когда я запускаю это локально, например. ./pre-commit ./post-commit это работает, но когда я фиксирую свой svn, ничего не происходит. Может я что-то упустил в конфигурации? Пожалуйста, помогите мне ... Вот сценарий, чтобы вы знали, о чем он:

filename="datefile"
echo "writing file ${filename}..."
echo "Commited..." > ${filename}
date | cut -d"," -f2 >> ${filename}
date | cut -d" " -f5 >> ${filename}
echo "Done!"

Спасибо за любую помощь.

пс. Это не проблема с перми, я уже дал правильные оба, файлы сценариев и дата-файл.

0
задан 30 December 2013 в 16:19

1 ответ

Во-первых, вам не хватает линии Шебанга; первая строка должна читаться как #!/usr/bin/env bash или #!/bin/bash

Во-вторых, вы делаете предположения о том, каким будет текущий рабочий каталог при запуске ловушки, поэтому, если ему удастся запустить скрипт, даже если он пропуская важную строку Шебанга, она, вероятно, работает, но записывает datefile в другой каталог, чем вы предполагали. Укажите абсолютный путь к файлу, в который вы хотите записать.

Наконец, ${filename} - плохая практика, вы всегда должны заключать в кавычки расширения переменных, чтобы избежать разбиения слов и расширения пути: "$filename". Кроме того, вместо выполнения date | cut ... просто скажите дату, чтобы выводить только те биты, которые вы ищете. Э.Г.

printf 'Commit happened at %s\n' "$(date "+%Y-%m-%d %H:%M:%S")" > "$filename"

В дополнение к этому, bash printf (начиная с 4.0) также может выводить строки даты.

printf 'Commit happened at %(%Y-%m-%d %H:%M:%S)T\n' -1 > "$filename"

man bash | less +/printf чтобы узнать больше о printf.

0
ответ дан 30 December 2013 в 16:19

Другие вопросы по тегам:

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