Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Svn Subversion工作流:强制更新、构建、提交前测试_Svn_Tortoisesvn_Workflow_Pre Commit Hook - Fatal编程技术网

Svn Subversion工作流:强制更新、构建、提交前测试

Svn Subversion工作流:强制更新、构建、提交前测试,svn,tortoisesvn,workflow,pre-commit-hook,Svn,Tortoisesvn,Workflow,Pre Commit Hook,是否可以创建一个svn提交钩子来确认工作目录在提交之前已经被svn更新、构建和测试?我想至少确保在开发人员提交代码之前,代码已经用trunk中的最新代码进行了编译和测试。当开发人员修改了导致构建失败的不同源代码时,这将防止主干中的集成问题 另一种方法是,如果存在任何已更新(但在工作目录中没有必要修改)的文件,则防止提交 另一方面,如前一个问题所述,我的工作提交了二进制文件和源文件。这样做的一个原因是,如果提交时存在二进制文件冲突,那么您知道该二进制文件的源已发生更改,因此需要运行svn更新并重新

是否可以创建一个svn提交钩子来确认工作目录在提交之前已经被svn更新、构建和测试?我想至少确保在开发人员提交代码之前,代码已经用trunk中的最新代码进行了编译和测试。当开发人员修改了导致构建失败的不同源代码时,这将防止主干中的集成问题

另一种方法是,如果存在任何已更新(但在工作目录中没有必要修改)的文件,则防止提交


另一方面,如前一个问题所述,我的工作提交了二进制文件和源文件。这样做的一个原因是,如果提交时存在二进制文件冲突,那么您知道该二进制文件的源已发生更改,因此需要运行svn更新并重新编译。这也使得合并和更新成为一种痛苦。我意识到,如果开发人员在提交之前进行更新,则不太可能需要此检查。

SVN本身确保文件已更新。您不必确保人们正在签入更新文件

对于编译/测试部分,您可以使用TortoiseSVN拥有客户端钩子,它将编译代码并作为预提交钩子的一部分运行测试。需要注意的是,您不能真正确定每个开发人员都有hooks设置

你也可以看看类似的东西

以下是上述操作的步骤:

  • 提示提交消息
  • 向subversion添加新文件
  • 从subversion中删除丢失的文件
  • svn更新
  • 运行默认的rake任务(应该运行测试)
  • 检查cruisecontrol.rb以查看生成是否通过
  • 签入代码

  • 是,但svn将仅确保在提交之前已更新修改的文件。假设有一个二进制文件是由两个源文件构建的。两个开发人员都签出了相同的版本,但每个开发人员只修改一个源文件。如果他们在提交之前不进行更新和测试,他们就有可能签入代码,这些代码一起将失败。(例如,新版本的source2所依赖的source1中的一个函数被删除)这是一个边缘案例,显然他们在过去已经被咬过了。看看svn rake提交任务(以及您刚刚粘贴的步骤,谢谢!:),它看起来非常接近我在tortoisesvn中想要的。