Автоправка в Subversion при сохранении изменений

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

Аватара пользователя
savigm
Сообщения: 127
ОС: openSUSE

Автоправка в Subversion при сохранении изменений

Сообщение savigm »

Добрый день.
Подскажите, есть ли в Subversion возможность при сохранении изменений svn commit (svn ci) - автоматически выполнять правку файлика в рабочей копии? Т.е. допустим я делаю commit и хочу чтобы при этом перед записью брался номер версии ревизии из репозитория и писался в файл в рабочей копии. Конечно для этого можно написать скрипт который будет из svn info выдирать номер версии, писать ее в файл и запускать svn ci. Но можно-ли это настроить в самом svn, чтобы тоже самое происходило по обычной команде svn ci, для конкретного репозитория?
Спасибо сказали:
Аватара пользователя
korisk
Сообщения: 205
ОС: Xubuntu

Re: Автоправка в Subversion при сохранении изменений

Сообщение korisk »

savigm писал(а):
27.06.2009 04:01
Добрый день.
Подскажите, есть ли в Subversion возможность при сохранении изменений svn commit (svn ci) - автоматически выполнять правку файлика в рабочей копии? Т.е. допустим я делаю commit и хочу чтобы при этом перед записью брался номер версии ревизии из репозитория и писался в файл в рабочей копии. Конечно для этого можно написать скрипт который будет из svn info выдирать номер версии, писать ее в файл и запускать svn ci. Но можно-ли это настроить в самом svn, чтобы тоже самое происходило по обычной команде svn ci, для конкретного репозитория?

Если я правильно понял:)
$svn help propset
..
svn:keywords - Keywords to be expanded. Valid keywords are:
URL, HeadURL - The URL for the head version of the object.
Author, LastChangedBy - The last person to modify the file.
Date, LastChangedDate - The date/time the object was last modified.
Rev, Revision, - The last revision the object changed.
LastChangedRevision
Id - A compressed summary of the previous 4 keywords.
...
т.е.
делаем
svn propset svn:keywords "Revision" file
а в самом файле file пишем:
$Revision$
И эта строка заменяется на номер последней ревизии файла.
Revision можно заменить на любую комбинацию из вышеперечисленного списка.

Удач.
Registerd Linux user #486684 at http://counter.li.org/
Спасибо сказали:
Аватара пользователя
savigm
Сообщения: 127
ОС: openSUSE

Re: Автоправка в Subversion при сохранении изменений

Сообщение savigm »

Увы я так и не добился результата: в файл буквально записалось $Revision: 2$, а мне надо просто 2. Да и хотелось-бы чтоб это все автоматом делалось при выполнении одной команды commit, возможно-ли это?
Спасибо сказали:
Аватара пользователя
KiWi
Бывший модератор
Сообщения: 2521
Статус: статус, статус, статус

Re: Автоправка в Subversion при сохранении изменений

Сообщение KiWi »

Можно -- в svn есть hooks, через которые вполне возможно это реализовать.
Спасибо сказали:
Аватара пользователя
savigm
Сообщения: 127
ОС: openSUSE

Re: Автоправка в Subversion при сохранении изменений

Сообщение savigm »

KiWi писал(а):
29.06.2009 16:16
Можно -- в svn есть hooks, через которые вполне возможно это реализовать.

Примного благодарен - это видимо то что надо, буду разбираться.
Спасибо сказали:
Аватара пользователя
savigm
Сообщения: 127
ОС: openSUSE

Re: Автоправка в Subversion при сохранении изменений

Сообщение savigm »

Скажите, а как мне в скрипте pre-commit достать корень диреторий рабочей копии, в которой собственно и вызывается svn ci?
Т.е. допустим есть рабочая копия в /tmp/checkout, в корне которой лежит файл version, в него я хочу перед commit'ом записывать версию последней ревизии репозитория. Номер версии берется с помощью svnlook youngest $REPOS, только вот как мне записать ее в файл version до commit'а?
Спасибо сказали:
Аватара пользователя
savigm
Сообщения: 127
ОС: openSUSE

Re: Автоправка в Subversion при сохранении изменений

Сообщение savigm »

Подскажите пожалуйста, по вопросу выше.
iУведомление от модератора Ленивая Бестолочь
апанье тем у нас запрещено, если ваш вопрос кому-нибудь интересен на него ответят.
Спасибо сказали:
Аватара пользователя
savigm
Сообщения: 127
ОС: openSUSE

Re: Автоправка в Subversion при сохранении изменений

Сообщение savigm »

Сформирую вопрос более точно:
есть репозиторий, в составе которого есть файл version.mk, в котором есть строчка SVNREVISION = <номер текущей ревизии>.
Нужно чтобы при svn commit'е, этот файл всегда соодержал текущую версию репозитория, т.е. перед транзакцией номер ревизии инкрементировался.
Использовать для коммита собственный bash-скрипт не хочется, хочется решить эту задачу средствами subversion, т.е. чтобы это делалось автоматом при svn ci.
Насколько я понял для этого нужно использовать start-commit hook или pre-commit hook. Чем они отличаются пока не понятно.
Также есть следующая проблема: как из хука получить доступ к файлу репозитория? Это надо до транзакции переписать version.mk в рабочей копии чтобы изменения пошли ва репозиторий? Тогда как можно получить доступ к рабочей копии из хука? Или это можно сделать по другому?
Спасибо сказали: