我已经安装了 TotroiseSVN,并且大部分存储库都从 C:\subversion\ 签入和签出 以及一些从网络共享签入和签出的情况(当我最初发布这个问题时我忘记了这一点).

这意味着我本身没有“颠覆”服务器。

如何集成 TortoiseSVN 和 Fogbugz?

编辑:插入斜体

有帮助吗?

解决方案

我一直在调查这个问题并设法让它发挥作用。有一些小问题,但可以解决。

这个问题有 3 个不同的部分,如下所示:

  1. TortoiseSVN 部分 - 让 TortoiseSVN 在 svn 日志中插入 Bugid 和超链接

  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

为了获取 SVN 日志中的链接,只需创建 TortoiseSVN 属性即可。

以前的说明工作正常,为了方便起见,我将在此处引用它们:

配置属性

  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 bugID 的链接。如果这就是你想要的,你可以停在这里。

第 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 帐户并单击“附加”->“配置源代码管理集成”

  2. 下载 Subversion 的 VBScript 文件(不用担心批处理文件)

  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 (这需要指向您在步骤 3 中放置 hooks 目录的位置)

    • 勾选“等待脚本完成”

  10. 单击“确定”两次。

下次您提交并输入 Bugid 时,它将提交给 FogBugz。这些链接不起作用,但至少有修订信息,您可以在 TortoiseSVN 中手动查找日志。

笔记:您会注意到存储库根被硬编码到批处理文件中。因此,如果您从不具有相同根的存储库中签出(例如一个在本地驱动器上,一个在网络上),那么您需要使用 2 个批处理文件和 TSVN 设置中的 Hook 脚本下的 2 个相应条目。实现这一点的方法是拥有 2 个独立的工作副本树 - 每个存储库根目录都有一个工作副本树。

第 3 部分 - WebSVN

呃,我还没有这样做:-)

通过阅读 WebSVN 文档,似乎 WebSVN 实际上并未与 SVN 服务器集成,它只是像任何其他 SVN 客户端一样运行,但提供了一个 Web 界面。理论上来说,它应该可以与基于文件的存储库一起正常工作。不过我还没试过。

其他提示

这个答案是不完整且有缺陷的!它仅适用于从 TortoisSVN 到 Fogbugz,反之则不然。我仍然需要知道如何让它从 Fogbugz 向后工作(就像它的设计那样),以便在查看错误时可以从 Fogbugz 看到错误解决的修订号。


有用的网址

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

http://tortoisesvn.net/issuetracker_integration


设置“挂钩”

  1. 进入您的fogbugz帐户并单击“附加”>“配置源代码管理集成”

  2. 下载“post-commit.bat”和 Subversion 的 VBScript 文件

  3. 在常见的易于访问的位置创建一个“hooks”目录(最好文件路径中没有空格)

  4. 将文件的副本放置在 hooks 目录中

  5. 重命名不带“.safe”扩展名的文件

  6. 右键单击任意目录。

  7. 选择“TortoiseSVN > 设置”(在上一步的右键菜单中)

  8. 选择“挂钩脚本”

  1. 点击“添加”

  2. 如此设置属性:

    • 挂钩类型:提交后挂钩

    • 工作副本路径:C:\\Projects(或者所有项目的根目录)。如果您有多个,则需要为每个都执行此步骤。)

    • 命令行执行:C:\\subversion\\hooks\\post-commit.bat(这需要指向您在步骤 3 中放置 hooks 目录的位置)

    • 我还选中了等待脚本完成的复选框...

警告:不要忘记双反斜杠!“\\”

单击“确定”...

Adding a Hook Script

笔记:屏幕截图不同,请遵循文件路径的文本,而不是屏幕截图...

此时,您似乎可以单击“Issue Tracker Integration”并选择 Fogbugz。没有。它只是返回“没有可用的问题跟踪器提供商”。

  1. 单击“确定”以关闭整个设置对话窗口

配置属性

  1. 再一次,右键单击您要使用的已支票项目的根目录(您需要为每个项目进行此“配置属性”步骤 - 请参阅下面的“迁移属性”)

  2. 选择“ Tortoisesvn>属性”(在最后一步的右键单击菜单中)

  3. 通过单击“ new ...”并将以下内容分别插入“属性名称”和“属性值”来添加五个属性值对:

bugtraq:标签 BugzID:
bugtraq:消息 BugzID:%%错误%%

bugtraq:数字正确

bugtraq:网址 http://[你的 fogbugz url此处]/default.asp?%Bugid%

bugtraq:warnifnoissue false

properties window adding new property

  1. 点击“确定”

提交更改并查看日志

现在,当您提交时,您可以指定该提交要解决的一个错误。这会迫使你在修复每个错误后做出承诺......

specifying bug addressed when commiting

查看日志时(右键项目根目录,TortoiseSVN>显示日志)可以看到每次检查对应的bug id(1),并且可以点击bug id号带到fogbugz自动查看该bug如果您正在查看实际的日志消息。相当漂亮!


在项目之间迁移属性

  1. 右键单击已具有正确属性配置的项目

  2. 选择“TortoiseSVN > 属性”(从步骤 1 的右键菜单中)

  3. 突出显示所有所需的属性

  4. 点击“导出”

  5. 以属性命名文件,并将其放置在易于访问的目录中(我将我的文件与 hooks 文件一起放置)

save properties dialogue

  1. 右键单击需要设置属性的签出项目的根目录。

  2. 点击“导入”

  3. 选择您在上面步骤 4 中导出的文件

  4. 单击“打开”

为什么不能简单地安装一个颠覆服务器?如果你下载 视觉SVN服务器, ,这是免费的,您可以获得源代码的 http 服务器,因此可以使用 FogBugz 脚本来集成两者。

我问的原因是因为到目前为止所有脚本和文档都假设您拥有服务器,客户端脚本对于 FogBugz 来说太新了,无法为其提供模板,因此您几乎只能依靠自己的设备来完成。

问题是 FogBugz 将链接到网页,而 file:///etc 不是网页。要以两种方式进行集成,您的 Subversion 存储库需要一个 Web 服务器。设置 Apache 或其他可以以正确方式托管这些内容的东西。

我不确定我是否跟随你。您的网络或 C:\ 驱动器上是否有存储库?根据你的两篇帖子,你两者都有,或者都没有,或者其中之一,或者......

您无法让 VisualSVN 或 Apache 从网络共享安全地提供存储库。由于您最初说您的 C:\ 驱动器上有存储库,因此您会得到建议。如果您有不同的设置,则需要告诉我们。

如果您的本地硬盘上有存储库,我会安装 VisualSVN,或将其集成到 Apache 中。VisualSVN 可以与 Apache 一起正常运行,因此如果您选择这种方式,则只需安装它即可。您也可以将现有存储库复制到 VisualSVN 的存储库根目录中,然后即可启动并运行。

我不确定为什么这里的这篇大文章被标记为不完整,因为它详细介绍了设置挂钩脚本所需的步骤,以通知 FogBugz 有关与案例相关的新修订,这应该是 不完整的 消息说不行。那不行吗?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top