Интеграция Fogbugz с TortoiseSVN без сервера URL / Subversion - PullRequest
15 голосов
/ 06 августа 2008

У меня установлено TotroiseSVN, и большинство моих репозиториев проверяют вход и выход из C: \ subversion \ , а также пару проверяют вход и выход из общего сетевого ресурса (я забыл об этом, когда впервые опубликовал вопрос) .

Это означает, что у меня нет сервера "subversion" как такового.

Как мне интегрировать TortoiseSVN и Fogbugz?

Редактировать: курсив вставлен

Ответы [ 5 ]

18 голосов
/ 16 декабря 2008

Я исследовал эту проблему и сумел заставить ее работать. Есть пара небольших проблем, но они могут быть обойдены.

Эта проблема состоит из 3 отдельных частей:

  1. Часть TortoiseSVN - получение TortoiseSVN для вставки ошибки и гиперссылки в журнал svn

  2. Часть FogBugz - получение FogBugz для вставки информации SVN и соответствующих ссылок

  3. Часть WebSVN - обеспечение работоспособности ссылок из FogBugz

Инструкции для части 1 содержатся в другом ответе, хотя на самом деле это больше, чем требуется. Материал о хуках на самом деле относится ко второй части, и, как указано, он не работает «из коробки»

Просто чтобы подтвердить, мы рассматриваем использование TortoiseSVN БЕЗ сервера SVN (т. Е. Файловые репозитории)

Я обращаюсь к репозиториям по UNC-путям, но он также работает для локальных или подключенных дисков.

Все это работает с TortoiseSVN v1.5.3 и SVN Server v1.5.2 (Вам необходимо установить SVN Server, поскольку для части 2 требуется svnlook.exe, который находится в пакете сервера. На самом деле вы не настраиваете его для работы в качестве Сервер SVN) Возможно даже скопировать svnlook.exe с другого компьютера и поместить его куда-нибудь по пути.

Часть 1 - TortoiseSVN

Создание свойств TortoiseSVN - это все, что требуется для получения ссылок в журнале SVN.

Предыдущие инструкции работают нормально, я приведу их здесь для удобства:

Настройка свойств

  1. Щелкните правой кнопкой мыши корневой каталог извлеченного проекта, с которым вы хотите работать.

  2. Выберите «TortoiseSVN -> Свойства»

  3. Добавьте пять пар значений свойств, нажав «Создать ...» и вставив следующее в «Имя свойства» и «Значение свойства» соответственно: (убедитесь, что вы отметили «Применить свойство рекурсивно» для каждой из них)

    bugtraq:label    BugzID:
    bugtraq:message  BugzID: %BUGID%
    bugtraq:number   true
    bugtraq:url      http://[your fogbugz URL here]/default.asp?%BUGID%
    bugtraq:warnifnoissue   false
    
  4. Нажмите «ОК»

Как говорит Джефф, вам придется делать это для каждой рабочей копии, поэтому следуйте его инструкциям по переносу свойств.

Вот и все. TortoiseSVN теперь добавит ссылку на соответствующий идентификатор ошибки FogBugz при фиксации. Если это все, что вы хотите, вы можете остановиться здесь.

Часть 2 - FogBugz

Чтобы это работало, нам нужно настроить скрипты ловушек. По сути, пакетный файл вызывается после каждой фиксации, а это, в свою очередь, вызывает сценарий VBS, который выполняет отправку в FogBugz. Сценарий VBS на самом деле прекрасно работает в этой ситуации, поэтому нам не нужно его изменять.

Проблема в том, что командный файл написан для работы в качестве сервера ловушки, но нам нужен клиент ловушка.

Сервер SVN вызывает хук post-commit с этими параметрами:

<repository-path> <revision>

TortoiseSVN вызывает хук post-commit с этими параметрами:

<affected-files> <depth> <messagefile> <revision> <error> <working-copy-path>

Так вот почему это не работает - параметры неверны. Нам нужно изменить командный файл, чтобы он передавал правильные параметры в сценарий VBS.

Вы заметите, что TSVN не передает путь к хранилищу, что является проблемой, но работает в следующих случаях:

  • Имя хранилища и имя рабочей копии совпадают
  • Вы делаете коммит в корне рабочей копии, а не в подпапке.

Я посмотрю, смогу ли я решить эту проблему и опубликую здесь, если я это сделаю.

Вот мой исправленный пакетный файл, который работает (прошу прощения за лишние комментарии ...)

Вам нужно будет установить каталоги ловушек и репозитория в соответствии с вашими настройками.

rem @echo off
rem   SubVersion -> FogBugz post-commit hook file
rem   Put this into the Hooks directory in your subversion repository
rem   along with the logBugDataSVN.vbs file

rem   TSVN calls this with args <PATH> <DEPTH> <MESSAGEFILE> <REVISION> <ERROR> <CWD>
rem   The ones we're interested in are <REVISION> and <CWD> which are %4 and %6

rem   YOU NEED TO EDIT THE LINE WHICH SETS RepoRoot TO POINT AT THE DIRECTORY 
rem   THAT CONTAINS YOUR REPOSITORIES AND ALSO YOU MUST SET THE HOOKS DIRECTORY

