2009-05-19 9 views
3

Я установил репозиторий SVN с нуля, и я успешно пометил некоторые из своих выпусков, используя команду копирования SVN.Тэги и безопасность Subversion

Я использовал плагин SSPI auth для apache, поэтому наши разработчики просто поражают сервер своими учетными данными сети, и все работает красиво.

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

Я запер вниз/SVN/каталог с: Требуйте-группу «CORP \ CKAN0BlahBlah»

Это эффективно ограничивает новые разработчик в группе безопасности, чтобы доступ только для чтения, пока они не получают доступ через aAuthZ конфигурацию файл.

Теперь у меня есть несколько вопросов:

  1. Что такое правильный способ (кроме системы чести), чтобы предотвратить пользователям от совершали изменения в любой из «тегов» каталоги?

  2. Можно ли использовать SSPI пройти Члены групп к AuthZ, , а не список членов индивидуально в конфигурационном файле ?

ответ

3

Для Вопрос # 1, я разработал для этого:

@echo off 
SET SVNLOOK=C:\Program Files\CollabNet Subversion Server\svnlook.exe 
SET GREP=D:\SVN\Repo\hooks\grep.exe 
SET LOG=D:\SVN\Repo Logs.txt 

>>"%LOG%" echo ==== commit %1 %2 ==== 
>>"%LOG%" "%svnlook%" changed -t %2 %1 

("%svnlook%" changed -t %2 %1 | "%grep%" "^U.*/tags/") && (echo Cannot commit to tags.>&2 && exit 1) 
("%svnlook%" log -t %2 %1 | "%grep%" "[a-zA-Z0-9]") || (echo You must specify a comment.>&2 && exit 1) 

exit 0 

Схватил инструмент Grep из http://sourceforge.net/projects/unxutils


Для Вопрос # 2, ответ НЕТ, вы не можете проверьте группы безопасности AD в файле конфигурации AuthZ.

Спасибо за помощь, всем.

+0

Я уверен, вы могли бы использовать родной findstr вместо grep ... – RedFilter

+0

Спасибо, я посмотрю на это. –

+0

это классный сценарий Windows;) вопрос: в вашем скрипте я могу добавлять новые файлы к тегам. Знаете ли вы решение, чтобы избежать этого (я ищу такое решение)? –

6

1 - Вы можете использовать крюк предварительной фиксации для предотвращения фиксации, см. SVN pre-commit hook for avoiding changes to tags subdirectories.

Edit: Чтобы сделать это на Windows, попробуйте следующее:

Сохранить как файл с именем предварительно commit.bat в папке крючки вашего репо:

@echo off 
set REPOSITORY=%1 
echo %REPOSITORY% | find /I "tags" 
if errorlevel 1 goto done 
echo You tried to commit to %REPOSITORY% >&2 
echo Committing to tags is not allowed >&2 
exit 1 
:done 

Примечание, это предотвратит выполнение какого-либо пути репозитория, содержащего подстроку теги. Измените в соответствии с вашими потребностями.

+0

Есть ли способ сделать это на окнах? –

+2

Крючки находятся на стороне сервера, поэтому это можно сделать с помощью скомпилированного приложения, сценария оболочки, командного файла и т. Д., Который является родным для платформы хоста. – crashmstr

+0

Итак, я начал искать скрипт pre-commit, и почти все они вызывают скрипт Perl. Я не понимаю, могу ли я получить разрешение на установку perl на этом сервере, так что вы знаете о чистой версии .bat? –

2

Нет «правильного» способа. Теги - это соглашение, и разработчики должны учиться и следовать им. Запрет на то, что отказоустойчивость может быть реализована с использованием крючков Subversion. См. Страницу this для хорошего учебника.

1

Мне кажется, что это вопрос образования и процесса. Если ваши разработчики понимают цель ваших тегов SVN, кажется, гораздо менее вероятно, что у вас будут люди (намеренно) совершать фиксации тега. То, что я считаю необходимым для эффективного обмена этими процессами, - это современная письменная документация. Моя команда использует вики для хранения документации о наших процессах (в частности, мы используем MediaWiki). Вики-подход, похоже, делает вещи намного более доступными и легче обновляется, чем что-то вроде хранения версий Microsoft Office в sharepoint.

+0

Я один из разработчиков, и на самом деле я бы предпочел, чтобы это реализовано как жесткое правило. –

+0

Справедливо. Могу ли я спросить, почему? Очевидно, что случаются несчастные случаи, и это один случай использования, когда правило жестких и быстрых полезно. Именно поэтому вы этого хотите? –

+0

Да. И могут быть некоторые из моих сверстников, которых я не верю, чтобы понять политику. –

0

Как насчет использования файла svn-auth для определения этого? это будет выглядеть так:

[groups] 
ADMINS=<your ID> 
<rest of groups>=<all other IDs> 

[/] 
* = r 
<rest of groups> = rw 
@ADMINS = rw 

[/tags] 
<rest of groups> = r 

Это позволит админы доступ на чтение и запись в каталог тегов, но никто другой. Я не знаю плагин SSPI auth, поэтому, возможно, мой предоставленный пример не работает в вашем контексте.

 Смежные вопросы

  • Нет связанных вопросов^_^