关于svn:在没有URL / Subversion后端的情况下将Fogbugz与TortoiseSVN集成

Integrating Fogbugz with TortoiseSVN with no URL/Subversion backend

我已经安装了TotroiseSVN,并且我的大多数存储库都从C:\\\\ subversion \\\\签入和签出,还有几个从网络共享中签入和签出(我最初发布此问题时就忘记了这一点。 )。

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

如何集成TortoiseSVN和Fogbugz?

编辑:插入斜体


我一直在调查此问题,并设法使其正常运行。有几个小问题,但是可以解决。

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

  • TortoiseSVN部分-使TortoiseSVN在svn日志中插入Bugid和超链接

  • FogBugz部分-使FogBugz插入SVN信息和相应的链接

  • WebSVN部分-确保来自FogBugz的链接真正起作用

  • 第1部分的说明在另一个答案中,尽管它实际上做了超出要求的内容。有关钩子的内容实际上是针对第2部分的,正如所指出的那样-它"开箱即用"不起作用。

    请确认一下,我们正在研究使用不带SVN服务器(即基于文件的存储库)的TortoiseSVN

    我正在使用UNC路径访问存储库,但它也适用于本地驱动器或映射驱动器。

    所有这一切都适用于TortoiseSVN v1.5.3和SVN Server v1.5.2(您需要安装SVN Server,因为第2部分需要服务器软件包中的svnlook.exe。您实际上没有将其配置为作为SVN服务器)甚至可以只从另一台计算机复制svnlook.exe并将其放在路径中的某个位置。

    第1部分-TortoiseSVN

    创建TortoiseSVN属性是获得SVN日志中的链接所必需的。

    以前的说明可以正常工作,为方便起见,在这里引用它们:

    Configure the Properties

  • Right click on the root directory of the checked out project you want to work with.

  • Select"TortoiseSVN -> Properties"

  • Add five property value pairs by clicking"New..." and inserting the following in"Property Name" and"Property Value" respectively: (make sure you tick"Apply property recursively" for each one)

    1
    2
    3
    4
    5
    bugtraq:label    BugzID:
    bugtraq:message  BugzID: %BUGID%
    bugtraq:number   true
    bugtraq:url      http://[your fogbugz URL here]/default.asp?%BUGID%
    bugtraq:warnifnoissue   false
  • Click"OK"

  • 正如Jeff所说,您需要为每个工作副本执行此操作,因此请遵循他的指示来迁移属性。

    就是这样。现在,当您提交时,TortoiseSVN将添加一个链接到相应的FogBugz bugID。如果只需要这些,您可以在这里停止。

    第2部分-FogBugz

    为此,我们需要设置钩子脚本。基本上,每次提交后都会调用批处理文件,然后依次调用VBS脚本,它将脚本提交到FogBugz。在这种情况下,VBS脚本实际上可以正常工作,因此我们不需要对其进行修改。

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

    SVN服务器使用以下参数调用提交后挂钩:

    1
    <repository-path> <revision>

    TortoiseSVN使用以下参数调用提交后挂钩:

    1
     <depth> <messagefile> <revision> <error> <working-copy-path>

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

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

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

    我将查看是否可以解决此问题,如果可以,我会在此发布。

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

    您需要设置挂钩和存储库目录以匹配您的设置。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    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帐户,然后单击"其他"->"配置源代码控制集成"

  • 下载用于Subversion的VBScript文件(不必理会批处理文件)

  • 创建一个文件夹来存储钩子脚本。我将其放置在与存储库相同的文件夹中。例如。 \\\\myserver\\svn\\hooks\\

  • 重命名VBscript以删除文件名末尾的.safe

  • 将我的批处理文件版本保存为您的hooks目录中,作为post-commit-tsvn.bat

  • 右键单击任何目录。

  • 选择" TortoiseSVN>设置"(在上一步的右键菜单中)

  • 选择"挂钩脚本"

  • 单击"添加"并按如下所示设置属性:

    • 挂钩类型:投放后挂钩

    • 工作副本路径:C:\\Projects(或所有项目的根目录)。

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

    • 勾选"等待脚本完成"

  • 单击"确定"两次。

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

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

    第3部分-WebSVN

    Errr,我还没做过:-)

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


    此答案不完整且有缺陷!它仅适用于TortoisSVN到Fogbugz,反之则不行。我仍然需要知道如何使它从Fogbugz反向运行(就像它的设计那样),以便我可以在查看bug时看到Fogbugz解决的bug的修订号。

    有用的网址

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

    http://tortoisesvn.net/issuetracker_integration

    设置"挂钩"

  • 进入您的fogbugz帐户,然后单击"其他">"配置源代码控制集成"

  • 下载" post-commit.bat"和Subversion的VBScript文件

  • 在易于访问的公共位置(最好在文件路径中没有空格)中创建"挂钩"目录。

  • 将文件的副本放置在钩子目录中

  • 重命名不带" .safe"扩展名的文件

  • 右键单击任何目录。

  • 选择" TortoiseSVN>设置"(在上一步的右键菜单中)

  • 选择"挂钩脚本"

  • 点击"添加"

  • 因此设置属性:

    • 挂钩类型:投放后挂钩

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

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

    • 我还选择了复选框以等待脚本完成...

  • 警告:别忘了双反斜杠!" "

    单击确定...

    Adding

  • 点击"确定"关闭整个
    设置对话框窗口
  • 配置属性

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

  • 选择" TortoiseSVN>属性"(在右键菜单中
    从最后一步开始)

  • 通过单击"新建..."并插入两个属性值对,以添加五个属性值对
    然后在"属性名称"中
    "属性值"分别为:

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

    bugtraq:number true

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

    bugtraq:warnifnoissue false

    properties

  • 点击"确定"
  • 提交更改并查看日志

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

    specifying

    当您查看日志时(右键单击项目的根目录,TortoiseSVN>显示日志),您可以看到每个检查对应的错误ID(1),并且您可以单击要带到fogbugz的错误ID号以进行查看。如果您正在查看实际的日志消息,则该错误会自动出现。很漂亮!

    在项目之间迁移属性

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

  • 选择" TortoiseSVN>属性"(从第1步的右键菜单中选择)

  • 突出显示所有所需的属性

  • 点击"导出"

  • 在属性后命名文件,并放置在易于访问的目录中(我将我的hooks文件放在其中)

  • save

  • 右键单击需要设置属性的已检出项目的根目录。

  • 点击"导入"

  • 选择在上面的步骤4中导出的文件

  • 单击打开


  • 为什么不能简单地安装Subversion服务器?如果您免费下载VisualSVN Server,则会获得一个http服务器作为源代码,因此可以使用FogBugz脚本将二者集成在一起。

    我要问的原因是因为到目前为止所有脚本和文档都假设您拥有服务器,因此对于FogBugz而言,客户端脚本太新了,因此无法为其提供模板,因此您几乎只能在该设备上使用自己的设备了。 。


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


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

    您无法使VisualSVN或Apache从网络共享安全地提供存储库。既然您最初说过,您的C:\\\\驱动器上有存储库,那就是您所需要的建议。如果您使用其他设置,则需要告诉我们。

    如果您的本地硬盘上有存储库,那么我将安装VisualSVN或将其集成到Apache中。 VisualSVN可以与Apache一起很好地运行,因此,如果按照这种方式运行,则只需安装它即可。您也可以将现有的存储库复制到VisualSVN的存储库根目录中,并开始运行。

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


    推荐阅读