Свого часу я дуже необережно оновив двіг Кукорами до нестабільної версії LS з trunk’у. Для мене це вилилось в купу часу затраченного на багфікси (так склалось, що відкотитись було неможливо), а для LS в халявні багфікси :). З того часу в директорії /var/www/my/cookorama.net з’явилися три піддерикторії “source”, “source-with-ls-svn”, “source-without-ls-svn”.
Апдейт до нової версії LS виглядає наступним чином:
- Апдейчу з транка LS сорси в “source-with-ls-svn”.
- Розрулюю конфлікти в конфізі і можливо мержу свої багфікси з їхніми.
- Перекидаю DocumentRoot на “source-with-ls-svn” і дивлюся чи все працює.
- Переношу все це діло в “source-without-ls-svn” і тру всі папочки .svn
find . -depth -type d -name '.svn' -execdir rm -rf '{}' \;
- Накочую вміст “source-without-ls-svn” на “source” і перевіряю зміни в конфізі, шаблонах і мовних файлах.
- Тестую Кукораму на локальній машині і якщо все ок, то комічу (Кукорама лежить в окремому репозиторії) і апдейчу продакшн.
Щоб заборонити доступ до директорій .svn потрібно додати в httpd.conf наступне правило:
<LocationMatch "^/(.*/)?\.svn/">
Order deny,allow
Deny from all
</LocationMatch>
Це так - на пам’ять. Бо щойно трохи не лажанувся.
Виникла в мене потреба в використанні на сервері системи контролю версій і багтрекінг системи. Так як локально я використовую svn, то і на сервері вирішив ставити svn.
SVN або Subversion - вільна централізована система контролю версій. Нещодавно (19 липня 2008) року вийшла нова версія 1.5.

Trac - гарна багтракінгова система і інструмент для керування проектами. Написана на python. В наступній версії обіцяють зробити можливість локалізації через gettext.
Ставив я це все щастя на свій VDS від RuWeb. Керувався офіційною документацією і статтею “Установка и настройка SVN сервера с доступом к репозиториям по http протоколу“. Тільки я налаштовував не як піддомени, а як директорії - http://myprojects.com/svn/ і http://myprojects.com/trac/.
Все поставилось нормально. Спочатку налаштував користувачів, створив групи, роздав права. Потім створив на сервері репозиторій і залив туди останню версію проекта. На локальній машині зробив check out, вніс певні зміни і спробував зробити commit. От тут і почалися приколи: (ще…)