Заголовок должен звучать странным, но я пытаюсь достигнуть следующего:
SVN repo местоположение:/home/flx/svn/flxdev SVN repo "flxdev" структура:
+ Project1
++ files
+ Project2
+ Project3
+ Project4
Я пытаюсь настроить рычаг постфиксации, который автоматически проверяет на другой конец, когда я делаю фиксацию.
Документ постфиксации явно перечисляет следующее:
# POST-COMMIT HOOK
#
# The post-commit hook is invoked after a commit. Subversion runs
# this hook by invoking a program (script, executable, binary, etc.)
# named 'post-commit' (for which this file is a template) with the
# following ordered arguments:
#
# [1] REPOS-PATH (the path to this repository)
# [2] REV (the number of the revision just committed)
Таким образом, я сделал следующую команду для тестирования:
REPOS="$1"
REV="$2"
echo "Updated project $REPOS to $REV"
Однако, когда я редактирую файлы в Project1, например, это производит "Обновленный проект/home/flx/svn/flxdev к 1 016"
Я хотел бы, чтобы это было: "Обновленный проект Project1 к 1 016"
Наличие этой переменной позволяет мне указывать, чтобы сделать различные действия на постфиксацию проекта. Как я могу указать параметр проекта?
Спасибо!
Dennis
Следующее могло бы сделать то, что Вы хотите:
#!/bin/bash
REPOS="$1"
REV="$2"
echo In revision $REV, the following projects were changed:
svnlook dirs-changed "$REPOS" --revision "$REV" \
| sed 's%/.*%%' \
| sort -u \
| while read PROJ ; do
echo "$PROJ"
done
Объяснение того, что продолжается, в случае, если Вы не слишком знакомы со сценариями оболочки:
svnlook
получить список каталогов, которые были измененыsed
обрубить первое"/
"и все после него - таким образом, у нас затем есть список названий проекта, возможно с дубликатами. sort -u
("вид, уникальный") для устранения дубликатовМожно заменить echo "$PROJ"
строка с тем, что Вы хотите сделать с названием проекта. Если несколько проектов были изменены в той же фиксации, независимо от того, что Вы помещаете, там будет выполнен однажды для каждого измененного проекта, с набором $PROJ соответственно.
Этот сценарий не покажет, были ли файлы добавлены к корню репозитория, но если каталоги были добавлены, они обнаружатся в списке измененных проектов. Если Вы хотите, чтобы корень был перечислен также, можно заменить следующей sed строкой, и это обнаружится как "/". Если Вы делаете это, осторожны, Вы не проверяете весь репозиторий случайно!
...
| sed '/^\/$/!s%/.*%%' \
...