Использование svn (subversion)
Общая информация
Система контроля версий (Version control system, VCS) - основной инструмент, который помогает разработчикам управлять изменениями в исходном коде некоторого программного продукта. Svn (subversion) - одна из популярных централизованных систем контроля версий.
"Централизованность" svn подразумевает наличие главного центрального сервера (репозитория), на котором хранится вся история изменений. Разработчики как клиенты подключаются к репозиторию, скачивают целиком или частично исходные коды с историей их изменения (делают checkout), вносят изменения в код, и заливают изменения обратно на сервер (делают commit).
Основные задачи, которые решают системы контроля версий:
-
Хранение истории изменений исходного кода, возможность вернуться к одному из предыдущих состояний.
-
Управление совместной работы нескольких человек над общим исходным кодом.
Понятие ревизий
Ревизия является одним из ключевых понятий для VCS. Ревизия представляет собой зафиксированное состояние набора файлов исходного кода.
В тот момент, когда программист желает зафиксировать текущее состояние кода, он делает commit, при этом на сервере создаётся новая ревизия, в которой фиксируется состояние кода в данный момент. В svn ревизии нумеруются порядковыми числами: 1, 2, 3 ...
Процесс работы с Svn
В данном разделе указаны консольные команды svn, которые используются при работе с этой VCS. Вместо консоли можно использовать графический клиент, например TortoiseSVN - команды будут теми же самыми, несмотря на то, что способ их вызова несколько различается (через контекстное меню).
-
создать svn репозиторий на сервере. Скопировать url репозитория.
-
в консоли: перейти в директорию с проектами, выполнить checkout (скачать файлы проекта на локальную машину):
svn co https://subversion.assembla.com/svn/nsu-fit-14207-oop/ oop-task1/
при этом будет создана папка oop-task1
с файлами репозитория.
-
Создать несколько файлов внутри папки
oop-task1
, напримерLinkedList.h
,LinkedList.cpp
,main.cpp
. -
Добавить файлы в систему контроля версий:
svn add LinkedList.h LinkedList.cpp main.cpp
- Сделать commit - зафиксировать текущее состояние добавленных файлов и отправить существующие изменения на сервер:
svn commit -m 'This is the first commit'
Аргумент после -m
- комментарий, который описывает ревизию, которая будет создана на сервере.
Как вносить изменения в код?
- При начале работы над очередной задачей сначала необходимо сделать update в директории с кодом:
svn update
Команда update скачивает последние изменения с сервера. Кажется, что этот шаг можно опустить, но когда вы работаете над проектов в команде - этот шаг становится очень важным. Как и в том случае, когда вы редактируете код с разных компьютеров.
-
Далее вносятся изменения в код, новые файлы добавляются с помощью
svn add
. -
Затем снова делается
svn commit
.
Полезные команды при работе с svn:
-
svn log
- просмотр лога изменений исходного кода -
svn diff
- просмотр "разницы" между последней зафиксированной ревизией и текущим состоянием файлов -
svn cp file1 file2
- копирование файла в svn с сохранением истории изменений файла -
svn mv oldfile newfile
- переименование файла с сохранением истории изменений
trunk, branches, tags
Кто знает, для чего нужны папки trunk
, branches
и tags
?