我在服务器上有一个裸git存储库,我通过SSH访问它。我可以推拉就好了。但是,我推送的文件是在具有访问权限644
的服务器上创建的,这意味着只允许我更改文件。只要我是唯一的贡献者,这是好的,但是我可以做些什么来允许多个用户使用存储库?我在服务器上没有root权限,因此我无法更改任何全局选项。
我正在考虑一些钩子脚本,以便在推入存储库后更改文件权限。
这是解决我问题的首选方法吗?我究竟该怎么前进?还有其他/更好的解决方案吗?
答案 0 :(得分:2)
您必须将文件夹更改为775,将文件更改为664.之后,您需要配置core.sharedRepository
。
https://www.kernel.org/pub/software/scm/git/docs/git-config.html
当group(或true)时,存储库可在多个存储库之间共享 组中的用户(确保所有文件和对象都是 组可写)。当所有(或世界或所有人),存储库将 除了可分组之外,所有用户都可以读取。什么时候 umask(或false),git将使用umask(2)报告的权限。什么时候 0xxx,其中0xxx是八进制数,存储库中的文件将具有 这个模式的价值。 0xxx将覆盖用户的umask值(而 其他选项只会覆盖用户umask的请求部分 值)。示例:0660将使repo可读/可写 所有者和群组,但其他人无法访问(相当于群组 除非umask是例如0022)。 0640是一个存储库 组可读但不可写组。请参阅git-init(1)。假的 默认值。
在我的团队存储库中,我将其设置为group
。所以,我的config
看起来像这样:
sharedRepository = group
您对服务器没有权限?除非您计划与多个贡献者共享一个SSH帐户,否则需要进行整理。
答案 1 :(得分:0)
服务器用户只是repo文件的所有者。贡献者是可以访问服务器的其他用户,但不一定是真正的系统用户。
假设您git
上有用户yourserver.com
,/home/git/yourproject.git
中有您的回购。
在此示例中,我们将使用authorized_keys方法对用户进行身份验证:您需要将贡献者SSH公钥添加到用户git的authorized_keys文件中(例如,在/home/git/.ssh/authorized_keys
内)。
此时,贡献者可以克隆项目并轻松推送更改:
$ git clone git@yourserver.com:/home/git/yourproject.git
贡献者第一次必须配置他们的身份:
$ git config --global user.email "bob@example.com"
使用这种方法,您可以快速为少数开发人员启动并运行读/写Git服务器,而无需担心文件权限,但可以跟踪个别更改;我总是使用此设置来配置git存储库。