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

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

我想与 etckeeper 进行干净的提交。发生的情况如下:

1)检查存储库的状态:

git status

On branch master
nothing to commit, working directory clean

2)修改配置文件:

vi myfile.conf

3)将其添加到索引中

git add myfile.conf

4)进行提交

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目录相关的所有修改和与配置文件内容相关的修改。

怎么做?

答案1

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

元数据文件按文件名排序。排序顺序取决于环境区域设置。在你的例子中,文件似乎是按照纯字节字典顺序排序的(在 ASCII 中是mail.rcbefore ),但是你现在在一个区域设置中运行 git ,其中排序是以一种有点人性化的方式完成的,带有标点符号除非作为最后手段(可能是 UTF-8 语言环境),否则将被忽略(带有afterbecause is before )。运行以纯字典顺序进行排序。添加to 来强制排序顺序一致是有意义的。mailcap.cmail.rcmailnamenrLC_ALL=C git commitexport LC_COLLATE=C/etc/etckeeper/etckeeper.conf

相关内容