我一直在谷歌和这里搜索,但还没有找到相关的答案。我正在使用的项目是使用SVN。我有问题想知道是否有人实现了一个预先提交的钩子,如果JSHint失败会停止检查?SVN JSHint钩?
谢谢你有经验的人做这样的事情。
我一直在谷歌和这里搜索,但还没有找到相关的答案。我正在使用的项目是使用SVN。我有问题想知道是否有人实现了一个预先提交的钩子,如果JSHint失败会停止检查?SVN JSHint钩?
谢谢你有经验的人做这样的事情。
由于JSHint需要的时间长度,我不会将它作为预提交钩子。当有人提交时,他们必须等待JSHint完成并等待判决。
请记住,Subversion挂钩运行在服务器上而不是客户端的机器上。这意味着你的预提交钩子必须执行结账,然后运行JSHint。即使这只需要30秒的时间,开发人员坐在那里等待承诺完成并对他们产生仇恨,公司和Subversion也在增长。另外,如果钩子导致它失败的事情发生,你将不得不调试它并修复它,而开发人员将无法提交他们的代码。
您的开发人员很快就会厌恶您和Subversion,甚至可能会设置自己的源代码库。在ClearCase裁定并创建Subversion时,我已经看到了这一点。开发人员使用Subversion设置自己的存储库(因为它很容易做到)并停止使用公司的ClearCase存储库。
而不是预先提交钩子,使用像Jenkins连续构建引擎。
当有人提交时,Jenkins会做结账,然后运行你需要的任何工具(如运行JSHint)。稍后,您可能需要扩展您想要使用的工具。你甚至可以让詹金斯创建一个可部署的工件(如zipfile)。詹金斯将收集你的历史,告诉你提交之间的变化,并让你知道谁做了什么变化。
但是,你问,没有预先提交的钩子,开发人员不能检查导致JSHint失败的代码吗?
是的,他们可以。但是,您可以配置Jenkins以在发生这种情况时通知您和开发人员。由于这是版本控制,开发人员可以很容易地解决问题或撤销其提交。
诀窍是羞辱开发人员打破构建。仓库和一些过熟的西红柿都很好。一个笨重的帽子和一个大牌子,上面写着“我破坏了这个版本”也会起作用。也许一个大红色B建设缝在他们的衣服上。
实际上,开发人员自然不会打破构建。这使他们看起来很糟糕和不专业。开发人员将习惯于在他们完成提交之前运行JSHint,而这正是您想要实现的目标。
完美。我们正在使用Jenkins,所以我将它添加到构建中。非常感谢。 – pertrai1 2015-04-01 16:20:37