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

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

Это означает, что у меня нет «подрывного» сервера как такового.

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

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

Ответов (5)

Решение

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

Эта проблема состоит из трех частей:

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

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

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

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

Просто чтобы подтвердить, мы рассматриваем использование 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 вызывает ловушку после фиксации со следующими параметрами:

<repository-path> <revision>

TortoiseSVN вызывает ловушку после фиксации со следующими параметрами:

<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 и нажмите Extras -> Configure Source Control Integration.

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

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

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

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

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

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

  8. Выберите "Сценарии перехвата".

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

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

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

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

    • Установите флажок «Дождитесь завершения сценария».

  10. Дважды щелкните ОК.

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

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

Часть 3 - WebSVN

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

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

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


Полезные URL

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

http://tortoisesvn.net/issuetracker_integration


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

  1. Go into your fogbugz account and click Extras > Configure Source Control Integration

  2. Download "post-commit.bat" and the VBScript file for Subversion

  3. Create a "hooks" directory in a common easily accessed location (preferably with no spaces in the file path)

  4. Place a copy of the files in the hooks directories

  5. Rename the files without the ".safe" extension

  6. Right click on any directory.

  7. Select "TortoiseSVN > Settings" (in the right click menu from the last step)

  8. Select "Hook Scripts"

  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...

Добавление скрипта перехвата

Note: the screenshot is different, follow the text for the file paths, NOT the screenshot...

At this point it would seem you could click "Issue Tracker Integration" and select Fogbugz. nope. It just returns "There are no issue-tracker providers available".

  1. Click "OK" to close the whole settings dialogue window

Configure the Properties

  1. Once again, Right click on the root directory of the checked out project you want to work with (you need to do this "configure the properties" step for each project -- See "Migrating Properties Between Projects" below)

  2. Select "TortoiseSVN > Properties" (in the right click menu from the last step)

  3. Add five property value pairs by clicking "New..." and inserting the following in "Property Name" and "Property Value" respectively:

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

bugtraq:number true

bugtraq:url http://[your fogbugz URL here]/default.asp?%BUGID%

bugtraq:warnifnoissue false

окно свойств добавление новой собственности

  1. Click "OK"

Commiting Changes and Viewing the Logs

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

указание исправляемой ошибки при фиксации

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


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

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

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

  3. Выделите все желаемые свойства

  4. Нажмите «Экспорт».

  5. Назовите файл после свойства и поместите в легкодоступный каталог (я поместил свой с файлами хуков).

диалог сохранения свойств

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

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

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

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

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

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

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

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

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

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

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