Git的 - 多个用户使用同一个工作目录:在git的元文件的权限问题(Git - multiple

2019-07-30 03:18发布

问题:当多个用户有权访问相同的工作目录,但如果任何发生在元数据的权限问题git动作。

免责声明 :在你责备我-我实现共享工作目录是反什么Git的代表,我说的不是做得比其他任何只读此共享目录中的操作-我们所做的一切工作在我们自己的本地资源库。

我接受建议,以另一种方式做什么,我们正在尝试做的,因为我们的方法肯定不是最好的做法,但我不知道,交谈中得知将是有益的给别人听。 所以现在让我提供关于我们为什么这样做的一些细节:

我们有我们的团队几个集结主人。 我们部署到Linux服务器,我们做我们建立那里,直接从Git的那拉构建脚本。 我们不能在这个时候使用CI(如詹金斯/ CruiseControl的),所以我们有我们结帐,尽我们的QA从建立一个资料库。

有迹象表明,我们作为脚本的一部分执行一些git的操作。 这包括提交的一些标记(东西被标记为QA-电流,QA-以前,等...)。 所以我想我们实际上并没有只读完全。 由于构建脚本的性质,我们运行sudo “ED作为普通用户(我们称之为用户DevAdmin)。 我意识到这可能是一个不好的做法,并且也许是痛苦的根源,因为它迫使我们使用的是共享式回购结算。

这都将是很好,如果我们总是在工作目录时sudo'ed。 问题是,有时,我们中的一个会做git pull或因事故类似的东西,而不sudo'ed为DevAdmin。 因此,大多数的文件.git是由DevAdmin(谁执行的初始克隆)所拥有,但每当我们这样做,我们最终在目录的.git/objects包含特定用户拥有的文件。 而这些都是为组不可写创建。 我也注意到ORIG_HEAD与错所有权,例如。 所以,当我们尝试做一些事情为DevAdmin,我们得到的问题。

有什么事情我们可以做,以解决这个问题? 现在,我们必须认识到,它已经发生了,然后得到了一个服务器管理员chown .git回DevAdmin。 或让用户在删除相关的元文件,或至少chmod他们组可写。 这一切似乎很不好。

我已经考虑了几个不涉及巨大的改变我们的建设和维护过程中的选项:

如果我们取消了对组的写入权限.git ,它仅限于DevAdmin,将防止这种情况再次发生? 这似乎是最直接的选择。

还是有办法让一切.gi T组可写,即使它新成立的? 这似乎是从麻烦问。

有没有别的明显的我失踪? 我知道的最好的事情很可能会改变我们的工艺,使用户可以在自己的回购协议的工作,但在商务场合,回购可以得到非常大的(瓶子不分离出来呢,大量的二进制文件,等...),我们不能对每个人的帐户多GB回购。 此外,我们的系统管理员会有很多工作要做他们改变他们的流程,以允许它。

任何想法表示赞赏。

Answer 1:

这里有许多方法来解决这个问题。 就个人而言,我建议在现有的存储库中的以下内容:

# Create a group named "gitshare" that will share the repository.
sudo groupadd gitshare

# Add yourself and as many others as you want to the group.
sudo adduser "$LOGNAME" gitshare

# Everything else needs to run from the top level of your Git repository.
cd /path/to/repository

# Add group permissions for *new* modifications to repository.
git init --shared=group

# Fix permissions for existing repository objects.
chown -R :gitshare "$PWD"
chmod -R g+swX "$PWD" 

显然,你需要确保用户有目录遍历权限一路到存储库(例如用户的私人目录可能会造成问题),以及谁需要访问所有团队成员都属于资源库的共享组。 该初始设置后,虽然,它应该“只是工作。”



Answer 2:

我只是面对这个问题,我花了时间来找到解决方案时,它是如此简单。 我想几乎所有我通过CodeGnome提供的其他链接上看到。

我使用的Centos 6.x和解决办法是改变用户的umask ......这需要我们每个帐户做...我们只是2个工作放在同一目录下。 不是太大的痛苦。

为我工作的解决方案是这一个,而无需更改服务器的配置: http://www.avajava.com/tutorials/lessons/how-do-i-set-the-default-file-and-directory- permissions.html

如果.bashrc中filoe不存在在/ home / user目录一样,这是我的情况,你只需要从骨骼中复制该文件/ ECT / skel中,然后你将它添加后,您的主页(用户)目录复制在文件的结尾:

umask 002

这使得用户可以通过其他组中创建新的文件夹在chmod 775。 当然,一旦该项目将完成,不再在测试环境中,我们将它设置回默认和chmod 755(使用umask 022)。 这不仅给Git的覆盖权限,但也写上载SFTP文件,而无需许可被拒绝的问题。 。



文章来源: Git - multiple users using the same working dir: permissions issues in .git meta-files