2014-02-23 60 views
1

有沒有git命令或命令組合可以告訴我工作副本是否位於其遠程服務器的後面嚴格只讀的方式?如果工作副本不能被運行該命令的用戶寫入,我正在尋找沒有錯誤的工作。只讀檢查git工作副本是否在其遠程服務器後面

我正試圖編寫一個cron作業,當我需要登錄到某臺機器時手動通過電子郵件提醒我,並手動執行git pull以使工作副本保持最新狀態。 cron作業的帳戶對工作副本具有隻讀權限。

我覺得這個要求不包括涉及git fetch的任何事情。看來,即使是git fetch --dry-run試圖寫入工作副本:

$ git fetch --dry-run 
remote: Counting objects: 3, done. 
remote: Compressing objects: 100% (3/3), done. 
remote: Total 3 (delta 0), reused 0 (delta 0) 
error: insufficient permission for adding an object to repository database .git/objects 
fatal: failed to write object 
fatal: unpack-objects failed 

這實際上讓我達到我想要的,因爲它與狀態128退出時有變化,並與0,如果有沒有。但是,它看起來並不完全乾淨,並且可能由於其他原因(例如網絡連接問題)而出錯,我希望能夠區分類似的情況和過時的情況。

回答

2

我不認爲我會刻意去嘗試,使這項工作,但:

您可以使用git ls-remote搶各個分支頭(加--tags和特定的遠程名稱獲得的每一個遠程的想法標籤,如果需要的話;由於在ls-remote中似乎是一個bug,因此在這種情況下您需要特定的遠程名稱)。通過這些,您可以比較本地存儲庫中遠程引用的想法與ls-remote步驟中的想法,以決定是否需要完整的fetch

(使用退出狀態似乎輕鬆了許多,雖然正如你所說,它有一些明顯的很小的缺點。)

+0

這似乎做的正是我想要的,謝謝! –

相關問題