Как обычно используют SVN в работе (и как всем его рекомендуют использовать). С банальностями. 1) Использование SVN - не есть кандалы и вериги. SVN - всего лишь один из инструментов разработчика. Использовать его надо только там, где это удобно. Например, для начала можно заиспользовать его в небольшом проекте с разработчиками повышенной толковости, а затем от них опыт воздушно-капельным путём передастся остальным. 2) В системе контроля версий имеет смысл хранить файлы, которые разработчики могут и будут исправлять. Компилированные шаблоны, генерённый код, бинари - не сильно полезны. Скрипты, модули, конфиги, картинки, html - просятся. Правило левой руки - чем чаще вы открываете файл в редакторе, тем больше радости вам принесет использование SVN для этого файла. 3) Весь обмен между WC разработчиков (и WC на серверах, включая, возможно, боевые) - через репозитарий. Все остальные способы - возможны, но не естественны. То есть когда некто внёс приятные изменения в свою WC и желает чтобы эти изменения оказались на сервере - он помещает их в репозитарий, а из репозитария вытаскивает на сервер. Такой процесс гарантирует, что на сервере нет "мистических" изменений, которые отсутствуют в репозитарии. 4) "Да," - скажете вы, - "но все изменения в репозитарии валятся в кучу, и при обновлении девелопер зацепит не только свои изменения, но и пачку чужих?" Вы, безусловно, правы - если у нас одна ветка разработки. Где все изменения валятся в кучу - это "основная ветвь", "trunk". Для использования в реальности рекомендуется заводить как минимум ветку "stable" - туда попадает код, проверенный и тщательно отобранный. При раздаче прав на репозитарий можно явно ограничить список людей, имеющих право что-то делать со stable-веткой. 5) Для разработки "долгоиграющих" изменений (которые будучи на trunk мешали бы другим разработчикам) также лучше заводить отдельные ветки. После завершения работы на ветке ветку следует слить с trunk и, возможно, удалить. Ветки - это дёшево, хранятся только изменённые файлы. Стеснять при создании веток не следует. 6) Прыжок с ветки на ветку - операция почти мгновенная. svn switch "имя ветки" - и вы там. Это полезно для быстрого тестирования на dev. сервере, к примеру. Скажем, /var/www был WC с trunk. А я наколбасил супер-изменений на ветке naumov. Захожу в /var/www , svn switch - и /var/www уже WC моей ветки. Я тестирую, все матерятся. Они-то думают что /var/www по-прежнему trunk - наивняк Ж-) switch назад такой же шустрый. Прокачиваются только изменённые файлы. Да, безумно приятно бы иметь по одному тестовому окружению на девелопера. Увы, не всегда возможно. Хорошо бы также иметь по одному тестовому окружению для каждой ветки. Та же история - возможно не всегда. 7) Итого, ветки: stable - оттестированный код, хоть щас в продакшн. trunk - основная ветвь разработки. Все старались сделать как лучше, что получилось - покажет тестирование. branches/feature - ветка, где давно и мучительно разрабытывается новая фича feature. Когда-нибудь её таки-допишут и она попадёт на trunk, а оттуда и до stable рукой подать! branches/lazydevel - персональная ветка особо неаккуратного разработчика. На trunk его боятся пускать, он уже не раз всем испортил рабочее настроение. Вместо этого с его персональной ветки после peer review на trunk попадает пятикратно проверенный код. Уволить его нельзя никак - он чей-то зять. 8) Итого, пути кода: а) небольшие изменения, отладка: WC разработчика -> trunk -> dev.server б) крупные изменения пока код не готов к выкладыванию на trunk: WC -> feature branch -> dev.server Когда станет готов, мержим: feature branch -> WC -> trunk в) изменения с trunk перепозлают на stable, оттуда на продакшн: trunk -> WC -> stable -> prod. box г) кто-то вносит СРОЧНЫЙ fix прямо на stable: WC -> stable -> prod.box Потом этот fix, конечно, надо сбэкпортить на trunk. ==== Вот приблизительно в таком ключе. Если вся эта чехарда с ветками вас сейчас пугает - давайте начнём с одного trunk. Просто, дёшево, надёжно. Даже в таком формате это значительно лучше чем никакой системы контроля. Хотя бы потому, что в репозитарии нет операций, которые невозможно отследить и отменить. А через месячишко всем станет понятно, для чего нужна "чехарда". И stable, и приватные ветки - всё пригодится. Вы уж мне поверьте на слово Ж-) Если остались вопросы из разряда "а как нам сделать то-то" - спрашивайте. Постараюсь ответить.