2013-02-25 111 views
11

我一直注意到,當我從開發服務器(Red Hat)上的github回購中拉取完成後,文件的所有權發生變化。 .git文件曾經由我擁有,但後來我注意到它會寫文件作爲我,我需要它作爲不同的用戶寫文件。所以我改變了.git目錄的所有權。如何保持更改文件所有權的git

我偶然發現了git config core.filemode這是真的。我既然認爲它是假的。將此設置爲false後我沒有看到任何區別。我應該怎麼做才能保證我的文件所有權不會發生變化。

這不會發生在我身上。

回答

7

Git不是部署服務器。它將文件寫爲誰在寫文件,那就是你。如果你需要權限和所有權設置,你可以製作一個post-checkout鉤子並讓它讀取一個配置文件或者什麼來決定下一步該做什麼。

+0

從我的經驗,用這個我不能說這是完全正確的。如果我更改目錄中文件的所有權,然後運行'git pull',我將爲不同的文件獲得不同的所有者。一些根和一些我和一些未觸及。 – user2108258 2013-02-25 21:25:57

+2

git不存儲文件權限,因此您遇到的任何行爲都與作爲VCS的git不直接相關。 – wRAR 2013-02-25 21:35:31

+0

誰應該.git目錄歸於?我在服務器上的用戶是我用來從Github提取的用戶。但是,如果我使用我自己作爲用戶,則將文件作爲我寫入磁盤。但我希望他們被網絡服務器所擁有。 – user2108258 2013-02-25 22:02:15

20

如果保留組足夠了,可以在目錄上設置setgid標誌。見http://en.wikipedia.org/wiki/Setuid

上的目錄(「搭配chmod G + S」)設置setgid權限使其中創建繼承其組ID的新文件和子目錄,而不是誰創建該文件的用戶的主組ID (所有者ID從不受影響,只有組ID)。新創建的子目錄繼承setgid位。因此,這爲組創建了一個共享工作區,而無需在創建新文件或目錄之前要求組成員顯式更改其當前組的不便之處。請注意,在目錄上設置setgid權限只會影響setgid位設置後創建的新文件和子目錄的組ID,並且不會應用於現有實體。設置在現有的子目錄setgid位必須手動完成,用命令如下所示:

[[email protected]]# find /path/to/directory -type d -exec chmod g+s '{}' \;

+2

好的解決方案 - 總是喜歡看到問題的解決方案,而不是基於特定軟件的評論 - 使用gid位在這裏很容易獲勝。 – 2016-03-24 10:16:38

相關問題