git
До общения с Oleganza я не видел у
git каких-либо ярких преимуществ перед
bzr.
И, наверное, не увидел бы, если бы не Олег.
Первое что было самым необычным - git полностью децентрализованый. И привычный svn-like workflow тут не работает. Надо было привыкать к branch-style.
Второе - это то, что команды с теми же названиями что и у svn имеют другой смысл.
Жутко понравилось что ветки git держит в себе, то есть не надо плодить по 3-4 папки для разных фичей.
gitosis
Также я задумался о совместной работе.
github - это, конечно, хорошо, но у меня уже есть
багтракер понимающий git. Отчего бы не попробовать git на своем сервере?
Был заведен юзерь git без пароля
[cc lang="bash"]
sudo adduser --shell /bin/sh --gecos 'git version control' --disabled-password --home /home/git git
[/cc]
поставлен gitosis
[cc lang="bash"]
sudo apt-get install gitosis
[/cc]
сделаны небольшие правки его сорсов (дело в том, что по умолчанию gitosis создает репо с маской 0750, мне же надо было с 0755 - чтоб www-data мог его читать):
правим
[cc lang="bash"]
/var/lib/python-support/python2.5/gitosis-0.2-py2.5.egg/gitosis/repository.py
[/cc]
и заменяем 0750 на 0755.
Подробнее описано в
блоге разработчика gitosis.
tailor and bzr
Когда все взлетело с git, решил попробовать отконвертировать при помощи утилиты
tailor старые репо из bzr в git.
Конфиг получился примерно такой (замечания приветствуются):
[cc lang="ini"]
[DEFAULT]
verbose = True
[project]
target = git:target
start-revision = INITIAL
root-directory = /home/dm/tmp/bzr2git
state-file = tailor.state
source = bzr:source
subdir = bzr2git.tmp
[bzr:source]
repository = /home/dm/bzr/BZR_PROJECT_HERE
[git:target]
repository = /home/dm/tmp/bzr2git/tmp/.git
[/cc]
и после запуска
[cc lang="bash"]
tailor bzr2git.conf
[/cc]
в /home/dm/tmp/bzr2git/bzr2git.tmp появляется вполне живой git-репозитарий. Его я уже стягивал к себе и вливал в gitosis от себя.
Примечание
git не отслеживает пустые папки, и в процессе конвертации теряются "log", "tmp", etc... Чтоб отслеживал достаточно
[cc lang="bash"]
mkdir log
touch log/.empty
[/cc]