Черепаха CVS - Предотвратить пользователю изменения в ветке?
Как мне запретить разработчику вносить изменения в определенную ветку в CVS?
Недавно один из разработчиков добавил код в основную ветку, и мне пришлось много откатываться назад ;-( Как я могу предотвратить это?
3 ответа
Может быть и не так, но если вы запускаете CVSNT на сервере, вы можете просто использовать cvs chacl
команда. См. http://cvsnt.org/manual/html/chacl.html для получения подробной информации. Я не использовал TortoiseCVS некоторое время, но я думаю, что там даже может быть опция GUI (ваш сервер все еще должен быть CVSNT, чтобы он действительно работал).
Обратите внимание, что TortoiseCVS - это просто графический интерфейс для клиента CVSNT. На ваши вопросы будет легче ответить, если вы предоставите некоторую информацию о вашем сервере.
Измените права доступа для этого пользователя для этой конкретной ветви только для чтения.
Честно говоря, я понятия не имею. Но это может помочь: исправление расширения списка контроля доступа CVS
Этот подход работает для меня:
1) Создайте сценарий оболочки, который проверяет ветку, зафиксированную по параметру. Я храню это в CVSROOT для удобства, но это может быть где угодно на сервере CVS.
#!/bin/bash
if [ -f CVS/Tag ]
then
TAG=`cat CVS/Tag`
else
TAG=THEAD
fi
if [ "$TAG" == "T$1" ]
then
echo Cannot commit to $1
exit 1
else
echo Commit ok
fi
exit 0
Затем измените файл commitinfo, чтобы запустить этот скрипт для определенной ветви:-
ALL /cvs/repos/CVSROOT/checkbranch.sh YOUR-BRANCH-NAME-HERE
Это приведет к запуску сценария для всех проверок. Это передаст имя ветви как параметр. Скрипт сравнивает параметр с веткой для проверяемого кода и выдает ошибку, если они совпадают. Если вы хотите заблокировать несколько веток, добавьте несколько строк в commitinfo.
Очевидно, что если разработчик действительно хочет что-то зафиксировать, он может взломать файл commitinfo, но это предотвращает ошибки, а не преднамеренные попытки что-то сломать.