18.13. Выборка конкретных старых версий из CVS
Проблема
Требуется извлечь из репозитория конкретную старую версию файла: конфигурационный сценарий, к которому вы хотите вернуться, прежнюю версию программы и т. д. Это особенно важно для разработчиков, когда требуется просмотреть предыдущие состояния кода, устранить регрессии или восстановить прошлую функциональность системы.
Решение
Выполните из «песочницы» команду cvs log
, чтобы получить список всех доступных версий файла. Команда cvs log
позволяет просмотреть все сохранённые версии с указанием даты, времени и комментариев к изменениям. Это полезно для понимания истории проекта и отслеживания изменений.
$ cvs log newerfile
После определения нужной версии выполните команду для её восстановления:
$ cvs update -r 1.1 newerfile
U newerfile
Эта команда загружает статическую, неизменяемую версию файла. Статическая метка (sticky tag) отображается в результатах команды cvs status
; она указывает, что файл помечен как статический и фиксирован на определённой версии:
$ cvs status newerfile
File: newerfile Status: Up-to-date
Working revision: 1.1 Sun Aug 1 07:47:17 2003
Repository revision: 1.1 /home/foober/cvsroot/project/newerfile,v
Sticky tag: 1.1
Sticky date: (none)
Sticky options: -kkv
На этой стадии файл может использоваться для различных целей, таких как сравнение с текущей версией, копирование фрагментов кода, возврат к раннему состоянию системы или восстановление конкретных функций. Важно отметить, что редактирование файла напрямую не рекомендуется, так как это нарушает историю изменений и может привести к конфликтам при последующих обновлениях.
Если вы хотите внести изменения в старую версию, сначала создайте её копию. В копии необходимо удалить статическую метку (sticky tag). Для этого откройте файл в текстовом редакторе и измените строку Sticky Tag: 1.1
на Sticky Tag: (none)
. Это снимет фиксацию на конкретной версии, позволяя редактировать файл без нарушения истории.
После завершения правок закрепите изменения стандартной командой:
$ cvs commit
Чтобы полностью интегрировать изменения, можно использовать команду cvs update
для получения последних актуальных версий файлов, если параллельно велась работа над проектом другими разработчиками. CVS эффективно разрешает конфликты, если изменения в файле производились в разных частях.
CVS также поддерживает различные методы работы с версиями, включая использование ветвей (branches) для изолированного тестирования новых функций. Ветвление позволяет сохранять текущую стабильную версию, в то время как эксперименты и доработки ведутся в параллельной ветви. Как только изменения будут протестированы и одобрены, они могут быть объединены с основной версией проекта.
При работе с системой контроля версий важно придерживаться установленного процесса обновления и фиксации изменений (commit), чтобы избежать конфликтов. Это помогает поддерживать структуру проекта, позволяет легко отслеживать и устранять ошибки.
См. также
Домашняя страница CVS http://www.cvshome.org.