SVN (SubVersioN) - это служба, позволяющая нескольким пользователям параллельно редактировать одни и те же файлы, а затем объединять результаты. SVN - дальнейшее развитие CVS.
Общая схема работы обычно примерно такая: вы редактируете файл, затем обновляете его( т.е. к вашим изменениям добавляются изменения ваших товарищей). Обновление обычно производится командой "обновить"(update). Затем вы проверяете, что такая обновленная версия работоспособна и там нет конфликтов. Если есть конфликты, то их надо исправить. Конфликты появляются в том случае, если Вы и Ваш товарищ правили один и тот же кусок файла, но внесли разные изменения. После исправления конфликтов вы заливаете свою версию в репозиторий(обычно этот пункт называется commit или фиксировать). Конкретные названия команд зависят от клиента, который вы используете. Для подстраховки можно залочить файл на время, пока Вы исправляете изменения(если там немного) или после исправления сделать снова update и повторить процедуру, если сервер снова внес в Вашу рабочую копию исправления. Если вы лочите файл, то никто кроме Вас не может его правит(файл "locked" - закрыт).
ВАЖНО! Настоятельно рекомендую использовать именно второй вариант. Лочить файлы только в том случае, когда этого совсем никак не избежать. Сразу после заливки залоченных файлов ОБЯЗАТЕЛЬНО снять блокировку.
Так как SVN бесплатный, то существует куча разных клиентов к нему, с помощью которых можно работать с сервером. Есть TortoiseSVN ( http://tortoisesvn.net/downloads), он встраивается в контекстное меню проводника и можно работать с файлами прямо через контекстное меню. В принципе, это довольно удобно. Есть RapidSVN (http://rapidsvn.tigris.org/ ). Это отдельное приложение. Он удобен тем, что легко просматривать общую структуру репозитория и версии файлов, которые там лежат. Дальнейшие действия будут рассматриваться на примере этих двух клиентов.
Вне зависимости от выбранного Вами клиента, необходимо будет ввести путь к
репозиторию. Итак, Вы поставили клиент. Дальше надо создать свою рабочую копию - папку, в которой будут лежать файлы, с которыми Вы работаете, Ваша версия проекта.
1) TortoiseSVN
Заходите в папку, в которой Вы хотели бы держать проект. Пусть, например, это "С:\Work". Вызываете контекстное меню проводника, например, правой кнопкой мыши и выбираете "SVN Извлечь". В появившемся диалоговом окне указываете путь к репозиторию. Нажимаете подтверждение, вводите логин и пароль. После этого у вас появится папка "С:\Work\YourProject". Это и будет Ваша рабочая копия. Кроме этой папки создадутся служебные скрытые папки "_svn"(или ".svn"). До тех пор, пока Вы не решите создать рабочую копию другом месте или вообще закончить работу над проектом, их трогать нельзя!
2) RapidSVN
Запускаете приложение, панель закладок, контекстное меню ->добавить существующий репозиторий, вводите URL. В случае успешного выполнения на панели закладок появится добавленный репозиторий. Меню Репозиторий->Создать локальную копию(checkout). Выбираете URL репозитория и куда именно надо создавать. Дальше вы можете работать с файлами.
Когда Вы закончите работу, надо залить файл.
1) TortoiseSVN
На папке с проектом вызываете контекстное меню, SVN обновить, смотрите лог. Если изменений нет, то SVN Фиксировать. Иначе исправляете и повторяете шаг. Если Вы не обновите(а Ваш товарищ сделал какие-то изменения) и попытаетесь зафиксировать свои изменения, SVN выдаст предупреждение и отменит операцию фиксации.
2)RapidSVN
То же самое, но теперь это в меню Операции->Актуализировать и Фиксировать соответственно.
Вот, собственно, и весь краткий курс по работе с репозиториями.
Более подробно про команды можно почитать, например, здесь
http://svnbook.red-bean.com/nightly/ru/svn-book.html.
Некоторые неудобства в работе с SVN:
1) В CVS можно было каждому пользователю менять свой пароль. Теперь - нельзя. Вообще, раньше и админское управление через консоль было более полным. Сейчас пароли можно править только через файл. Более того, они лежат там в незашифрованном виде. В CVS они хоть как-то шифровались, чтобы не так било в глаза.
2)Добавилось ограничение доступа по путю по протоколам http (через Apache) и svnserve. Не знаю, может у меня руки кривые, но через svnserve как-то не очень все работало. Тем не менее, в мануале написано, что применять эту опцию стоит только в самом крайнем случае - сильно увеличивается время всех операций, т.к. для КАЖДОГО файла проверяются права на доступ. ИМХО, можно было бы проверять только директории, а для вложенных в них объектов не проверять.
Так что концепция остается по сути прежней - для каждого проекта(команды) свой репозиторий.
