2017-01-17 59 views
0

我在我已導入的存儲庫的.gitconfig文件中定義了以下GIT過濾器。GIT過濾器的相對目錄?

[filter "csprojarrange"] 
    clean = CsProjArrange 

然而,只有當CsProjArrange.exe是我路徑的一部分,而不是如果CsProjArrange.exe簽入倉庫的根目錄下工作。

是否有可能讓GIT過濾器在相關目錄上工作?

+0

這將是一個安全噩夢。想象一下:你克隆倉庫X.它指定了一個塗抹過濾器F. F包含設置按鍵記錄器的命令(否則*也*看起來無害)。三週後,你的系統完全被運行。 (現在,你*可以*把''放在你的路徑中,但這是一個安全噩夢......) – torek

+0

因此,把'.'放在我的路徑上實際上會工作嗎?這是一個私人存儲庫,僅供我和其他一些人使用。 –

+0

我試過'./ Tools/CsProjArrange.exe',它似乎沒有工作。 –

回答

1

正如我在評論中提到的,Git不這樣做的一個重要原因是它存在巨大的安全風險。

,以降低風險,用今天的工具和技術,最顯而易見的方法,是運行於回購過濾器,當且僅當過濾器具有有效digital signature(一拉PGP/GPG簽名。也就是說,你的.gitattributes文件內容如下:

[filter "csprojarrange"] 
    clean = helper-check-git-signature CsProjArrange 

或類似的同時helper-check-git-signature將是一個程序,你就必須單獨安裝Git和任何存儲庫的;但你只需要一次安裝,永遠(也許你的操作系統自帶的。因爲這種數字簽名技術是一些手機操作系統對應用程序進行審覈的方式,但它們往往會在下載過程中執行一次,而不是每次執行過濾操作。)

幫助程序的工作是在存儲庫中找到文件,驗證可以運行,然後運行它。由於助手安裝在計算機的「可信」部分(例如,Linux上的/usr/local/bin$HOME/bin),因此它只會運行。更新存儲庫中的過濾器時無需重新安裝。

這裏不是「罐裝」的部分是助手如何進行驗證(如果你有gpg,你可能想要使用它,因爲它有你需要的所有簽名檢查和撤銷支持),其中籤名本身與in-repo過濾器直接相關,助手如何定位各個部分,等等。或許,想象把這樣的事情當成商業機會。 :-)