Как я могу интегрировать репозиторий bitbucket с размещенной версией FogBugz по требованию?
Я использую версию FogBugz по запросу (размещенную). Я хотел бы начать использовать Mercurial для контроля версий. Я хотел бы интегрировать FogBugz и репозиторий BitBucket. Я попробовал, но дела шли не очень хорошо.
FogBugz требует, чтобы вы подключили свой клиент Mercurial к сценарию на python fogbugz.py. У TortoiseHg, похоже, нет каталога hgext, на который они ссылаются в инструкциях.
Так кто-нибудь успешно сделал что-то подобное?
4 ответа
Судя по звукам, вы хотите запустить ловушку на вашем локальном компьютере. Крюк и направления предназначены для использования на центральном сервере.
Если вы единственный, кто работает в вашем репозитории, или не возражаете против того, чтобы коммит не появлялся в FB до тех пор, пока вы не сделаете извлечение, то вы можете добавить ловушку локально к первичному клону. Если вы используете свой основной клон, тогда вам нужно сделать что-то немного отличное от того, что они говорят здесь: http://bugs.movabletype.org/help/topics/sourcecontrol/setup/Mercurial.html
Вы можете поместить ваш fogbugz.py куда угодно, просто добавьте строку пути в раздел [fogbugz] этого hgrc-файла репозиториев:
[fogbugz]
path=C:\Program Files\TortoiseHg\scripts\fogbugz.py
Просто убедитесь, что у вас установлен Python. Вы также можете добавить хук фиксации, чтобы локальные коммиты в хранилище также попадали в FB.
[hooks]
commit=python:hgext.fogbugz.hook
incoming=python:hgext.fogbugz.hook
При установке Fogbugz вы захотите внести изменения, указав в своем URL-адресах логи следующее:
^REPO/log/^R2/^FILE
и следующее для вашего diff url:
^REPO/diff/^R2/^FILE
Когда скрипт ловушки запускается, он подключается к вашей установке FB и отправляет ему несколько параметров. Эти параметры хранятся в БД и используются для генерации URL для различий и регистрации информации. Скрипт отправляет URL репо, это в настройках вашего baseurl в разделе [web]. Вы хотите, чтобы этот URL был URL вашего хранилища битбакетов. Это будет использоваться для замены ^REPO из шаблонов URL выше. Сценарий подключения также передает идентификатор редакции и имя файла в FB. Они заменят ^R2 и ^FILE. Итак, в заключение, это то, что вы хотите добавить в файл hgrc в вашем каталоге.hg:
[extensions]
hgext.fogbugz=
[fogbugz]
path=C:\Program Files\TortoiseHg\scripts\fogbugz.py
host=https://<YOURACCOUNT>.fogbugz.com/
script=cvsSubmit.asp
[hooks]
commit=python:hgext.fogbugz.hook
incoming=python:hgext.fogbugz.hook
[web]
baseurl=http://www.bitbucket.org/<YOURBITBUCKETACCOUNT>/<YOURPROJECT>/
Следует помнить, что FB может получить уведомление о регистрации до того, как вы внесете эти изменения в bitbucket. Если это причина, сделайте толчок, и все будет работать.
РЕДАКТИРОВАТЬ: добавлен раздел о сервере FB и резюме.
Посмертное:
Bitbucket теперь имеет встроенную поддержку fogbugz, а также другие пост-back сервисы.
Просто наперед: Fog Creek выпустил Kiln, который предоставляет хостинг Mercurial, который тесно интегрирован с FogBugz и не требует какой-либо настройки.
Обычно я не "рекламирую" в переполнении стека (отказ от ответственности: я один из разработчиков Kiln), но я чувствую, что это прямо отвечает на первоначальный вопрос.
Возможно интегрировать ваш репозиторий GIT BitBucket с системой отслеживания проблем FogBugz, но, к сожалению, она не документирована должным образом.
Вы должны выполнить шаги, описанные в https://confluence.atlassian.com/display/BITBUCKET/FogBugz+Service+Management, но будьте осторожны, что
В URL-адресе CVSSubmit необходимо указать URL без параметров? IxBug=bugID&sFile=file&sPrev=x&sNew=y&ixRepository=".
Это должно быть просто "https://your_repo.fogbugz.com/cvsSubmit.asp"
Вам нужно будет указать свой идентификатор FogBugz в сообщении git commit, добавив в него строку "BugzID: ID" (это нигде не задокументировано:-():
git commit -m "Это превосходный коммит, который решает дело BugzID: 42"
Конечно, информация о коммите будет отправлена в FogBugz после того, как вы отправите ваш коммит на сервер BitBucket, а не после того, как вы выполните локальный коммит.