我已经安装了TotroiseSVN并且我的大多数存储库都是从C:\\ subversion \\ 检查进出的,还有一对来自网络共享的进出检查(我最初发布这个问题时忘记了这一点)

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

我如何整合TortoiseSVN和Fogbugz?

编辑:插入斜体

===============>>#1 票数:18 已采纳

我一直在研究这个问题,并设法让它运作起来。 有一些小问题,但它们可以解决。

这个问题有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

只需创建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. 点击“确定”

正如Jeff所说,您需要为每个工作副本执行此操作,因此请按照他的说明迁移属性。

而已。 TortoiseSVN现在将在您提交时添加指向相应FogBugz bugID的链接。 如果这就是你想要的,你可以在这里停下来。

第2部分 - FogBugz

为此,我们需要设置钩子脚本。 基本上每次提交后都会调用批处理文件,而这又会调用提交给FogBugz的VBS脚本。 VBS脚本在这种情况下实际上工作正常,所以我们不需要修改它。

问题是批处理文件被编写为服务器挂钩,但我们需要一个客户端挂钩。

SVN服务器使用以下参数调用post-commit钩子:

<repository-path> <revision>

TortoiseSVN使用以下参数调用post-commit钩子:

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

这就是为什么它不起作用 - 参数是错误的。 我们需要修改批处理文件,以便将正确的参数传递给VBS脚本。

您会注意到TSVN没有通过存储库路径,这是一个问题,但它确实在以下情况下工作:

  • 存储库名称和工作副本名称相同
  • 您在工作副本的根目录下进行提交,而不是子文件夹。

我要看看我是否可以解决这个问题,如果我这样做,我会回复这里。

这是我修改后的批处理文件,它可以正常工作(请原谅过多的评论...)

您需要设置hook和repository目录以匹配您的设置。

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 (或所有C:\\Projects的根目录。)

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

    • 勾选“等待脚本完成”

  10. 单击确定两次。

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

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

第3部分 - WebSVN

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

通过阅读WebSVN文档,似乎WebSVN实际上并没有与SVN服务器集成,它只是表现得像任何其他SVN客户端,但呈现一个Web界面。 从理论上讲,它应该可以与基于文件的存储库一起使用。 我没有尝试过。

===============>>#2 票数:11

这个答案是不完整和有缺陷的! 它只适用于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”和Subversion的VBScript文件

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

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

  5. 重命名没有“.safe”扩展名的文件

  6. 右键单击任何目录。

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

  8. 选择“钩子脚本”

  1. 点击“添加”

  2. 因此设置属性:

    • 钩子类型:提交后挂钩

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

    • 要执行的命令行:C:\\\\ subversion \\\\ hooks \\\\ post-commit.bat(这需要指向从第3步开始放置hooks目录的位置)

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

警告:不要忘记双背斜线! “\\\\”

单击确定...

添加钩子脚本

注意:屏幕截图不同,请按照文件路径的文字,而不是屏幕截图...

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

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

配置属性

  1. 再次,右键单击要使用的已检出项目的根目录(您需要为每个项目执行“配置属性”步骤 - 请参阅下面的“在项目之间迁移属性”)

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

  3. 单击“新建...”并分别在“属性名称”和“属性值”中插入以下内容,添加五个属性值对:

bugtraq:标签BugzID:
bugtraq:消息BugzID:%% BUGID %%

bugtraq:数字为真

bugtraq:url http:// [你的雾霾网址] /default.asp?%BUGID%

bugtraq:warnifnoissue false

属性窗口添加新属性

  1. 点击“确定”

提交更改并查看日志

现在,当您提交时,您可以指定提交所解决的一个错误。 这种强制你在修复每个bug后提交...

指定提交时解决的bug

当您查看日志(右键单击项目的根目录,TortoiseSVN>显示日志)时,您可以看到每个检查对应于(1)的错误ID,您可以单击错误ID编号,以便将其带到fogbugz以自动查看该错误如果你正在查看实际的日志消息。 太漂亮了!


在项目之间迁移属性

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

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

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

  4. 点击“导出”

  5. 在属性后面命名文件,并放在一个易于访问的目录中(我用挂钩文件放在我的目录中)

保存属性对话框

  1. 右键单击需要为其设置属性的已检出项目的根目录。

  2. 点击“导入”

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

  4. 单击打开

===============>>#3 票数:2

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

我之所以要问的原因是因为到目前为止所有的脚本和文档都假定你有服务器,客户端脚本对于FogBugz来说太新了,不能为它们提供模板,所以你几乎要留在自己的设备上。

===============>>#4 票数:1

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

===============>>#5 票数:0

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

您无法让VisualSVN或Apache从网络共享安全地提供存储库。 既然你最初说你在C:\\驱动器上有了存储库,那就是你得到的建议。 如果您有不同的设置,则需要告诉我们。

如果你的本地硬盘上有存储库,我会安装VisualSVN,或者将它集成到Apache中。 VisualSVN可以和Apache一起运行,所以如果你走这条路,你只需要安装它。 您现有的存储库也可以复制到VisualSVN的存储库根目录中,并且您已启动并运行。

我不确定为什么这里的大帖子被标记为不完整,因为它详细说明了设置一个钩子脚本以告知FogBugz关于与案例相关的新修订的必要步骤,这应该是不完整的消息说它不做的。 这不起作用吗?

  ask by cmcculloh translate from so

未解决问题?本站智能推荐: