Subversion: защита от записи для помеченных каталогов - PullRequest
6 голосов
/ 21 мая 2010

Я использую Subversion в качестве RCS. Всегда, когда новая версия моего проекта завершается, я создаю его тег (копию ствола). Кто-нибудь знает, как я могу защитить этот каталог с тегами от случайного изменения?

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

Есть ли лучшее решение?

Ответы [ 3 ]

5 голосов
/ 21 мая 2010

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

См. Этот связанный вопрос SO для примеров:
Хук предварительной фиксации SVN для избежания изменений в подкаталогах тегов

2 голосов
/ 21 мая 2010

Вы можете дать разрешение только на чтение для каталогов тегов, используя авторизацию на основе пути .

0 голосов
/ 15 января 2015

Если вы установите атрибут svn:needs-lock для всех файлов в теге, все файлы будут извлечены только для чтения, если пользователь явно не получит блокировку. Это (в большинстве случаев) предотвратит изменение файлов. Это не мешает кому-либо изменять флаг «только для чтения» или получать блокировку, но уменьшает вероятность случайного изменения.

Сама Subversion не может применить атрибут svn:needs-lock к папке, но, например, в клиенте TortoiseSVN (Windows), если вы пытаетесь это сделать, он применяет свойство ко всем файлам в папке и подпапках. Это не позволит вам сделать это из репозитория TortioseSVN, поэтому вы должны извлечь рабочую копию тега, изменить свойства, а затем зарегистрировать изменения свойств. Другие клиенты могут отличаться; Если вы используете собственный клиент командной строки Subversion, может понадобиться подходящий сценарий оболочки или аналогичный для перебора файлов и подпапок для массового применения атрибута. TortoiseSVN, по крайней мере, предупреждает вас, если вы пытаетесь что-либо изменить в папке Tags - но это всего лишь соглашение, а не принуждение.

Решение svn:needs-lock несколько слабое и легко обходится и не мешает новым файлам добавлять в папку тегов; более сильная альтернатива - создать фиктивного пользователя и получить блокировку для всего тега в этом имени пользователя. Это не позволит «реальным» пользователям регистрироваться, а для проверок рабочих копий будет установлен атрибут «только для чтения», как в svn:needs-lock - разница в том, что они не смогут получить блокировку, и изменение атрибута «только для чтения» рабочей копии также не позволит выполнить регистрацию.

...