Интеграция Fogbugz с TortoiseSVN без поддержки URL/Subversion

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

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

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

Изменить: вставленный курсив

Ответы

Ответ 1

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

В этой задаче есть три различных части:

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

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

  • Часть WebSVN - убедитесь, что ссылки из FogBugz действительно работают

Инструкции для части 1 приведены в другом ответе, хотя на самом деле это больше, чем требуется. Материал о крючках на самом деле для части 2, и, как указано, это не работает "из коробки"

Просто для подтверждения, мы рассматриваем использование TortoiseSVN БЕЗ сервера SVN (то есть файловые репозитории)

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

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

Часть 1 - TortoiseSVN

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

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

Настроить свойства

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

  • Выберите "TortoiseSVN → Свойства"

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

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

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

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

Часть 2 - FogBugz

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

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

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

<repository-path> <revision>

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

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

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

Вы заметите, что 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 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\

  • Войдите в свою учетную запись FogBugz и нажмите "Дополнительно" → "Настройка интеграции управления версиями"

  • Загрузите файл VBScript для Subversion (не докучайте командный файл)

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

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

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

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

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

  • Выберите "Hook Scripts"

  • Нажмите "Добавить" и установите свойства следующим образом:

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

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

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

    • Отметьте "Подождите, пока закончится script"

  • Дважды нажмите OK.

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

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

Часть 3 - WebSVN

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

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

Ответ 2

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


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

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

http://tortoisesvn.net/issuetracker_integration


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

  • Войдите в свою учетную запись fogbugz и нажмите "Дополнительно" > "Настроить интеграцию управления версиями"

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

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

  • Поместите копию файлов в каталоги крючков

  • Переименуйте файлы без расширения .safe

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

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

  • Выберите "Hook Scripts"

http://www.chomperstomp.com/img/tortoiseSVNSettings.png

  • Нажмите "Добавить"

  • Задайте свойства таким образом:

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

    • Рабочий путь копирования: C:\\Projects (или любой другой корневой каталог для всех ваших проектов. Если у вас есть несколько, вам нужно будет сделать этот шаг для каждого из них.)

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

    • Я также установил флажок для ожидания завершения script...

ПРЕДУПРЕЖДЕНИЕ. Не забывайте двойную обратную косую черту! "\\"

Нажмите OK...

Adding a Hook Script

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

В этот момент, похоже, вы могли бы нажать "Интеграция отслеживания ошибок" и выбрать Fogbugz. Неа. Он просто возвращает "Нет доступных поставщиков проблемных трекеров".

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

Настроить свойства

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

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

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

bugtraq: label BugzID:
bugtraq: message BugzID: %% BUGID %%

bugtraq: число true

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

bugtraq: warnifnoissue false

properties windowadding new property

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

Выполнение изменений и просмотр журналов

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

specifying bug addressed when commiting

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

http://www.chomperstomp.com/img/viewLog.png


Миграция свойств между проектами

  • Щелкните правой кнопкой мыши на проекте, который уже имеет соответствующую конфигурацию свойств

  • Выберите "TortoiseSVN > Properties" (из меню правой кнопки мыши с шага 1)

  • Выделите все требуемые свойства

  • Нажмите "Экспорт"

  • Назовите файл после свойства и поместите в легкодоступный каталог (я поместил мои файлы с крючками)

save properties dialogue

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

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

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

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

Ответ 3

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

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

Ответ 4

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

Ответ 5

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

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

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

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