Tortoise CVS - запретить пользователю фиксировать изменения в ветке?

Как запретить разработчику вносить изменения в конкретную ветку CVS?

Недавно другой разработчик передал код в основную ветку, оставив мне много откатов, чтобы выполнить ;-(. Как я могу предотвратить это?


1
2 808
3

Ответы:

Измените права доступа для этого пользователя для этой конкретной ветки только на чтение.

Честно говоря, понятия не имею. Но это может помочь: Патч расширения списка контроля доступа CVS


Возможно, это не так, но если вы используете CVSNT на сервере, вы можете просто использовать команду cvs chacl. Подробнее см. http://cvsnt.org/manual/html/chacl.html. Я давно не использовал TortoiseCVS, но полагаю, что для этого может быть даже опция графического интерфейса (ваш сервер все равно должен быть CVSNT, чтобы он действительно работал).

Обратите внимание, что TortoiseCVS - это просто графический интерфейс для клиента CVSNT. На ваши вопросы будет легче ответить, если вы предоставите некоторую информацию о своем сервере.


Этот подход работает для меня: -

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, но это предотвращает ошибки, а не намеренные попытки что-то сломать.