Clean .svn folders

Свого часу я дуже необережно оновив двіг Кукорами до нестабільної версії 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?

Щоб заборонити доступ до директорій .svn потрібно додати в httpd.conf наступне правило:

<LocationMatch "^/(.*/)?\.svn/">
    Order deny,allow
    Deny from all
</LocationMatch>

Це так – на пам’ять. Бо щойно трохи не лажанувся.

Як я ставив SVN & Trac

Виникла в мене потреба в використанні на сервері системи контролю версій і багтрекінг системи. Так як локально я використовую 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. От тут і почалися приколи: Continue reading