Вы работаете над общим проектом и хотите быть уверены в том, что первое извлечение файлов из репозитария обновляет все содержимое «песочницы» с учетом изменений, внесенных другими пользователями.
В начале дня выполните из «песочницы» команду update с ключом -n (Not really):
Команда показывает, какие файлы различаются, и выводит информацию о состоянии каждого файла. Чтобы синхронизировать «песочницу» с репозитарием, выполните команду заново без ключа -n. Команда выполнит слияние (или попытается выполнить) двух наборов файлов.
Для получения расширенной информации выполните следующую команду:
$ cvs diff
Команда выводит построчную информацию об изменениях.
Регулярное выполнение команды update обеспечивает синхронизацию локальных рабочих копий с копиями из репозитария. Если вас раздражают изменения со стороны других пользователей (что является не недостатком CVS, а следствием плохого управления проектом), вы можете всегда сначала просмотреть их. Помните: когда в ходе редактирования файл достигает состояния, которое бы вам хотелось сохранить, занесите его в репозитарий. Не оставляйте его лежать в «песочнице» — система CVS существует как раз для того, чтобы хранить многие версии одного файла. Возможные состояния файла:
U — файл был успешно обновлен; А — файл был добавлен, по изменения не были закреплены; R — файл был удален, но изменения не были закреплены; М — файл в репозитарии отличался от копии в «песочнице», и изменения были успешно объединены; С — между копией в репозитарии и копией в «песочнице» существует конфликт, требующий вмешательства со стороны пользователя;
? — файл находится в рабочем каталоге, но отсутствует в репозитарии, и CVS не знает, что с ним делать. Обычно это происходит при создании нового файла, еще не включенного в CVS.
Обращение к удаленному репозитарию CVS
17.04.2008 г.
Сервер CVS настроен и готов к работе. Как защитить удаленный доступ к нему со стороны пользователей?
Используйте OpenSSH — самый простой и защищенный метод доступа к репозитариям CVS как по локальной сети, так и по Интернету. Если правильно настроить OpenSSH с самого начала, то для обеспечения всего удаленного доступа будет достаточно одного подключения и метода аутентификации.
Подключение через SSH настраивается следующим образом:
1. Установите и настройте OpenSSH на всех хостах (на сервере CVS и на всех хостах, которые к нему будут подключаться). 2. Запустите OpenSSH на сервере CVS в режиме демона. 3. Убедитесь в том, что у всех пользователей имеются учетные записи на сервере CVS. 4. Настройте ключи и протестируйте подключения SSH к серверу. 5. На компьютерах пользователей включите следующую строку в файлы ~/.cvsrc (при необходимости создайте эти файлы):
CVS_RSH SSH
Допустим, удаленный сервер CVS находится на хосте cvs.project.net. Подключение к реиозитарию из родительского каталога локальной "песочницы" осуществляется так:
Если сервер CVS находится в локальной сети, достаточно указать имя или IP-адрес хоста:
$ cvs -d :ext:jenn@cvs:/cvsroot checkout scripts
OpenSSH поддерживает разные способы подключения к удаленным хостам. Вы можете использовать учетные записи или (что проще) проводить аутентификацию при помощи парных ключей (открытого и закрытого). Программа keychain обеспечит удобную и безопасную аутентификацию с использованием ключей, так что вам не придется вводить пароль.
OpenSSH шифрует весь обмен данными — как при подключении, так и при пересылке данных. Механизм подключения легко реализуется, а использование одного механизма для доступа как к локальной сети, так и к Интернету упрощает администрирование сервера CVS.
Совместное использование репозитария группами пользователей
17.04.2008 г.
Имеется несколько рабочих групп, каждой из которых нужен собственный репозитарий CVS. Вы хотите разместить эти репозитарии внутри одного главного репозитария, чтобы упростить архивацию и административные операции. Требуется настроить файловые разрешения таким образом, чтобы пользователи не могли работать с чужими репозитариями.
Создайте новый подкаталог для каждого отдельного репозитария. Задайте разрешения владельца и группы для отдельных репозитариев:
Для каждого проекта можно создать отдельный репозитарии или же разместить все в одном корневом репозитарии CVS. Единый корневой репозитарии CVS упрощает архивацию, а наличие нескольких отдельных репозитариев упрощает настройку разрешений.
Создание общего репозитария CVS
17.04.2008 г.
CVS хорошо подходит для отслеживания персональных файлов, но в реальном мире над проектами обычно одновременно работает много людей. Как создать репозитарий CVS, совместно используемый группой пользователей?
Сначала создайте владельца и группу, которым будет принадлежать репозитарий. Затем создайте сам репозитарий:
Чтобы предоставить пользователям доступ к репозитарию, включите их в группу cvsusers. Любой пользователь из группы cvsusers сможет импортировать проект в репозитарий. В следующем примере в репозитарий включается проект techbook:
Команды, приведенные в предыдущем подразделе, должны выполняться на сервере CVS. Очень важно соблюдать приведенную последовательность команд для правильного назначения полномочий. Команда cvs init создает набор административных файлов с собственными разрешениями, которые не следует изменять (вы можете просмотреть их в подкаталоге CVSROOT).
При создании системного пользователя (демона) не забудьте назначить соответствующий код UID. Задайте всем пользователям маску umask равную 007, чтобы устранить какой-либо внешний доступ к файлам в репозитарий CVS. Для этого достаточно включить следующую строку в файл ~/.bashrc каждого пользователя:
umask 007
Установка бита закрепления ограничивает возможность переименования или удаления файла и позволяет выполнять эти операции только владельцу, группе или суперпользователю.
Удаление файлов из репозитария CVS
15.04.2008 г.
Требуется удалить некоторые файлы из репозитария CVS.
Удалите файлы из «песочницы», затем выполните команду cvs remove:
$ rm badfile $ cvs remove badfile cvs remove: scheduling 'badfile' for removal cvs remove: use 'cvs'commit' to remove this file permanently
При следующем выполнении команды commit файл будет перемещен в специальный подкаталоге именем Attic. Тем самым сохраняется полная история всех операций с файлами и обеспечивается возможность восстановления файла, если позднее вы измените свое решение.
Удаление файла из «песочницы» и репозитария можно выполнить одной командой:
$ cvs remove -f badfile
Вы не сможете удалить каталоги так, как удаляются файлы. Ключ -Р в командах update и checkout предотвращает копирование пустых каталогов в «песочницу». Как правило, этот режим включается по умолчанию в ~/cvsrc. CVS никогда ничего не удаляет полностью. Более того, программа и не должна этого делать. Главной целью системы управления версиями является поддержание полной истории проекта.