APC
личная страница

· Дата 2009-10-13 ·

Метки:
книги [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»



READ-ONLY ветки в SVN

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 | Добавить комментарий


Вернуться на главную


Netscape unfriendly HTML
© Сделал сам
 R   G   B