'git clone'尊重umask,顶级项目目录除外

r_2*_*r_2 9 linux git permissions

我想克隆一个git项目(来自github,比如说),并让顶级目录可以按组写入.

我尝试了几个不同的东西.首先,只需在克隆之前设置umask.

$ umask
0002
Run Code Online (Sandbox Code Playgroud)

然后,我创建的文件可以按组写入

$ touch test
$ ls -l test
-rw-rw-r-- 1 user group 0 2012-05-17 09:32 test
Run Code Online (Sandbox Code Playgroud)

现在我试试 git clone

$ git clone git@github.com:user/repo.git
Cloning into repo... [succeeds]
Run Code Online (Sandbox Code Playgroud)

但是克隆目录不能由组写入.

$ ls -ld repo
drwxr-xr-x 11 user group 4096 2012-05-17 09:32 repo
Run Code Online (Sandbox Code Playgroud)

我尝试git init --shared=umask使用775权限的目录创建的repo (应该已经是默认值)同样的事情.推送到github后git clone获得相同的结果.

这不是一个大问题,我可以在我的结帐脚本中chmod.但如果有正确/内置的方法来做到这一点,那就更好了.Git是Ubuntu 11.04上的1.7.4.1版本.

任何想法或链接都表示赞赏.我看过这篇文章,但是它使用了chmod,我还没有找到其他的东西.谢谢!

for*_*rk0 4

尝试仅为克隆命令设置全局“core.sharedRepository=group”:

git -c "core.sharedRepository=group" clone git@github.com:user/repo.git
ls -ld repo/.git
drwxrwsr-x 8 user user 4096 Jul  4 22:16 repo/.git/
Run Code Online (Sandbox Code Playgroud)

  • 是的,不能。克隆目标目录的创建是无条件的`mkdir(work_tree, 0755)`。我不确定这是故意的,所以我要在 git 邮件列表上询问。同时,您可以在builtin/clone.c中将mkdir更改为使用0777 (4认同)