Метки:
книги [57] мысли [44] отдых [42] работа [38] стихи [29] программирование [28] тестирование [21] фото [15] Ангел [13] игры [13] Еще метки...
Даты:
2011-11-17 2011-08-18 2011-05-25 2011-05-17 2011-04-26 2011-03-02 2011-01-17 2011-01-12 2010-11-13 2010-11-04 2010-11-03 2010-10-29 2010-10-26 2010-10-19 2010-08-31 2010-08-25 2010-07-07 2010-05-05 2010-05-04 2010-04-15 Еще даты...
|
Записи на дату «2009-10-13»
2009-10-13 06:16:21
У нас на работе в репозитарии Subversion активно используются ветки, выделяются для функционала, для релизов, потом вроде прекращают свою жизнь, но удаляются совсем не сразу, так как удобно иногда заглядывать туда при необходимости. С другой стороны разработчики регулярно ошибаются с веткой для коммита и изменяют закрытую ветку. В общем, нужно было решение "отметить ветку закрытой для коммитов". В результате я написал pre-commit hook, который реагирует на property ветки и запрещает коммит если указано, что она только для чтения.
English keywords: svn, subversion, read-only, propertiy, svnlook, propget, branch.
@echo off
rem Pre-commit hook, checking READ-ONLY status of branch in SVN
rem Author: Andrey Pohilko apc@apc.kg
set PROPNAME=fininfor:readonly
rem Here's loop by changes in commit, but we'll take only first
for /F "tokens=1,2" %%B in ('svnlook changed %1 -t %2') do (
rem echo Change: %%B %%C
rem If the change is propchange then it's ok
rem Because we need a way to remove restricting property
if "%%B"=="_U" exit /B 0
rem Parse first 3 path components
for /F "tokens=1,2,3 delims=/" %%D in ("%%C") do (
rem echo Path components %%D %%E %%F
rem first check - 3rd level dir
for /F %%P in ('svnlook propget %1 %PROPNAME% /%%D/%%E/%%F') do (
rem echo Property value: %%P
if not ""=="%%P" (
echo Commits to read-only branch are restricted: %%P 1>&2
exit 1
)
)
rem second check - 2nd level dir
for /F %%P in ('svnlook propget %1 %PROPNAME% /%%D/%%E') do (
rem echo Property value: %%P
if not ""=="%%P" (
echo Commits to read-only branch are restricted: %%P 1>&2
exit 1
)
)
rem last check - 1st level dir
for /F %%P in ('svnlook propget %1 %PROPNAME% /%%D') do (
rem echo Property value: %%P
if not ""=="%%P" (
echo Commits to read-only branch are restricted: %%P 1>&2
exit 1
)
)
)
rem First change path is enough, exiting with success
exit /B 0
)
Комментариев: 0
|
Добавить комментарий
Вернуться на главную |