2012-12-19 89 views
2

我想在我將更改推送到遠程(位於bitbucket上)之前運行我的測試。爲什麼git沒有預推鉤?

我通常會分出主人,當功能完成時,我將它合併回主人和推送人,這就是爲什麼我要查找預推鉤。相反,我使用了合併後的預約提交限制爲主分支。 我見過that patch done for Git 1.6this other question,它提出了我提出的解決方案的問題。

我想知道什麼是爲什麼混帳不支持推前鉤,然後(特別是如果一個補丁已經被接受一次)? (順便說一句 - 我在最新的git版本)

回答

4

在我看來,它一直是一個何時而不是爲什麼的問題。

Git在1.8.2版本中獲得了pre-push掛鉤。

樣品pre-push腳本:https://github.com/git/git/blob/87c86dd14abe8db7d00b0df5661ef8cf147a72a3/templates/hooks--pre-push.sample

1.8.2版本說明談論新推前鉤:https://github.com/git/git/blob/master/Documentation/RelNotes/1.8.2.txt

+3

有趣的是,這個答案導致我的答案不被接受,因爲我貢獻了代碼來添加對「預推」鉤子的支持。 – qqx

5

一個補丁不是接受,只提交。在上個月左右還有另外一個提交了。

如果您按照補丁提交後面的討論主題進行討論,那麼有關補丁的一些討論(example),補丁會添加一個預推鉤以便可以接受。但是,您所連接的補丁程序以及最近的補丁程序都沒有完成額外的工作。

到目前爲止提交的補丁已被判定爲不比圍繞git push命令定製包裝更好。 git的維護者不希望添加這樣一個鉤子的實現,這使得在未破壞兼容性的情況下添加更有用的實現變得更加困難。

+0

不知道更近的補丁(http://thread.gmane.org /gmane.comp.version-control.git/209897/focus=209934)。我仍然沒有100%相信在這些線索中發現的論點。這很煩人;我認爲斯科特·查孔是一個很好的例子。 – nieve

+0

@nieve無論如何,必須在用戶端配置pre-push hook,那麼爲什麼你暫時不要使用別名,當你無論如何都不得不擺弄本地用戶配置? – eis

+0

@eis我一定會看看使用別名,只是有一個腳本來決定我是否想運行測試,如果是這樣,並從別名調用它,這很奇怪。另外,我將不得不記住何時使用我的別名以及何時使用git push,這並不理想。另外,你是什麼意思,擺弄本地用戶配置?它只是預推文件中的腳本。 – nieve