2017-08-11 55 views
0

我們將我們的puppet配置存儲在Git中。其中一些文件是在提交之前手動gpg加密的,並在結帳後手動解密。然而,前幾天我合併了一個從HEAD身上取下的分支,這個分支變質了另一個人的變化。如果文件未被加密,git會正確合併所做的更改。如何防止在Git中加密(二進制)文件的破壞?

此文件包含敏感憑據,可以讓系統脫機(如果不正確),所以它對於我們可以區分和查看隨時間變化的重要性而言非常重要。

如何恢復可見性和git的高級合併更改能力,同時仍然保持文件內容的安全性?

+2

提交祕密與源代碼一般可以被認爲是一個不好的做法。 – quinz

+0

保持配置與配置的其餘部分很方便,加密使我們能夠做到這一點。但似乎git並非設計用於本地處理加密,而且我們還沒有合併功能。你認爲什麼是一個更好的過程? –

回答

0

Git允許您設置二進制(或任何)文件的自定義轉換器,以便在它們達到git-diff之前對其進行預處理。只要Git對它們進行區分,您可以使用此功能來解密文件。

下面的這個特點,這就是所謂textconv的例子:

的.gitconfig必須註明要執行的命令的的TEXTCONV司機:

[diff "odf"] 
    textconv=odt2txt 

.gitattributes必須文件到關聯驅動程序:

*.odf diff=odf 

這個例子使用textconv來轉換*.odf文件,但你可以使用任何你想要的任何函數處理任何文件。

這種方法至少可以讓您在合併作爲完整性檢查時檢查差異。