我和我的同事有一个共享的网站回购。我们都在 Windows 7 64 位推送到 Ubuntu 10.04。以下是我们的设置,以防万一。
本地->集线器->网站
我们推送到集线器,这是一个裸仓库,然后使用集线器 cds 中的更新后挂钩到网站仓库,并将更改从集线器拉到网站。这样做是因为该网站是活动的,并且始终签出并且无法推送到。
当我在本地并提交一个新文件夹/文件时,它使用 100644 的创建模式说明以下内容
$ git commit -a -m "testing permissions"
[master 865b809] testing permissions
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 test.php
当我将这些更改推送到存储库时,它会将文件夹创建为 755,当我需要它们为 775 和 664 时将文件创建为 644。只要我只编辑文件,权限至少保持不变。唯一的问题在于创作。
在我们拥有的共享存储库中core.sharedrepository = 0660
,我认为这意味着它将根据需要设置权限。我们的umask
in our.bashrc
也设置为 002。
这是我的本地配置
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = true
hideDotFiles = dotGitOnly
似乎我们的本地人正在确定权限并忽略我们共享存储库上的设置。如何将创建模式设为 100664。
编辑
集线器配置
[core]
repositoryformatversion = 0
filemode = true
bare = true
sharedrepository = 0660
[receive]
denyNonFastforwards = true
网站配置
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
sharedrepository = 1
[receive]
denyNonFastforwards = true
编辑2
正如下面的 Kalle Pokki 在她的评论中指出的那样。这个问题是,当使用 GIT 并推送它时,它是以非交互方式运行的,所以我的 umask 设置不起作用。我已经更新了我的 repo 的更新后,以将 umask 设置为0002
每次有人推送时。