18.12. Обновление рабочих файлов в CVS
Проблема
Вы работаете над общим проектом и хотите быть уверены в том, что первое извлечение файлов из репозитория обновляет все содержимое «песочницы» с учётом изменений, внесённых другими пользователями.
Решение
В начале дня выполните из «песочницы» команду update
с ключом -n
(Not really):
$ cvs -n update -dP
cvs update: Updating
cvs update: Updating CVSROOT
cvs update: Updating project
M project/oldfile
? project/newfile
Команда показывает, какие файлы различаются, и выводит информацию о состоянии каждого файла. Чтобы синхронизировать «песочницу» с репозиторием, выполните команду заново, но уже без ключа -n
. Команда выполнит слияние (или попытается выполнить) двух наборов файлов.
Для получения расширенной информации о разнице между текущей версией и версией в репозитории выполните команду cvs
diff
, которая построчно покажет все изменения:
$ cvs diff
Эта команда поможет понять, какие именно строки были изменены, добавлены или удалены. Если возникли конфликты, требующие разрешения, CVS укажет на это, пометив проблемные файлы.
Комментарий
Регулярное выполнение команды update
поддерживает синхронизацию локальных рабочих копий с копиями из репозитория. Это особенно важно при работе в команде, чтобы избежать конфликтов и потерь данных. Помните: когда в ходе редактирования файл достигает состояния, которое вы хотели бы сохранить, обязательно занесите его в репозиторий. Система CVS предназначена для хранения многих версий одного файла, так что не оставляйте важные изменения только в «песочнице».
CVS использует несколько обозначений для статусов файлов:
- U — файл был успешно обновлён;
- A — файл был добавлен, но изменения не были закреплены;
- R — файл был удалён, но изменения не были закреплены;
- M — файл в репозитории отличается от копии в «песочнице», и изменения были успешно объединены;
- C — между копией в репозитории и копией в «песочнице» существует конфликт, требующий вмешательства со стороны пользователя;
- ? — файл находится в рабочем каталоге, но отсутствует в репозитории, и CVS не знает, что с ним делать (обычно это происходит при создании нового файла, ещё не включённого в CVS).
Если изменения от других участников начинают вас раздражать, помните, что это не проблема CVS, а, скорее, недостаток управления проектом. Один из способов минимизировать неудобства — сначала просматривать изменения с помощью cvs
-n update
, а затем принимать решение о том, когда их включить. Когда работаете с CVS, важно также контролировать права доступа к файлам. CVS требует соблюдения определённых стандартов безопасности. Например, убедитесь, что конфиденциальные данные защищены от несанкционированного доступа.
См. также
Раздел 18.7; домашняя страница CVS (http://www.cvshome.org); раздел 18.8.