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.rc
)でソートされているように見えますが、ソートがやや人道的な方法で実行されるロケールでgitを実行しているため、句読点は無視されます(afterbecauseはbeforeです)。 )最後の手段である場合は除外されます(UTF-8ロケールかもしれません)。純粋にアルファベット順にソートを実行します。一貫したソート順を適用するには、を追加することをお勧めします。mailcap
.
c
mail.rc
mailname
n
r
LC_ALL=C git commit
export LC_COLLATE=C
/etc/etckeeper/etckeeper.conf