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.rc)로 정렬된 것처럼 보이지만 이제 정렬이 다소 인도적인 방식으로 수행되는 로케일에서 git을 실행 중이므로 구두점은 무시됩니다(afterbecause는 before입니다). ) 최후의 수단인 경우는 제외됩니다(UTF-8 로캘일 수도 있음). 순전히 사전순으로 정렬을 실행합니다. 일관된 정렬 순서를 적용하려면 을 추가하는 것이 좋습니다.mailcap.cmail.rcmailnamenrLC_ALL=C git commitexport LC_COLLATE=C/etc/etckeeper/etckeeper.conf

관련 정보