Я исследовал эту проблему и сумел заставить ее работать. Есть пара небольших проблем, но они могут быть обойдены.
Эта проблема состоит из 3 отдельных частей:
Часть TortoiseSVN - получение TortoiseSVN для вставки ошибки и гиперссылки в журнал svn
Часть FogBugz - получение FogBugz для вставки информации SVN и соответствующих ссылок
Часть 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.
Предыдущие инструкции работают нормально, я приведу их здесь для удобства:
Настройка свойств
Щелкните правой кнопкой мыши корневой каталог извлеченного проекта, с которым вы хотите работать.
Выберите «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 теперь добавит ссылку на соответствующий идентификатор ошибки 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 \
Зайдите в свою учетную запись FogBugz и нажмите «Дополнения» -> «Настройка интеграции управления исходным кодом»
Загрузите файл VBScript для Subversion (не связывайтесь с командным файлом)
Создайте папку для хранения скриптов хуков. Я положил его в ту же папку, что и мои репозитории. например. \\myserver\svn\hooks\
Переименуйте VBscript, чтобы удалить .safe
в конце имени файла.
Сохраните мою версию командного файла в вашем каталоге hooks, как post-commit-tsvn.bat
Щелкните правой кнопкой мыши по любому каталогу.
Выберите «TortoiseSVN> Настройки» (в контекстном меню последнего шага)
Выберите «Скрипты крюка»
Нажмите «Добавить» и установите свойства следующим образом:
Тип крючка: крючок после фиксации
Путь рабочей копии: C:\Projects
(или каков ваш корневой каталог для всех ваших проектов.)
Командная строка для выполнения: \\myserver\svn\hooks\post-commit-tsvn.bat
(это должно указывать на то место, куда вы поместили каталог hooks на шаге 3)
Галочка "Дождаться окончания сценария"
Нажмите OK дважды.
В следующий раз, когда вы совершите коммит и введете Bugid, он будет отправлен в FogBugz. Ссылки не будут работать, но, по крайней мере, есть информация о редакции, и вы можете вручную просмотреть журнал в TortoiseSVN.
ПРИМЕЧАНИЕ. Вы заметите, что корень хранилища жестко запрограммирован в командном файле. В результате, если вы извлекаете данные из репозиториев, у которых нет одинакового корня (например, один на локальном диске и один в сети), вам нужно будет использовать 2 пакетных файла и 2 соответствующие записи в разделе «Сценарии подключения» в TSVN. настройки. Для этого можно использовать 2 отдельных дерева рабочих копий - по одному для каждого корня хранилища.
Часть 3 - WebSVN
Errr, я не сделал этого: -)
Из чтения документов WebSVN кажется, что WebSVN на самом деле не интегрируется с сервером SVN, он просто ведет себя как любой другой клиент SVN, но представляет веб-интерфейс. Теоретически, он должен нормально работать с файловым хранилищем. Хотя я не пробовал.