使用 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 中的前 2 行不相關的行。相反,它解決了一些我沒有問過的其他問題,比如一些鉤子。
您可以使用過濾器:
git config filter.dropSecondLine.clean "sed '2d'"
編輯/創建 .git/info/attributes 並添加:
* filter=dropSecondLine
如果您不希望過濾器作用於 repo 中的所有文件,請修改 * 以匹配適當的模式或文件名。
效果將是工作目錄將保持不變,但 repo blob 在文件中不會有第二行。所以如果你把它拉到別處,第二行就不會出現(sed’d2’的結果)。如果您更改日誌文件的第二行,您將能夠添加它,但不能送出它,因為對 blob 的更改發生在添加時,此時它將與 repo 中的文件相同。
您永遠不應該手動觸摸 cron spool 目錄中的文件。對那裡的文件進行更改不會正確通知 cron 守護程序,並且在重新啟動守護程序之前,對計劃的更新不會變為活動狀態。(一些 cron 守護程序實現可能會定期檢查假離線以查看其中是否有更新的文件,但這種行為並不普遍;請查看您的
cron(8)
手冊)。Ubuntu上的
cron(8)
手冊說請注意,不應直接訪問此目錄中的 crontabs - 該
crontab
命令應用於訪問和更新它們。您應該始終使用該
crontab
命令來載入新計劃或刪除現有計劃。至於將 crontabs 保存在 Git 中,我認為這沒有問題,但是,正如我上面提到的,您不應該
/var/spool/cron/crontabs
簽出該儲存庫。相反,讓它存在於其他地方並手動載入 crontabs,例如crontab my-crontab.txt
my-crontab.txt
使用 Git 管理的文件在哪裡。這還可以避免文件被 cron 守護程序修改的問題。