全域 git 鉤子

全域 git 鉤子

是否可以掛接所有建立 git repo 的方法?因此,我可以在克隆、初始化存儲庫時運行腳本……(除了移動/複製資料夾之外,還有其他方法嗎?)。

我的目的是追蹤所有儲存庫,因此我不需要遍歷所有目錄來運行某些操作(主要是git status因為我有時忘記提交更改和git gc --auto)。

答案1

掛鉤(目前)是按儲存庫專門配置的,因此在建立儲存庫之前不能有活動掛鉤。

如果您只想為所有新存儲庫以相同的方式初始化某些存儲庫特定設置,您可以使用儲存庫範本機制

透過使用您自己的模板,您可以

  • 安裝啟動的鉤子(透過提供文件<template‑dir>/hooks/<hook‑name>),
  • 設定配置變數(透過提供<template‑dir>/config檔案),以及
  • 配置每個儲存庫的排除規則或屬性(透過提供<template‑dir>/info/exclude<template‑dir/info/attributes>檔案)。

目錄中的任何設定檔都.git可以放置在範本中,作為該檔案在從範本初始化的新儲存庫中的初始副本。我想你甚至可以提供初始物件和參考。

一旦您有了一個包含您的自訂內容的範本目錄,您必須告訴git init我們git clone在哪裡可以找到它。這可以透過--template選項明確完成(Git 0.99.4 或更高版本),或透過GIT_TEMPLATE_DIR環境變數隱式完成(Git 1.5.0 或更高版本),或透過init.templatedir在「全域」(每個使用者)或「system ”Git 設定檔(即~/.gitconfig/etc/gitconfig(因安裝而異);Git 1.7.1 或更高版本)。

答案2

您無法「追蹤」git 儲存庫(如「向某個中央參考文獻詢問目前活動的 git 儲存庫清單」)

可以考慮兩種解決方案:

  • 一個 git 模板,如克里斯的回答,其中之一客戶端鉤子第一次使用時,能夠在某個「中央」檔案中註冊 git 儲存庫。
    然後,該檔案將由外部腳本(git 外部)讀取,以便使相關git statusgit gc您想要的內容。

  • 如果您的所有 git 儲存庫都在同一公共目錄下聲明,您可以聲明一個全域父 git 儲存庫並將所有子儲存庫新增為子模組
    自從git1.7.0git status知道子模組何時包含未提交的變更。

相關內容