2017-06-16 38 views
2

我有一些git倉庫有一些文件在只讀模式(chmod 0440)的麻煩。Git無法簽出只讀權限的文件

有時,其中一個文件會在另一個分支上被修改;當你嘗試檢出該分支,git的更新失敗有 warning: unable to unlink path/to/the/file: Permission denied

的問題是,這些文件需要在只讀模式,因爲使用超出這些文件的框架拋出沉重的警告信息時,這些文件的文件是可寫的,甚至更成問題,每當我們在我們的持續集成過程中(重新)安裝框架時,框架將這些文件更新爲只讀模式。

我試圖使用git掛鉤在檢出任何文件/分支之前自動將這些文件chmod改爲0664,然後將它們chmod重新設置爲0440,但我不確定存在這樣的掛鉤。

一個不需要的解決方案是將我自己的那些文件chmod改爲0664,每次我知道它們可以用git進行更改,然後將它們chmod回到0440以避免在產品環境中推送可寫文件,但這會導致失敗。

另一種解決方案是在0664模式下提交它們,並更新我們的持續集成過程,以在安裝(重新)安裝框架並完全忽略警告之後將這些文件重新chmod爲0664;同時保持產品環境的chmod爲0440。

你們對這個問題有什麼看法?我可以解決這個問題的最佳解決方案是什麼?

+1

但是....你如何期望覆蓋只讀文件?我不確定你期望GIT在這裏做什麼。使文件可寫或不更新。在我看來,你的實際問題是*,因爲超出這些文件使用的框架會在這些文件可寫*時引發嚴重的警告消息。這似乎意味着你不應該將這些文件檢查爲GIT,當然也不應該更新它們 – Liam

回答

2

聽起來就像您正在嘗試使用Git作爲部署工具。

Git並不意味着部署工具。其中一個最重要的原因是,它不會跟蹤除用戶可執行文件之外的權限。如果一個文件是隻讀的,Git當然不能修改它,因爲它是隻讀的。

也許您應該閱讀http://gitolite.com/deploy.html以獲得關於如何能夠圍繞Git構建部署工具的一些提示。