setlocal

rem   debugging
rem echo %1 %2 %3 %4 %5 %6 > c:\temp\test.txt

rem   Set Hooks directory location (no trailing slash)
set HooksDir=\\myserver\svn\hooks

rem   Set Repo Root location (ie. the directory containing all the repos)
rem   (no trailing slash)
set RepoRoot=\\myserver\svn

rem   Build full repo location
set Repo=%RepoRoot%\%~n6

rem   debugging
rem echo %Repo% >> c:\temp\test.txt

rem   Grab the last two digits of the revision number
rem   and append them to the log of svn changes
rem   to avoid simultaneous commit scenarios causing overwrites
set ChangeFileSuffix=%~4
set LogSvnChangeFile=svn%ChangeFileSuffix:~-2,2%.txt

set LogBugDataScript=logBugDataSVN.vbs
set ScriptCommand=cscript

rem   Could remove the need for svnlook on the client since TSVN 
rem   provides as parameters the info we need to call the script.
rem   However, it's in a slightly different format than the script is expecting
rem   for parsing, therefore we would have to amend the script too, so I won't bother.
rem @echo on
svnlook changed -r %4 %Repo% > %temp%\%LogSvnChangeFile%
svnlook log -r %4 %Repo% | %ScriptCommand% %HooksDir%\%LogBugDataScript% %4 %temp%\%LogSvnChangeFile% %~n6

del %temp%\%LogSvnChangeFile%
endlocal

