将 Fogbugz 与 TortoiseSVN 集成,无需 URL/Subversion 后端

2024-03-18

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

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

如何集成 TortoiseSVN 和 Fogbugz?

编辑:插入斜体


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

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

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

  2. FogBugz 部分- 让 FogBugz 插入 SVN 信息和相应的链接

  3. WebSVN 部分- 确保 FogBugz 的链接确实有效

第 1 部分的说明在另一个答案中,尽管它实际上超出了要求。关于钩子的内容实际上是第 2 部分的内容,正如所指出的 - 它不能“开箱即用”

只是为了确认,我们正在考虑使用 TortoiseSVNWITHOUTSVN 服务器(即基于文件的存储库)

我使用 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 脚本实际上在这种情况下工作得很好,因此我们不需要修改它。

问题是批处理文件被编写为作为server钩子,但我们需要一个client hook.

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 界面。理论上来说,它应该可以与基于文件的存储库一起正常工作。不过我还没试过。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 Fogbugz 与 TortoiseSVN 集成,无需 URL/Subversion 后端 的相关文章

  • 如何在 svn 存储库中搜索任何修订版中是否存在文件

    如何搜索名为foo txt曾经提交到我的 svn 存储库 在任何修订版中 右键单击签出文件夹的根目录 gt TortoiseSVN gt 显示日志 您也可以在那里输入文件名
  • 如何正确创建可通过http访问的SVN存储库? (在 public_html 内)?

    情况是这样的 subversion 已安装在服务器中 并且我可以访问服务器中的共享帐户之一 不是 root 并且该共享托管帐户具有 SSH 访问权限 我想创建一个存储库 我可以在其中提交我正在处理的 PHP 文件 当我提交时 它应该可以在浏
  • 对于单个开发人员来说,是否值得从 SVN 转向 Git?

    自 2013 年起 此线程很可能已过时 当存储库主要由单个开发人员访问时 是否值得从 SVN 转到 GIT 我有几台用于开发的机器 主要不是用 C 开发 但我的存储库中混合了 VB VB Net PHP C C HTML Batch BAS
  • 是否可以将 RSA Archer 与多个 Active Directory 集成?

    是否可以将 RSA Archer 与多个 Active Directory 集成 一切皆有可能 只是你愿意付出多少努力 Option 1 推荐 RSA Archer v5 x 支持多种 LDAP 同步配置 因此 您可以拥有多个 AD 服务器
  • svn 1.7 错误 E200009 无法添加所有目标,因为某些目标已经版本化

    我对存储库进行了彻底的检查 然后每天我都有一个 hudson 工作来运行脚本来备份配置 脚本的一部分是添加 xml svn add xml svn warning W150002 data hudson config xml is alre
  • 以最小的努力在多台计算机之间同步代码

    我希望能够跨多台计算机 准确地说是 3 台 同步源代码和整个项目 我尝试过使用 git 但从来没有获得过无忧无虑的体验 也许是因为我从来没有投入很多精力 所以 我理想中想要的是 能够将文件夹及其所有子文件夹添加到 同步 列表 基本上 一旦我
  • 如何使用 TortoiseHg (Mercurial) 下载代码

    我正在尝试下载代码世界上最差的stackoverflow克隆 http code google com p theworldsworststackoverflowclone source checkout 起初我尝试过Tortoise SV
  • 用于获取有关 SVN 存储库信息的 Python 库?

    我正在寻找一个可以从 SVN 存储库中提取 至少 以下信息的库 not工作副本 修订号及其作者和提交消息 每个修订版中的更改 添加 删除 修改文件 有Python库可以做到这一点吗 对于作者和提交消息 我可以解析 db revprops 0
  • Spring Integration 中的 @Router 与注释(请求/回复)

    您能提供在 Spring Integration 中路由消息的任何示例吗 按有效负载消息 标头或类似以下内容进行过滤
  • 构建版本与修订号

    我有一个使用 subversion 进行源代码控制的 asp net C 应用程序 我的应用程序会在每个构建上自动增加其 AssembleVersion 和 AssemblyFileVersion 这就像一个魅力 并在网站的管理端显示构建号
  • 当文件标记为“历史记录已提交”时,svn diff

    我对已合并到工作目录中主干的分支进行了更改 svn stat 显示已更改文件的正确列表 但是 svn stat 输出在计划提交新添加到分支的每个文件的历史记录中包含一个 A src main java com java 当我运行 svn d
  • 无法将 Visual Studio 项目中的多个文件提交到 subversion

    几周以来 我在使用 Subversion 时遇到了一些问题 当我尝试从 Visual Studio 2017 项目提交文件时 有些文件无法提交到我的 Visual SVN 服务器 准确地说 项目文件夹中的所有文件 如 cs config c
  • 从java程序调用SVN命令

    我想从 java 程序调用 SVN 命令 update commit 有什么帮助吗 SVN 乌龟SVN 环境 java程序将在jBoss服务器内运行 从应用程序服务器内使用 GUI SVN 客户端是一个非常非常糟糕的主意 而Tortoise
  • 如何使用 SVN 通过网络提交单个文件?

    我可以查看整个svn使用以下命令存储库 svn co https myaccount svn beanstalkapp com myapp 但我无法弄清楚提交单个文件的命令 如果我改变成myapp page1 html 我怎样才能只签入那一
  • 清理 Subversion 存储库的最佳方法是什么?

    我有一个不断增长的存储库 其中包含十几个我使用 TortoiseSVN 维护的项目 因为我对此完全陌生 还不知道其来龙去脉 我保存存储库的空间有限 因此我想备份它 然后删除一些旧版本 例如 如果一个项目的版本为 50 我只想保留 50 49
  • 如何使用 SVN/Tortoise 从 Google Code 下载代码?

    我刚刚看到一个非常酷的 WPF Twitter 客户端 我认为它是由 Herding Code 播客开发的畜牧法 http www herdingcode com called Witty http code google com p wi
  • svn获取当前用户

    如何获取特定工作站上使用 svn 的当前用户 我可以使用 svn exe 可执行文件和一些开关来获取该信息吗 Thanks 在 Linux 中 您将在主目录中找到以下文件 subversion auth svn simple 在此文件中 您
  • 如何将 SVN 修订号注入 JAR 中?

    我希望我的 JAR WAR 应用程序知道其源代码的 SVN 修订号是多少 我希望稍后在网页底部等处为网络最终用户呈现此修订号 是否有任何现有的 Maven 插件可以自动化该过程 我认为该插件必须从以下位置收集信息svn并保存到某个文件 例如
  • Visual Studios 2015 中的“恢复 NuGet 包”没有执行任何操作

    我将解决方案从 SVN 拉入 Visual Studios 2015 代码中的一些 使用 引用出现错误 因此我尝试在右键单击 解决方案 中的解决方案时运行 恢复 NuGet 包 选项探索者 这没有任何作用 我必须手动进入 nuget 管理器
  • 如何在 Mac OS X 10.8 上安装 hg Convert 所需的 python subversion 绑定?

    我正在寻找一种解决方案 最好是干净且简单的 以启用hg convert使用 SVN 存储库在 OS X 10 8 上工作 目前 如果您尝试转换 SVN 存储库 您将得到一个could not load Subversion python b

随机推荐