我已安装TortoiseSVN,并且有大部分的代码库从C:\subversion\检入和检出,还有几个从网络共享检入和检出(当我最初发布此问题时,我忘记了这一点)。
这意味着我没有一个“subversion”服务器。
我该如何集成TortoiseSVN和Fogbugz?
编辑:插入斜体
我已安装TortoiseSVN,并且有大部分的代码库从C:\subversion\检入和检出,还有几个从网络共享检入和检出(当我最初发布此问题时,我忘记了这一点)。
这意味着我没有一个“subversion”服务器。
我该如何集成TortoiseSVN和Fogbugz?
编辑:插入斜体
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)
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链接。如果这就是你想要的,你可以停止了。
为了使其工作,我们需要设置挂钩脚本。基本上,批处理文件在每次提交后被调用,并调用VBS脚本来进行向FogBugz的提交。VBS脚本在这种情况下实际上运行得很好,因此我们不需要修改它。
问题在于批处理文件被编写为一个服务器挂钩,但我们需要一个客户端挂钩。
SVN服务器使用以下参数调用post-commit挂钩:
<repository-path> <revision>
TortoiseSVN会使用以下参数调用post-commit钩子:
<affected-files> <depth> <messagefile> <revision> <error> <working-copy-path>
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账户并点击Extras -> Configure Source Control Integration。
下载Subversion的VBScript文件(不需要批处理文件)。
创建一个文件夹来存储钩子脚本。我把它放在与我的代码库相同的文件夹中,例如\\myserver\svn\hooks\
。
重命名VBScript文件以删除文件名末尾的.safe
。
将我的批处理文件版本保存在您的hooks目录中,名称为post-commit-tsvn.bat
。
右键单击任何目录。
选择“TortoiseSVN > 设置”(从上一步的右键菜单中选择)。
选择“Hook Scripts”。
单击“添加”并设置属性如下:
钩子类型:Post-Commit Hook
工作副本路径:C:\Projects
(或者您所有项目的根目录所在的位置)。
要执行的命令行:\\myserver\svn\hooks\post-commit-tsvn.bat
(这需要指向您在第3步中放置钩子目录的位置)。
选中“等待脚本完成”。
点击两次“确定”。
下次提交并输入Bugid时,它将被提交到FogBugz。链接可能无法正常工作,但至少修订信息已经存在,您可以手动查找TortoiseSVN日志。
注意:您会注意到代码库根目录是硬编码到批处理文件中的。因此,如果您从没有相同根目录的代码库中检出(例如,一个在本地驱动器上,另一个在网络上),则需要使用2个批处理文件和2个对应的TSVN设置中的条目。解决此问题的方法是为每个代码库根目录拥有2个单独的工作副本树。
额,我还没有做过这个 :-)。
从阅读WebSVN文档来看,WebSVN似乎并不实际与SVN服务器集成,它只像任何其他SVN客户端一样呈现Web界面。理论上,它应该可以与基于文件的代码库很好地配合使用。不过我没有尝试过。
http://tortoisesvn.net/docs/release/TortoiseSVN_zh/tsvn-dug-propertypage.html
http://tortoisesvn.net/issuetracker_integration
进入您的fogbugz帐户,单击Extras > 配置源代码控制集成
下载“post-commit.bat”和Subversion的VBScript文件
创建一个位于常用易于访问的位置(最好不要在文件路径中使用空格)的“hooks”目录
将文件的副本放置在hooks目录中
取消文件的“.safe”扩展名
在任何目录上单击右键。
选择“TortoiseSVN > 设置”(从上一步中的右键菜单中选择)
选择“钩子脚本”
单击“添加”
设置属性如下:
钩子类型:后提交Hook
工作副本路径:C:\\Projects(或您所有项目的根目录,如果有多个项目,则需要针对每个项目执行此步骤。)
要执行的命令行:C:\\subversion\\hooks\\post-commit.bat(这需要指向您从第3步中放置挂钩目录的位置)
我还选择了“等待脚本完成...”的复选框
警告:不要忘记双反斜杠!"\\\\"
点击确定...
注意:截图是不同的,请按照文本中的文件路径进行操作,而不是截图...
此时,似乎可以单击“问题跟踪器集成”并选择Fogbugz。但并非如此。它只返回“没有可用的问题跟踪器提供程序”。
再次右键单击要使用的已检出项目的根目录(必须为每个项目执行此“配置属性”步骤-请参见下面的“在项目之间迁移属性”)
选择“TortoiseSVN > 属性”(在上一步的右键单击菜单中)
通过单击“新建...”并将以下内容插入到“属性名称”和“属性值”中,添加五个属性值对:
bugtraq:label BugzID:
bugtraq:message BugzID:%%BUGID%%bugtraq:number true
bugtraq:url http://[your fogbugz URL here]/default.asp?%BUGID%
bugtraq:warnifnoissue false
现在,在提交代码时,你可以指定该次提交所解决的一个 bug。这会强制你在修复每个 bug 后进行提交...
当你查看日志(右键单击项目根目录,TortoiseSVN > 显示日志)时,你可以看到每次提交对应的 bug id(1),如果你正在查看实际的日志消息,你可以单击 bug id 号码自动转到 fogbugz 查看该 bug。非常方便!
右键单击已经具有正确属性配置的项目
从步骤 1 的右键菜单中选择“TortoiseSVN > 属性”
选中所有期望的属性
点击“导出”
以该属性命名文件,并放置在易于访问的目录中(我是将其放置在 hooks 文件夹中)
右键单击需要设置属性的已检出项目的根目录
点击“导入”
选择步骤 4 中导出的文件
点击“打开”
我不确定我是否理解你的意思。你的存储库是在网络上还是在你的C:\驱动器上?根据你的两篇帖子,你既有,也没有,或者只有其中一个...
你不能让VisualSVN或Apache安全地从网络共享中提供存储库。由于你最初说你的存储库在C:\驱动器上,所以你得到了这方面的建议。如果你有不同的设置,你需要告诉我们。
如果你的存储库在本地硬盘上,我会安装VisualSVN,或将其集成到Apache中。VisualSVN可以很好地与Apache一起运行,因此如果你选择这条路,你只需要安装它。你现有的存储库也可以直接复制到VisualSVN的存储库根目录中,然后就可以运行了。
我不确定为什么这篇大文章被标记为不完整,因为它详细说明了设置钩子脚本以通知FogBugz有关与案例相关联的新修订所需的步骤,这应该是“不完整”消息所说的内容。这个功能不起作用吗?