可以为多个用户使用相同的git checkout吗?

时间:2012-01-04 20:37:03

标签: git

我希望我的团队能够在我们的服务器上单独使用相同的签出回购来提取更新。是否有可能拥有一个repo的副本,其中多个个人用户可以从他们自己的帐户提出拉/合并请求?

4 个答案:

答案 0 :(得分:3)

对我有用的计划是(因为这是一个已经签出的仓库)运行git config core.sharedRepository true以将仓库设置为共享仓库。然后我通过并确保所有git文件都是chmod到664,并且所有文件夹都是chmod到775,以允许git的组可写性在用户之间正常工作。然后,只需让每个用户在其主文件夹中为电子邮件地址,名称等设置自己的用户级git配置。

注意:仍然需要维护世界可读性以及回购中某些文件的所有权,因为在这种特殊情况下,有关的回购服务是由我们的开发服务器(Apache)。

希望这有帮助!

答案 1 :(得分:1)

首先,我建议您阅读Pro Git一书中的Distributed Workflows chapter,并首先确保您了解最适合您团队的工作流程。

我是一个小团队,我们使用了与您建议的相同的设置。有一个回购,所有工作最终都被纳入。有多个用户使用单独的unix帐户拉,合并,并将自己的分支推送到。

以下是基本步骤:

  • 确保每个人的登录信息都在计算机上的同一组中 为project_dev
  • chown -R :project_dev <git_location>确保git repo 这是每个人的帐户都可以访问的。
  • 之后,确保git repo配置正确 with:git repo-config core.sharedRepository true这样每个人都可以推送到仓库而不会导致与推送对象的潜在权限冲突。

在您处理完这些事情后,用户可以使用sftp或本地文件uri来使用自己的帐户处理该回购。有更多高级方法可以使用git处理帐户权限,但这是最简单的方法之一。查看Pro Git书籍和谷歌搜索其他一些替代方案,Gitolite是更高级的选项之一。

答案 2 :(得分:0)

他们都可以使用同一个用户进行身份验证,然后只需更改提交的作者。

来自git commit的手册页:

--author=<author>
Override the author name used in the commit. 
You can use the standard A U Thor <author@example.com [1] > format. 
Otherwise, an existing commit that matches the given string and its author name is used.

答案 3 :(得分:0)

答案很简短:

这是 forks 如何工作的基础,例如在GitHub上。它们只是单独的存储库,每个开发人员都可以拥有自己的存储库,对此没有任何限制。对于某些(或所有)开发人员,可以有一个(或多个,如果有人愿意)存储库具有只读访问权限,作为生产存储库,所有更改都需要由高级开发人员(或其他适当人员)提取。 / p>

此类叉也可以作为所谓的“遥控器”(远程存储库)添加到本地,并且只读的可以用于每天拉动更改,其中读写的应该用于推送/保存更改。 拉取请求可以使用各种软件制作 - 例如。 GitHub有独立的功能。 拉取请求通常是一种要求将更改提取到您没有“写入”权限的存储库的方法。拥有“写入”权限的人可以接受,评论,更改或拒绝等等,让您更好地控制此类代码库的内容。

这里的线索是 Git是一个分布式版本控制系统,您可以拥有多个存储库,以您想要的方式组织它们。一些存储库可以是开发人员的读写存储库,有些可以是只读存储库。

@BeRecursive提到了一个概念:提交提交的用户不一定是将更改上传到存储库的用户。但这是绝对不同的想法,它很容易被愚弄,因此我认为你不应该依赖这种方法。