Git

如何使用 etckeeper 進行乾淨的送出?

  • January 17, 2017

我想用 etckeeper 做出乾淨的送出。這是發生的事情:

1)檢查儲存庫的狀態:

git status

On branch master
nothing to commit, working directory clean

2)修改配置文件:

vi myfile.conf

3)將其添加到索引中

git add myfile.conf
  1. 送出
git commit -m"Add this ... to myfile.conf"

5)觀察送出:

git log -p -1

[...]
maybe chmod 0644 'magic.mime'
-maybe chmod 0644 'mail.rc'
maybe chmod 0644 'mailcap'
maybe chmod 0644 'mailcap.order'
maybe chmod 0644 'mailname'
+maybe chmod 0644 'mail.rc'
maybe chmod 0644 'manpath.config'
maybe chmod 0644 'matplotlibrc'
maybe chmod 0755 'maven'
[...]
(My modification to myfile.conf)
[...]

我了解 etckeeper 需要跟踪 git 儲存庫中的文件權限,即使我不了解此重新排序的目的。我想在不同的送出中分離與./etckeeper目錄相關的所有修改和與配置文件內容相關的修改。

怎麼做?

Etckeeper 設置一個 git 鉤子,以便在元數據更改時送出包含元數據資訊的文件。這通常是正確的。如果你真的想繞過送出鉤子,你可以執行git commit --no-verify.

元數據文件按文件名排序。排序順序取決於環境語言環境。在您的情況下,該文件似乎已按純字節字典順序排序(在 ASCII 中,mail.rcbefore mailcapsince.是 before c),但您現在正在以某種對人類友好的方式進行排序的語言環境中執行 git,並帶有標點符號被忽略,除非作為最後的手段(可能是 UTF-8 語言環境)(使用mail.rcafter mailnamesince nis before r)。執行LC_ALL=C git commit以純字典順序進行排序。添加export LC_COLLATE=C/etc/etckeeper/etckeeper.conf強制一致的排序順序是有意義的。

引用自:https://unix.stackexchange.com/questions/337768