2010-01-13 90 views
4

在預提交鉤子期間從我的源文件中清理開發代碼是否好的形式?使用預提交鉤子來清除代碼

例如,我有調用xdebug_break()的代碼,我想在將代碼提交到存儲庫之前從任何具有該函數的文件中刪除對該函數的調用。我不想在調用它之前檢查函數,因爲我是唯一一個希望函數在那裏調用的函數。

回答

0

可以在提交之前提交precommit掛鉤修改代碼。例如,開發團隊可能會使用precommit掛鉤來自動重新格式化任何代碼,這些代碼被提交以自動執行該團隊編碼約定。

基於評論,我改變了我的答案 - svn手冊特別建議不要改變提交的內容,因爲它可能會搞砸客戶端緩存。由於版本庫是本地的,Git的工作方式不同,但我想原理是一樣的。

至於你提到的具體用例;它使用precommit鉤子似乎有點不合常規。通常,預提交掛鉤用於更一般的用途。也就是說,如果你是唯一的開發者,那麼你可以隨意使用它。只是不要忘記它在那裏。

+3

作爲一名開發人員,我恨討厭恨我的代碼在我不知情的情況下被修改。如果我不遵循約定,請中止,但不要修改代碼。 – 2010-01-13 22:36:14

13

預提交hook應該只用於檢查提交,而不是用於修改它。所以,你可以用它來檢查你的提交中是否有不需要的代碼,如果你不提交就放棄提交,但是你不應該用它來以任何方式修改提交。

可以使用filter attribute來運行程序,以便在提交之前「清理」源代碼;但我會建議反對這一點。刪除源代碼行可以改變程序的行爲。你不應該犯任何你沒有以它所犯的形式測試過的工作。

+0

同意。我可以想象一些可能會使某些編輯人員感到不適的病例,比如缺少分號。 – 2010-01-13 21:27:29

+0

如何在預提交鉤子中啓動單元測試?強制將測試作爲提交條件傳遞是否是一個好主意? – Fergal 2011-05-24 04:21:52

+3

@Fergal首先,一個預先提交的鉤子不能「執行」任何東西;它在本地運行,在您的工作存儲庫中,並且用戶可以根據自己的選擇啓用或禁用它。另外,你不希望你的提交速度很慢。在提交之前,人們已經完成了(至少一些)他們的代碼測試;讓他們等待所有的單元測試再次運行,只是爲了完成他們的承諾會令人難以置信的令人沮喪。一個大型項目的好測試套件可能需要幾小時才能運行;這應該發生在一個專用的生成機器上,在一個提交和推送後,而不是在開發人員的機器上 – 2011-05-24 14:48:36