Svn 保护代码库不被破坏或错误提交的方法?

Svn 保护代码库不被破坏或错误提交的方法?,svn,unit-testing,git,version-control,cvs,Svn,Unit Testing,Git,Version Control,Cvs,您或您已经尝试过如何保护您的源代码存储库不受引入bug或破坏构建的提交的影响?似乎在提交时强制进行回归测试可以在很大程度上防止bug蔓延到由多个开发人员进行的项目中。然而,大多数常见的代码版本控制工具在这方面不提供任何功能 这里有一种方法我已经尝试过了。我创建了subversion pre-commit钩子来生成项目的一个副本,其中合并了挂起的提交更改,然后它在此副本上运行语法检查和单元测试。若任何测试失败,提交将被拒绝,并带有语法检查器或单元测试的结果,以向进行提交的开发人员提供反馈。如果语法

您或您已经尝试过如何保护您的源代码存储库不受引入bug或破坏构建的提交的影响?似乎在提交时强制进行回归测试可以在很大程度上防止bug蔓延到由多个开发人员进行的项目中。然而,大多数常见的代码版本控制工具在这方面不提供任何功能

这里有一种方法我已经尝试过了。我创建了subversion pre-commit钩子来生成项目的一个副本,其中合并了挂起的提交更改,然后它在此副本上运行语法检查和单元测试。若任何测试失败,提交将被拒绝,并带有语法检查器或单元测试的结果,以向进行提交的开发人员提供反馈。如果语法检查器和单元测试通过,提交将被接受。它起作用了,但代价是它使提交速度非常慢。如果代码版本控制软件提供了更好的集成来促进这一点,而不是在预提交时运行外部程序,我认为速度可以提高


我正在寻找您用来实现这一点的方法,思考为什么这是一个好主意还是一个坏主意,或者寻找代码版本控制工具的经验,这些工具提供对代码签入的回归测试/构建测试的支持。此外,提交速度对您来说有多重要?

您应该利用某种形式的环境使用Hudson、CruiseControl或其他工具来促进这种行为。

为了补充这个答案,您应该使用某种形式的分支来保护潜在的更改,以免破坏代码的工作版本。这样,您仍然可以使用版本控制的好处,而无需将必须收回的代码暴露在您的主要分支或源代码中,直到您确定其工作正常为止。+1,CI工具通常允许您在构建中断时通知开发人员(通过电子邮件或其他方式)-确保快速修复中断的构建。