如何使用 etckeeper 进行干净的提交?

Ort*_*kni 4 git etckeeper

我想用 etckeeper 进行干净的提交。这是发生的事情:

1)检查存储库的状态:

git status

On branch master
nothing to commit, working directory clean
Run Code Online (Sandbox Code Playgroud)

2)修改配置文件:

vi myfile.conf
Run Code Online (Sandbox Code Playgroud)

3) 将其添加到索引中

git add myfile.conf
Run Code Online (Sandbox Code Playgroud)

4)提交

git commit -m"Add this ... to myfile.conf"
Run Code Online (Sandbox Code Playgroud)

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)
 [...]
Run Code Online (Sandbox Code Playgroud)

我知道即使我不理解这种重新排序的目的,etckeeper 也需要跟踪 git 存储库中的文件权限。我想在不同的提交中将与./etckeeper目录相关的所有修改和与配置文件内容相关的修改分开。

怎么做?

Gil*_*il' 5

Etckeeper 设置了一个 git hook,以便在元数据发生变化时提交包含元数据信息的文件。这通常是正确的。如果你真的想绕过提交钩子,你可以运行git commit --no-verify.

元数据文件按文件名排序。排序顺序取决于环境语言环境。在你的情况下,该文件似乎已在纯字节字典顺序排序(与mail.rc之前mailcap因为.是之前c在ASCII),但你现在运行git在排序是在一定程度上人性化的方式做了一个区域,用标点符号被忽略,除非作为最后的手段(可能是 UTF-8 语言环境)(mail.rc之后mailname因为n是之前r)。运行LC_ALL=C git commit以纯字典顺序进行排序。它将使SENCE添加export LC_COLLATE=C/etc/etckeeper/etckeeper.conf强制一致的排序顺序。