2010-07-30

Права в Git и развертывание

Сегодня у меня был опыт, которым хотелось бы поделиться. Все началось с того, что наша контора (не без моей инициативы) перебралась с SVN на Git. То есть теперь в системе контроля версий мы помимо просто файлов еще храним и права доступа к ним.

Раньше было так: на девелоперской машине сайт /var/www/site был во владении основного пользователя и IDE могла спокойно работать с этими файлами. Если серверу нужны были права на запись в директорию, то директории выставлялись права 0777, благо через SVN дальше компьютера разработчика это не уходило. Был такой вот мелочный хак.

Все бы хорошо, но после перехода на Git, отправлять на продакшн права 0777 было бы совсем нехорошо. Решением этой дилеммы стал запуск сервера apache от основного юзера операционки. В Ubuntu ключевой файл находится в следующем месте:

/etc/apache2/envvars

В нем следует изменить строки


export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data


на


export APACHE_RUN_USER=user
export APACHE_RUN_GROUP=user

Где user - имя основного юзера системы.
И стало щастье и IDE, и веб-серверу. В итоге мы можем хранить в Git "правильные" права и разрабатывать приложение в любимом текстовом редакторе запущенном не от www-data или, что еще хуже root'а.


P.S. Под основным юзером я имел ввиду юзера, который собственно работает за компьютером.

2010-07-15

Игнорирование изменений пробельного пространства в svn diff

Иногда, работая над проектами, мы изменяем код так, чтобы он был более удобочитаем / больше подходил под выбранный стиль кодирования / удаляем пробелы с концов строк. Работая в команде, это порой может очень мешать просматривать логические изменения кода.

Команда svn diff не поддерживает функции игнорирования изменений пробелов и табов. Но зато GNU программа diff умеет это делать.

Чтобы использовать стороннюю diff команду в svn diff, нужно воспользоваться ключом -x.
Если мы желаем напрямую сравнить два файла, игнорируя пробелы, то нам следует использовать diff -uw /path/to/file1 /path/to/file2

Если мы желаем посмотреть наши локальные изменения, игнорируя пробелы, то нам нужна следующая команда:

svn diff --diff-cmd diff -x -uw /path/to/file

В этом случае мы больше не увидим изменений, которые были сделаны исключительно из эстетических соображений.

Это был относительно вольный перевод этой записки:
http://goo.gl/DnKh