Git을 사용하여 crontab 변경 사항 추적

Git을 사용하여 crontab 변경 사항 추적

git추적용으로 사용하고 싶습니다 crontab.

새로운 git 저장소를 초기화했습니다/var/spool/cron/crontabs/

이제 문제는 crontab을 저장할 때 헤더의 두 번째 줄에 타임스탬프가 포함되어 있기 때문에 변경된다는 것입니다.

# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (/tmp/crontab.ubNueW/crontab installed on Thu Aug  1 06:29:24 2019)

이러한 관련 없는 변경 사항을 무시하는 가장 쉬운 방법은 무엇입니까?

이것중복 질문이 있을 수 있음내 질문의 요점을 해결하지 못합니다: crontab에서 관련 없는 처음 두 줄을 무시하는 방법. 대신, 일부 후크와 같이 제가 묻지 않은 다른 문제를 해결합니다.

답변1

cron 스풀 디렉터리의 파일을 수동으로 건드리면 안 됩니다. 그 안의 파일 변경 사항은 cron 데몬에 제대로 통보되지 않으며, 일정 업데이트는 데몬이 다시 시작될 때까지 활성화되지 않습니다. (일부 cron 데몬 구현에서는 정기적으로 스풀을 확인하여 최신 파일이 있는지 확인할 수 있지만 이 동작은 보편적이지 않습니다. cron(8)설명서를 확인하세요.)

cron(8)우분투 매뉴얼에 따르면

이 디렉터리의 crontab에는 직접 액세스하면 안 됩니다. crontab액세스하고 업데이트하려면 명령을 사용해야 합니다.

crontab새 계획을 로드하거나 기존 계획을 삭제하려면 항상 이 명령을 사용해야 합니다 .

Git에 crontab을 유지하는 데에는 문제가 없다고 생각합니다. 하지만 위에서 언급한 것처럼 /var/spool/cron/crontabs저장소를 체크아웃해서는 안 됩니다. 대신, 다른 곳에 존재하게 하고 다음과 같은 방법을 사용하여 수동으로 crontab을 로드하십시오.

crontab my-crontab.txt

그 중에는 my-crontab.txtGit을 이용해 관리하는 파일도 있습니다.

이는 또한 cron 데몬이 파일을 수정할 때 발생하는 문제를 방지합니다.

답변2

필터를 사용할 수 있습니다.

git config filter.dropSecondLine.clean "sed '2d'"

.git/info/attributes를 편집/생성하고 다음을 추가하세요.

* filter=dropSecondLine

저장소의 모든 파일에 필터가 적용되지 않도록 하려면 *를 수정하여 적절한 패턴이나 파일 이름과 일치시키세요.

그 결과 작업 디렉터리는 동일하게 유지되지만 저장소 Blob에는 파일의 두 번째 줄이 없습니다. 따라서 다른 곳에서 꺼내면 두 번째 줄( sed 'd2' 의 결과)이 나타나지 않습니다. 로그 파일의 두 번째 줄을 변경하면 해당 항목을 추가할 수는 있지만 커밋할 수는 없습니다. Blob이 추가될 때 변경 사항이 발생하고 그 시점에서는 저장소의 파일과 동일해지기 때문입니다. .

답변3

당신이 사용할 수있는git blame("파일의 각 줄의 개정판과 작성자가 마지막으로 수정한 내용 표시 - 해당 줄이 마지막으로 수정된 개정판에 대한 정보로 주어진 파일의 각 줄에 주석을 답니다. 또한 주어진 줄에서 주석 달기를 시작할 수도 있습니다. 개정." ) 참조이것.

특히 다음 -L옵션을 사용하십시오.

-L <start>,<end>
<start> and <end> are optional. “-L <start>” or “-L <start>,” spans from <start> to end of file. “-L ,<end>” spans from start of file to <end>.

이렇게 하면 두 가지 장점을 모두 얻을 수 있습니다. 정보를 유지하고(별로 신경 쓰지 않을 수도 있음) 필요할 때 무시하십시오.

그렇지 않으면 구성을 위해자식 필터할수있다. 아래 링크와 여기에서 다른 답변을 참조하세요.

https://stackoverflow.com/questions/6557467/can-git-ignore-a-specific-line

https://stackoverflow.com/questions/16244969/how-to-tell-git-to-ignore-individual-lines-ie-gitignore-for-특이적-lines-of

관련 정보