githooks-跟蹤.git / hooks中的鉤子更改

有沒有辦法跟蹤git hook的變化? 我有三個僅在我的機器上顯示的鉤子,而不是在其他開發人員獲取時顯示的鉤子。 嘗試git add不起作用。

asked 2020-02-29T11:13:42Z
6個解決方案
44 votes

[HTTP://Benjamin-Meyer.blogspot.com/2008/10/git-hooks.HTML]

.git / hooks目錄中的文件不屬于存儲庫的一部分,因此不會被跟蹤。 一種解決方法是像在Arora中一樣在存儲庫的頂部放置一個git_hooks目錄,并在每次克隆時將.git / hooks鏈接到git_hooks。 這樣,掛鉤將成為項目的一部分,受版本控制,并且每個人都可以訪問。

answered 2020-02-29T11:14:41Z
14 votes

我意識到這個問題已經有多年歷史了,但是我覺得對于像我這樣的旅行者來說,這是必須要說的:鉤子不是設計跟蹤的! Brian的答案會奏效,但要解決的問題是,您正在有效地信任與您一起工作的其他所有人,而不是將惡意代碼放入存儲庫中,然后您的鉤子就會毫無疑問地執行。 這就是安全漏洞的定義。

answered 2020-02-29T11:15:02Z
4 votes

修改Brian的答案以考慮到Philip的重要觀點:

如果您具有寫訪問權限的任何用戶都使用'#!/ bin / sh rm -rf〜'創建了一個掛接(例如,提交后),則會進入您的主目錄。 (或者更溫和但仍然愚蠢的東西。)

為了防止這種情況,不要對目錄進行符號鏈接,而是手動將它們復制到git_hooks目錄或從git_hooks目錄復制。 是的,您必須記住在更新這些文件時手動復制這些文件,但總比沒有好,而且您仍然沒有向某人授予用戶級別的權限來訪問計算機上的命令。

更新:如下所述,如果您打算一堆更改鉤子可以领救济金的游戏,則可以制作一個包裝腳本,該腳本復制文件然后運行提交。 但是,自動化提交(使用git add并輸入自動消息)確實很麻煩。 一個更好的主意是在提交之前讓您的一個鉤子將副本復制到此“ git_hooks”目錄中。 這樣,惡意用戶將無法提交將在下一個掛鉤調用中運行的文件。

answered 2020-02-29T11:15:36Z
2 votes

恢復該舊線程可以领救济金的游戏,您可以有一個單獨的版本控制目錄,其中包含您的鉤子,然后使用git config core.hooksPath定位該目錄。

answered 2020-02-29T11:15:56Z
2 votes

另一個解決方案(與跟蹤/版本控制無關)可以是使用可為您處理鉤子的插件。

例如:對于Web應用程序可以领救济金的游戏,請想象您可以在json包中添加一個腳本,該腳本將配置預提交鉤子!

這是一個很好的例子:[https://github.com/typicode/husky]

最后,該腳本可以在版本控制下,您無需處理.git中的hooks文件夾。

answered 2020-02-29T11:16:30Z
0 votes

使用模板目錄。 從git克隆中,您可以使用標志--template=<template_directory>將文件添加到$GIT_DIR。您還需要創建一個保存模板的目錄或使用gits提供的位置/usr/share/git-core/templates。通過使用模板目錄,您可以準備一個活動鉤子 在創建時在hooks目錄中運行。

我不確定您的員工將多久進行一次編輯,但是您可以將此模板保存在所有人都可以訪問的存儲庫中。 確實,這應該是一個在倉庫中運行文件的鉤子,該文件包含您需要自動運行的所有代碼。

就像其他人提到的那樣,一旦您自動執行未知代碼,您就將面臨風險。

answered 2020-02-29T11:17:00Z
translate from