2015-04-01 55 views
1

我一直在谷歌和這裏搜索,但還沒有找到相關的答案。我正在使用的項目是使用SVN。我有問題想知道是否有人實現了一個預先提交的鉤子,如果JSHint失敗會停止檢查?SVN JSHint鉤?

謝謝你有經驗的人做這樣的事情。

回答

2

由於JSHint需要的時間長度,我不會將它作爲預提交鉤子。當有人提交時,他們必須等待JSHint完成並等待判決。

請記住,Subversion掛鉤運行在服務器上而不是客戶端的機器上。這意味着你的預提交鉤子必須執行結賬,然後運行JSHint。即使這隻需要30秒的時間,開發人員坐在那裏等待承諾完成並對他們產生仇恨,公司和Subversion也在增長。另外,如果鉤子導致它失敗的事情發生,你將不得不調試它並修復它,而開發人員將無法提交他們的代碼。

您的開發人員很快就會厭惡您和Subversion,甚至可能會設置自己的源代碼庫。在ClearCase裁定並創建Subversion時,我已經看到了這一點。開發人員使用Subversion設置自己的存儲庫(因爲它很容易做到)並停止使用公司的ClearCase存儲庫。

而不是預先提交鉤子,使用像Jenkins連續構建引擎。

當有人提交時,Jenkins會做結賬,然後運行你需要的任何工具(如運行JSHint)。稍後,您可能需要擴展您想要使用的工具。你甚至可以讓詹金斯創建一個可部署的工件(如zipfile)。詹金斯將收集你的歷史,告訴你提交之間的變化,並讓你知道誰做了什麼變化。

但是,你問,沒有預先提交的鉤子,開發人員不能檢查導致JSHint失敗的代碼嗎?

是的,他們可以。但是,您可以配置Jenkins以在發生這種情況時通知您和開發人員。由於這是版本控制,開發人員可以很容易地解決問題或撤銷其提交。

訣竅是羞辱開發人員打破構建。倉庫和一些過熟的西紅柿都很好。一個笨重的帽子和一個大牌子,上面寫着「我破壞了這個版本」也會起作用。也許一個大紅色B建設縫在他們的衣服上。

實際上,開發人員自然不會打破構建。這使他們看起來很糟糕和不專業。開發人員將習慣於在他們完成提交之前運行JSHint,而這正是您想要實現的目標。

+0

完美。我們正在使用Jenkins,所以我將它添加到構建中。非常感謝。 – pertrai1 2015-04-01 16:20:37