Использование svn (subversion)

Общая информация

Система контроля версий (Version control system, VCS) - основной инструмент, который помогает разработчикам управлять изменениями в исходном коде некоторого программного продукта. Svn (subversion) - одна из популярных централизованных систем контроля версий.

"Централизованность" svn подразумевает наличие главного центрального сервера (репозитория), на котором хранится вся история изменений. Разработчики как клиенты подключаются к репозиторию, скачивают целиком или частично исходные коды с историей их изменения (делают checkout), вносят изменения в код, и заливают изменения обратно на сервер (делают commit).

Основные задачи, которые решают системы контроля версий:

Понятие ревизий

Ревизия является одним из ключевых понятий для VCS. Ревизия представляет собой зафиксированное состояние набора файлов исходного кода.

В тот момент, когда программист желает зафиксировать текущее состояние кода, он делает commit, при этом на сервере создаётся новая ревизия, в которой фиксируется состояние кода в данный момент. В svn ревизии нумеруются порядковыми числами: 1, 2, 3 ...

Процесс работы с Svn

В данном разделе указаны консольные команды svn, которые используются при работе с этой VCS. Вместо консоли можно использовать графический клиент, например TortoiseSVN - команды будут теми же самыми, несмотря на то, что способ их вызова несколько различается (через контекстное меню).

svn co https://subversion.assembla.com/svn/nsu-fit-14207-oop/ oop-task1/

при этом будет создана папка oop-task1 с файлами репозитория.

svn add LinkedList.h LinkedList.cpp main.cpp
svn commit -m 'This is the first commit'

Аргумент после -m - комментарий, который описывает ревизию, которая будет создана на сервере.

Как вносить изменения в код?

svn update

Команда update скачивает последние изменения с сервера. Кажется, что этот шаг можно опустить, но когда вы работаете над проектов в команде - этот шаг становится очень важным. Как и в том случае, когда вы редактируете код с разных компьютеров.

Полезные команды при работе с svn:

trunk, branches, tags

Кто знает, для чего нужны папки trunk, branches и tags?