Я предполагаю, что репозитории находятся на \\myserver\svn\, а все рабочие копии находятся в `C: \ Projects \

  1. Зайдите в свою учетную запись FogBugz и нажмите «Дополнения» -> «Настройка интеграции управления исходным кодом»

  2. Загрузите файл VBScript для Subversion (не связывайтесь с командным файлом)

  3. Создайте папку для хранения скриптов хуков. Я положил его в ту же папку, что и мои репозитории. например. \\myserver\svn\hooks\

  4. Переименуйте VBscript, чтобы удалить .safe в конце имени файла.

  5. Сохраните мою версию командного файла в вашем каталоге hooks, как post-commit-tsvn.bat

  6. Щелкните правой кнопкой мыши по любому каталогу.

  7. Выберите «TortoiseSVN> Настройки» (в контекстном меню последнего шага)

  8. Выберите «Скрипты крюка»

  9. Нажмите «Добавить» и установите свойства следующим образом:

    • Тип крючка: крючок после фиксации

    • Путь рабочей копии: C:\Projects (или каков ваш корневой каталог для всех ваших проектов.)

    • Командная строка для выполнения: \\myserver\svn\hooks\post-commit-tsvn.bat (это должно указывать на то место, куда вы поместили каталог hooks на шаге 3)

    • Галочка "Дождаться окончания сценария"

  10. Нажмите OK дважды.

В следующий раз, когда вы совершите коммит и введете Bugid, он будет отправлен в FogBugz. Ссылки не будут работать, но, по крайней мере, есть информация о редакции, и вы можете вручную просмотреть журнал в TortoiseSVN.

ПРИМЕЧАНИЕ. Вы заметите, что корень хранилища жестко запрограммирован в командном файле. В результате, если вы извлекаете данные из репозиториев, у которых нет одинакового корня (например, один на локальном диске и один в сети), вам нужно будет использовать 2 пакетных файла и 2 соответствующие записи в разделе «Сценарии подключения» в TSVN. настройки. Для этого можно использовать 2 отдельных дерева рабочих копий - по одному для каждого корня хранилища.

Часть 3 - WebSVN

Errr, я не сделал этого: -)

Из чтения документов WebSVN кажется, что WebSVN на самом деле не интегрируется с сервером SVN, он просто ведет себя как любой другой клиент SVN, но представляет веб-интерфейс. Теоретически, он должен нормально работать с файловым хранилищем. Хотя я не пробовал.

11 голосов
/ 06 августа 2008

Этот ответ неполон и некорректен! Это работает только от TortoisSVN до Fogbugz, но не наоборот. Мне все еще нужно знать, как заставить его работать в обратном направлении от Fogbugz (как это было задумано), чтобы я мог видеть номер ревизии, в которой исправлена ​​ошибка из Fogbugz, глядя на ошибку.


Полезные URL-адреса

http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-propertypage.html

http://tortoisesvn.net/issuetracker_integration


Установите «Крючки»

  1. Зайдите в свою учетную запись fogbugz и выберите «Дополнения»> «Настройка интеграции управления исходным кодом»

  2. Загрузите "post-commit.bat" и файл VBScript для Subversion

  3. Создать каталог "hooks" в общем доступном месте (желательно без пробелов в пути к файлу)

  4. Поместите копию файлов в каталоги хуков

  5. Переименование файлов без расширения ".safe"

  6. Щелкните правой кнопкой мыши по любому каталогу.

  7. Выберите «TortoiseSVN> Настройки» (в контекстном меню на последнем шаге)

  8. Выберите «Скрипты крюка»

image

  1. Click "Add"

  2. Set the properties thus:

    • Hook Type: Post-Commit Hook

    • Working Copy Path: C:\\Projects (or whatever your root directory for all of your projects is. If you have multiple you will need to do this step for each one.)

    • Command Line To Execute: C:\\subversion\\hooks\\post-commit.bat (this needs to point to wherever you put your hooks directory from step 3)

    • I also selected the checkbox to Wait for the script to finish...

WARNING: Don't forget the double back-slash! "\\"

Click OK...

Adding a Hook Script

Примечание: скриншот отличается, следуйте тексту пути к файлу, НЕ скриншот ...

В этот момент может показаться, что вы можете нажать «Issue Tracker Integration» и выбрать Fogbugz. Нету. Он просто возвращает «Нет доступных поставщиков систем отслеживания проблем».

  1. Нажмите «ОК», чтобы закрыть все диалоговое окно настроек

Настройка свойств

  1. Еще раз щелкните правой кнопкой мыши по корневому каталогу извлеченного проект, с которым вы хотите работать (вам необходимо выполнить этот шаг «настройки свойств» для каждого проекта - см. «Перенос свойств между проектами» ниже)

  2. Выберите «TortoiseSVN> Свойства» (в контекстном меню) с последнего шага)

  3. Добавьте пять пар значений свойств, нажав «Новый ...» и вставив следующий в "Имя свойства" и «Стоимость имущества» соответственно:

bugtraq: метка BugzID:
bugtraq: сообщение BugzID: %% BUGID %%

bugtraq: число true

bugtraq: url http://[your fogbugz URL здесь] /default.asp?%BUGID%

bugtraq: warnifnoissue false

properties window adding new property

  1. Нажмите "ОК"

Передача изменений и просмотр журналов

Теперь, когда вы отправляете коммит, вы можете указать одну ошибку, к которой обращается коммит. Этот тип вынуждает вас совершать ошибки после исправления каждой ошибки ...

specifying bug addressed when commiting

Когда вы просматриваете журнал (щелкните правой кнопкой мыши по корню проекта, TortoiseSVN> show log), вы можете увидеть идентификатор ошибки, который соответствует каждой проверке (1), и вы можете щелкнуть номер идентификатора ошибки, чтобы перейти к fogbugz для просмотра эта ошибка автоматически, если вы смотрите на фактическое сообщение журнала. Довольно изящно!

image


Migrating Properties Between Projects

  1. Right click on a project that already has the proper Properties configuration

  2. Select "TortoiseSVN > Properties" (from the right-click menu from step 1)

  3. Highlight all of the desired properties

  4. Click "Export"

  5. Name the file after the property, and place in an easily accessible directory (I placed mine with the hooks files)

save properties dialogue

  1. Щелкните правой кнопкой мыши по корневому каталогу извлеченного проекта, для которого необходимо установить свойства.

  2. Нажмите «Импорт»

  3. Выберите файл, который вы экспортировали на шаге 4 выше

  4. Нажмите Открыть

2 голосов
/ 08 августа 2008

Почему вы не можете просто установить сервер Subversion? Если вы загрузите VisualSVN Server , который является бесплатным, вы получите http-сервер для своего исходного кода и, таким образом, сможете использовать сценарии FogBugz для их интеграции.

Причина, по которой я спрашиваю, состоит в том, что все сценарии и документация на данный момент предполагают, что у вас есть сервер, клиентские сценарии слишком новы для FogBugz, чтобы иметь шаблоны для них, так что вы в значительной степени оставлены на своих собственных устройствах. .

1 голос
/ 13 августа 2008

Проблема в том, что FogBugz будет ссылаться на веб-страницу, а file: /// и т. Д. Не является веб-страницей. Чтобы получить интеграцию двумя способами, вам нужен веб-сервер для вашего хранилища Subversion. Либо настройте Apache, либо что-то еще, что может правильно разместить эти вещи.

0 голосов
/ 08 августа 2008

Я не уверен, что следую за тобой. У вас есть репозитории в сети или на вашем диске C: \? Согласно двум вашим постам, у вас есть оба, или ни один, ни один из них или ...

Вы не можете заставить VisualSVN или Apache безопасно обслуживать репозитории из общего сетевого ресурса. Поскольку вы изначально сказали, что у вас есть репозитории на вашем диске C: \, вы получите совет. Если у вас другая настройка, вы должны сообщить нам об этом.

Если у вас есть репозитории на локальном жестком диске, я установил бы VisualSVN или интегрировал бы его в Apache. VisualSVN может нормально работать вместе с Apache, поэтому если вы идете по этому пути, вам нужно только установить его. Ваши существующие репозитории также могут быть просто скопированы в корневой каталог репозитория VisualSVN, и все готово.

Я не уверен, почему этот большой пост здесь помечен как неполный, так как он детализирует шаги, необходимые для настройки скрипта хука, чтобы проинформировать FogBugz о новых ревизиях, связанных с делами, что и должно быть неполным 1008 * сообщение говорит, что это не так. Это не работает?

...