2016-11-11 35 views
3

我最近更新了我的pre_commit.sample文件,以在提交(重命名爲pre_commit)時運行rubocop。在版本控制上更新pre_commit鉤子文件

#!/bin/sh 
# 
# Check for ruby style errors 
rake run:rubocop 

我誤以爲這會在更改其他開發人員計算機時更新。我怎麼能保證任何人誰拉的變化都有自己pre_commit文件更新

感謝

回答

2

正如我在 「Git commit hooks - global settings」 和 「change default git hooks」 去年2016年5月提到,Git的2.9和2.10介紹git config core.hooksPath

這似乎confuse the OP

如果我有一個現有的回購協議,並希望所有其他開發人員的誰拉的變化有例如更新的pre-commit鉤子我會怎麼做呢?
內回購有/.git/hooks/pre_commit,我可以將它指向

更確切地說,一個git倉庫內,有一個/.git/hooks/pre-commit.sample並且,考慮到你想有一個共同的pre-commit所有開發者,你應該而不是,然後在您本地回購中指向/.git/hooks/pre_commit腳本。

所有開發人員都必須引用使用相同的gobal共享網絡訪問路徑與git config core.hooksPath \\a\common\shared\path:該設置需要每個開發者的工作站上激活,無論是內的回購協議(本地設置)或所有的回購協議(全局設置:git config --global core.hooksPath \\a\common\shared\path

(我在這裏使用一個Windows UNC syntax,使用一個適合你的操作系統)

一旦它們都引用相同的路徑,你可以設置你的pre-commit鉤子

\\a\common\shared\path\pre-commit 

然後,您可以更新該腳本(每個人都可以訪問的腳本),從而允許所有開發人員立即獲得更新。

4

直到混帳V2.9有沒有辦法更新客戶端掛鉤。

的Git V2.9暴露新的配置,讓這本:

git config [--local] core.hooksPath ... 

core.hooksPath 默認情況下,Git會查找在$ GIT_DIR /鉤目錄中的鉤。將其設置爲不同的路徑,例如/ etc/git/hooks,Git會嘗試在該目錄中找到你的鉤子,例如/ etc/git/hooks/pre-receive而不是在$ GIT_DIR/hooks/pre-receive中。

該路徑可以是絕對路徑,也可以是相對路徑。
相對路徑取決於運行掛鉤的目錄。

這個配置變量在你希望集中配置你的Git掛鉤而不是在每個存儲庫上配置它們的情況下是有用的,或者作爲一個更靈活和集中的替代方法來使用init.templateDir,已經改變了默認鉤子。

+0

感謝您的幫助,所以澄清我會在本地運行並提交?道歉不太理解100% – Richlewis

+0

你必須在機器上進行本地設置並指定鉤子的路徑。因爲路徑可以在你的工作目錄之外,所以你可以更新它,「客戶端」會得到你的更新。沒有這個配置,除非使用第三方腳本,否則不能完成 – CodeWizard