3

Я на Ubuntu.

Хорошо, во-первых, я запускаю сценарий пост-фиксации. Мне нужен путь к svnnotify, чтобы запустить его. Путь, по которому я читаю туториал, называется /usr/local/bin/svnnotify но на моем компьютере ничего не находится в этом месте. Я все равно попробовал и получаю что-то вроде:

Warning post-commit hook failed: not found

поэтому я думаю, что мне нужно заменить /usr/local/bin/svnnotify на правильный путь для svnnotify. Ну, я делаю поиск (Places>Search for Files) для svnnotify и ничего не приходит.

Я знаю, что svnnotify установлен, потому что, если я открою командную строку и svnnotify она скажет мне, что я пропускаю обязательный аргумент пути.

Так как же его установить, если его нет в файловой системе?

Я действительно не знаю, как работает Linux, это очень ново для меня, поэтому я в замешательстве.

Есть что-то, чего мне не хватает?

Обновить

Я обновил файл, чтобы он выглядел так:

#!/bin/bash

REPOS="$1"
REV="$2"

/usr/bin/svnnotify --repos-path "$REPOS" --revision "$REV" --subject-cx --with-diff --handler HTML::ColorDiff --to myemail@gmail.com --from myemail@gmail.com

Я сделал это исполняемым.

Я запускаю это так:

myuser @ linux-server:/usr/local/svn/svn_repo/ перехватывает $ post-commit /usr/local/svn/svn_repo 9

Я получаю это в качестве вывода:

post-commit: команда не найдена

3 ответа3

2

В Ubuntu svnnotify поставляется в libsvn-notify-perl .

В терминале введите sudo apt-get install libsvn-notify-perl , который установит svnnotify , и попробуйте ваш скрипт снова.

1

Я запускаю это так:

myuser @ linux-server:/usr/local/svn/svn_repo/ перехватывает $ post-commit /usr/local/svn/svn_repo 9

Я получаю это в качестве вывода:

post-commit: команда не найдена

В Linux и других системах Unix оболочка не ищет программы в текущем рабочем каталоге по умолчанию (по соображениям безопасности), поэтому вы должны запустить этот скрипт следующим образом:

myuser@linux-server:/usr/local/svn/svn_repo/hooks$ ./post-commit /usr/local/svn/svn_repo 9
1

/usr/local - это традиционное расположение Linux/Unix для «вещей, которые вы установили самостоятельно». Если вы компилируете материал из исходного кода и устанавливаете его, в качестве основного каталога установки обычно используется /usr/local - исполняемые файлы находятся в /usr/local/bin , библиотеки в /usr/local/lib и т.д.

Если вы устанавливаете вещи из репозиториев вашего дистрибутива, эти файлы будут размещены где-то еще. /usr - это типичный системный каталог установки, поэтому, если ваш менеджер пакетов имеет или может получить нужный пакет, он будет установлен в /usr/bin , /usr/lib и т. д.

Поскольку вы не даете ссылку на учебник, я не знаю, что вы уже пробовали или как это может противоречить указаниям учебника. Но вы ищете программу svnnotify. Если вы уверены, что он уже установлен, попробуйте это:

  1. Выполните команду which, чтобы увидеть, знает ли ваша команда команду и где она ее находит:

    $ which svnnotify
    /usr/bin/svnnotify
    

    Если это не находит, в вашей переменной PATH нет команды svnnotify , но, возможно, в системе есть такая, которой нет в переменной PATH.

  2. Проверьте с locate svnnotify .

    $ locate svnnotify
    /usr/example/bin/svnnotify
    /usr/bin/svnnotify
    /usr/share/svnnotify/foo
    ...
    

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

    Если вы установили его совсем недавно, запустите sudo updatedb чтобы команда locate знала о последних добавлениях в файловую систему.

Если эти шаги не находят файл, убедитесь, что у вас установлен пакет, или установите его из вашего любимого менеджера пакетов (Synaptic, apt-get, aptitude и т.д.). В Ubuntu 10.04 svnnotify устанавливается в /usr/bin/svnnotify пакетом libsvn-notify-perl. Если вы используете Ubuntu svnnotify, вам нужно соответствующим образом изменить шаги учебника.


В руководстве показано, как создать сценарий после фиксации. Вам нужно изменить скрипт, чтобы он указывал на правильное svnnotify. Если ваша система имеет svnnotify в /usr/bin/svnnotify вместо /usr/local/bin/svnnotify, измените скрипт следующим образом:

#!/bin/sh

REPOS="$1"
REV="$2"

/usr/bin/svnnotify                          \
    --repos-path    "$REPOS"                \
    --revision      "$REV"                  \
    --subject-cx                            \
    --with-diff                             \
    --handler       HTML::ColorDiff         \
    --to            <your e-mail address>   \
    --from          <from e-mail address>

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .