---
title: CVS и SVN
date: 2007-03-30T10:05:00
tags: [soft]
---

CVS и SVN (Subversion) это программы хранения истории изменения проекта в файловой системе разными пользователями в результате одновременной совместной работы. Существует клиентская и серверная часть.

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

[SVN](http://en.wikipedia.org/wiki/Subversion_(software)) это наследник [CVS](http://swissknife.bougakov.com/misc/cvs/), впрочем если вы испытываете большую симпатию к Microsoft, вы можете использовать [Visual SourceSafe](http://msdn2.microsoft.com/en-us/vstudio/aa718670.aspx). Из себя это представляет сетевую программу, где центральный сервер хранит все вносимые изменения, а клиенты уже производят операции над этими изменениями. Поэтому если вы работаете в фирме, и сервер уже имеется, то вам достаточно установить клиентскую программу.

---

Для windows можно посоветовать [tortoiseSVN](http://tortoisesvn.tigris.org/). В настройках устанавливается связь с localhost:3690, где висит SSH-тунненель [putty](http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html) (настраивается в Connection/SSH/Tunnels) или [SSH tunnel client](http://www.topshareware.com/SSH-Tunnel-Client-download-18466.htm). Если хочется платного, то есть [SmartSVN](http://www.syntevo.com/smartsvn/purchase.jsp).

После настроек - создаём папку под проект и работаю полностью из контексного меню эксплорера делаем операцию **checkout** (копирование working copy в локальную папку). Что-бы сохранить свои изменения в файлах делаем операцию **update** (копирование изменений из svn в локальную папку) и commit (сохранение своих изменений в svn). В случае если файлы были изменены одновременно, то svn не позволит вам сохранить файл и отметит его как конфликт, который надо решить либо через **diff** (сравнение svn и локальной версии), либо через **solved** (перезаписать версию svn своей). В особо запущенных случаях, когда файлы переименовываются или удаляются не используя функции svn, вам прийдётся запускать **cleanup**.

Из дополнительных функций есть функция вины (blame), благодаря которой можно найти кто какую строчку написал. Удачи в проектах!

## Related

- [Unity3D](/ru/blog/tech/soft/unity3d/)
- [Как записывать экран с круглой камерой](/ru/blog/tech/soft/kak-zapisyvat-ekran-s-krugloy-kameroy/)
- [Обзор PHPStorm 1.0](/ru/blog/tech/soft/obzor-phpstorm-10/)
