Подпишитесь на обновления блога. Введите ваш e-mail:

Вход в систему

Ещё раз о том что такое SVN (система контроля версий)

Раз уж я замахнулся на то, чтобы собрать полезную информацию о разработке в команде в одну стопку - дам основные определения и пояснения о том, что же такое SVN, с чем его едят и нужно ли оно вам вообще.

SVN (Subversion) - это система контроля версий. Это система позволяет вести совместную работу нескольким программистам над одним проектом и хранить историю изменений кода (версии программы).

Зачем это нужно? Представим что два программиста (Коля и Сергей) удаленно по одиночке работают над одним и тем же файлом с кодом. Очевидная проблема возникнет при объединении их работы. Первый программист (Коля) должен послать свою версию файла второму программисту (Сергею), чтобы Сергей помимо своей работы аккуратно добавил в файл и Колин код.

При этом хорошо если их работа не пересекалась и они писали автономные функции. В таком случае объединение будет простым - в конец файла добавится по одной новой функции от каждого программиста. В реальности все бывает гораздо сложнее и изменений от каждого из программистов бывает много и не в одном месте.

Согласитесь, высматривать кто, где, когда и какие сделал изменения очень неудобно.

Помимо этой проблемы есть проблема с хранением резервных копий. Логично что резервные копии на разных стадиях развития проекта вещь совершенно необходимая. Но просто создавать копии файлов и хранить их в отдельной папке не совсем удобно. Не понятно на каком этапе была сделана та или иная копия файла и ещё более непонятно какие изменения произошли от резервной копии до текущего момента.

Все эти аргументы могу показаться неубедительными программисту-одиночке, у которого ещё нет опыта работы в паре (соответственно нет опыта объединения работы нескольких программистов), и который досконально знает свой проект (т.к. проект не слишком большой и соответственно нет проблемы в откатах к бекапам - программист хорошо помнит весь процесс разработки и историю изменения в файлах).

Однако даже для одиночки SVN может оказаться полезным, о чем будет сказано в конце статьи. К тому же когда-нибудь одиночке приходит время совместной работы в команде и уж тут без SNV не обойтись.

Итак, все проблемы, описанные выше (и не только их) решает SVN.

Система работы с SVN строится по следующему принципу: есть локальный компьютер (либо удаленный сервер) который является хранилищем проекта и хранит в себе всю историю изменений файлов проекта (помнит кто, когда и в каких файлах сделал изменения).

Это хранилище называется репозиторий.

Для работы с проектом у каждого программиста (у Коли и Сергея) на своем компьютере стоит программа-клиент для подключения к репозиторию. Она позволяет программисту в любой момент подключиться к репозиторию и скачать себе на компьютер последнюю версию проекта (сделать себе рабочую копию). Таким образом программист может смело править рабочую копию, не боясь испортить проект неправильным кодом.

Если Сергей писал-писал и видит, что код получился НЕ рабочий, он легко может снова обратиться к репозиторию и получить обратно ту версию проекта, с которой начинал работать.

Если же код получился удачным, Сергей при помощи программы-клиента заливает в репозиторий свои изменения. Делается это в пару кликов - выбираются файлы которые нужно обновить и нажимается кнопка commit (отправить в репозиторий). SVN в репозитории самостоятельно производит замену старых файлов на новые, сохраняет историю изменений, время когда была залита новая версия файлов и кем.

Чтобы Коле получить в свою рабочую версию изменения, сделанные Сергеем, ему нужно нужно обратиться к репозиторию с командой "Update". При этом программа-клиент самостоятельно обновит неактуальные файлы на компьютере Коли на новые.

При этом важно заметить ещё один очень важный момент - при обращении к репозиторию с командами Update и Commit происходит не замена файлов, а именно дописывание/удаление изменившейся части файла.

Таким образом если Коля и Сергей друг за другом сделают Commit (зальют каждый свои изменения в репозиторий) - и те и другие изменения будут учтены и применены.

Можно ещё довольно долго объяснять различные тонкости и достоинства при работе с SVN. Но мораль всей статьи в том, что если вы действительно хотите заниматься программированием и доросли до сложных проектов - SVN одно из первых на что вам следует обратить внимание.

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

Гость : 20-10-2011

Раньше я думал иначе, благодарю за информацию.

Гость : 24-07-2012

хорошая статейка

Отправить комментарий

Содержимое этого поля является приватным и не будет отображаться публично.
CAPTCHA
Введите код который вы видите на картинке чтобы подтвердить, что вы - человек!