Вопрос

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

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

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

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

Это было полезно?

Решение

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

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

  1. Часть TortoiseSVN - заставить TortoiseSVN вставить Bugid и гиперссылку в журнал 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 — ТуманБугз

Чтобы это работало, нам нужно настроить сценарии перехвата.По сути, пакетный файл вызывается после каждого коммита, а это, в свою очередь, вызывает сценарий 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. Сохраните мою версию командного файла в каталоге ваших хуков, как 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.Это можно сделать с помощью двух отдельных деревьев рабочих копий — по одному для каждого корня репозитория.

Часть 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. Зайдите в свою учетную запись Fogbugz и нажмите «Дополнительно» > «Настроить интеграцию системы управления версиями».

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

  3. Создайте каталог «крючков» в обычном, легкодоступном месте (желательно без пробелов в пути к файлу).

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

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

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

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

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

  1. Нажмите «Добавить»

  2. Установите свойства таким образом:

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

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

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

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

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

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

Adding a Hook Script

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

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

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

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

  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. Выберите «TortoiseSvn> свойства» (в меню правого щелчка с последнего шага)

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

bugtraq:label Идентификатор ошибки:
bugtraq:сообщение Идентификатор ошибки:%%БУГИД%%

bugtraq:число верно

ошибка: URL-адрес http://[ваш URL Fogbugz здесь]/Default.asp?%BUGID%

bugtraq:warnifnoissue false

properties window adding new property

  1. Нажмите «ОК».

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

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

specifying bug addressed when commiting

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


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

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

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

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

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

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

save properties dialogue

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

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

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top