среда, 23 июля 2008 г.

Как изменить комментарии к коммиту?

Вот недавно нарыл на просторах его великого и необъятного следующую штучку:
svn pe svn:log -r 1234 --revprop

Данная команда позволяет изменять комментарии к коммитам (по причине кривости или опечаток). Я, конечно же, сразу захотел её использовать, но репозиторий со мной не согласился:
svn: Repository has not been enabled to accept revision propchanges;
ask the administrator to create a pre-revprop-change hook


Ну лечится это довольно просто: идём в папку /var/spool/svn/имя_репозитория/hooks/ и там cp pre-revprop-change.tmpl pre-revprop-change и chmod +x pre-revprop-change , потом перезапускаем svnserve и вуаля :)

вторник, 1 июля 2008 г.

Lighttpd + WebDAV

Ставим пакеты:
apt-get update
apt-get install -y lighttpd
apt-get install -y lighttpd-mod-webdav

Добавляем в конфиг файл
vi /etc/lighttpd/lighttpd.conf

$HTTP["url"] =~ "^/dav($|/)" {
webdav.activate = "enable" # allow module
webdav.is-readonly = "disable" # enable write
webdav.sqlite-db-name = "/var/run/lighttpd/lighttpd.webdav_lock.db" # access to locaks and metadata database
}

Около блока "server.modules" ищем строку "mod_webdav" и убираем знак диеза слева, если он установлен.

После этого нам требуется создать хотя бы одну папку с доступом по WebDAV. Корнем веб сервера устанавливается папка /var/www, если вас устраивает такое положение, можете её так и оставить, в противном случае можете изменить её местоположение в конфиг файле. После этого создаем папку для WebDAV доступа:
mkdir /var/www/dav
chown www-data:www-data /var/www/dav

Ну и напоследок применяем настройки:
/etc/init.d/lighttpd restart

После это можно каким-нить WebDAV клиентом (я использовал nd) попробовать поиграться с папкой http://ваш_сайт/dav

Я использовал версию (в случае же проблем, обновляемся на более новую):
lighttpd-1.4.13 (ssl) - a light and fast webserver
Build-Date: Apr 15 2008 08:23:10

Играемс:
nd -d http://домен.ru:81/dav/suxx.ics --- удаление файла
nd -p wammu.log http://домен.ru:81/dav/suxx.log -- загружаем файл
nd -m http://домен.ru:81/dav/suxx555.log http://домен.ru:81/dav/suxx.log -- перемещаем файл
nd -v http://домен.ru:81/dav/555suxx.log -- запрос свойств объекта
У меня было выдано:
Status: 0
Last-Modified:
Created:
Size:
Content-Type:
Resource-Type:

Зададим новое свойство:
nd -l http://домен.ru:81/dav/suxx555.log -- блокируем объект
Lock: token="opaquelocktoken:aebb8df4-3321-4604-a8aa-cf69429c2725",
scope="exclusive",
owner-href="",
timeout="Second-600"

nd -u -t opaquelocktoken:aebb8df4-3321-4604-a8aa-cf69429c2725 http://домен.ru:81/dav/suxx555.log -- разлочим объект посредством "ключа", выданного нам при блокировке
nd -k http://домен.ru:81/dav/folder1 -- создаем новую папку

А вот далее интереснее:
nd -e test=12345 http://домен.ru:81/dav/suxx555.log
nd -v http://домен.ru:81/dav/suxx555.log
Name: http://домен.ru:81/dav/suxx555.log
Status: 0
Last-Modified:
Created:
Size:
Content-Type:
Resource-Type:


Как видите, вновь заданное свойство не показывается (хотя в sqlite лайта базе данных оно имеется). Это баг nd / lighttpd или же я туплю ? Попробуем другой WebDAV клиент, пожалуй, это будет cadaver.
nrg@dell:~$ cadaver
dav:!> open http://домен.ru:81/dav
dav:/dav/> propset suxx555.log suxx 777
dav:/dav/> propget suxx555.log suxx
Fetching properties for `suxx555.log':
Value of suxx is: 777


Таки выходит, глюк nd. Ну вот и все, осталось только придумать, для чего использовать такой замечательный протокол :)

Офсайт lighttpd.