我想用 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
目录相关的所有修改和与配置文件内容相关的修改分开。
怎么做?
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
强制一致的排序顺序。