Permissions

如何更改 Mercurial 的 largefiles 目錄中新生成文件的文件權限?

  • February 23, 2012

我得到了一些由 Apache 通過 HTTP 提供的 Mercurial 儲存庫。但是有一個專門的使用者執行一些自動化測試,需要在本地檢查儲存庫。最近這開始失敗,似乎是由於缺少對以下中的 largefiles 子目錄中的文件的權限.hg

-rw------- 2 www-data www-data 6.3M 2012-01-02 17:23 9358b828fb64feb37d3599a8735320687fa8a3b2

預設 umask 應該是 022。並且我.hg根據多個送出者 wiki 頁面使用了目錄的 setgid 設置,但並未涵蓋.hg/largefiles。但是,據我了解,為該目錄設置 gid 並不能解決問題,即hg對這些文件設置了此類限制性權限。我嘗試通過文件系統訪問此儲存庫的其他使用者也在該www-data組中,因此組的額外讀取權限足以解決我的問題。

如何說服 Mercurial 或系統為新文件正確授予此權限?

我正在使用: Mercurial 分佈式 SCM(2.1 版)

事實證明,這是 Mercurial 中的一個問題,並且對於 Mercurial 2.1 來說沒有簡單的解決方法。我剛剛向 Mercurial 郵件列表發送了三個更新檔來修復這個問題——希望你能在一周內看到 Mercurial 2.1.1 中的修復。

問題是 largefiles 擴展.hg/largefiles/<hash>通過將數據寫入臨時文件來創建文件,該文件隨後被重命名為真實名稱。它使用Python中的標準tempfile模組創建其臨時文件。該模組將權限限制為,600因為您通常不希望任何人讀取您的臨時文件。largefiles 副檔名沒有考慮到這一點,只是重命名了文件。

我的更新檔通過.hg/store在創建臨時文件時考慮到的權限來解決這個問題。這應該使大文件與 Mercurial 的其餘部分保持一致。

引用自:https://unix.stackexchange.com/questions/31953