首先,请允许我说我是Git n00b,并且相对而言是完全不熟悉版本控制的。到目前为止,我们已经在Visual Studio的Windows环境中使用Git做得很好,而且一切似乎都进行得很好。但是,令人烦恼的是我们目前手头的.gitmodules
“战斗”。
如果UserA创建一个新的子模块,则.gitmodules
中“原点”的路径将类似于:
ssh://usera@myserver/Repositories/NewModule
当我(用户B)从服务器中提取更改时,我使用该条目下载了
.gitmodules
的副本。当我尝试初始化新的子模块时,我不可避免地无法从myserver下载,因为我是userb,并且仅持有userb的SSH密钥。我最终不得不更改.gitmodules
以反射(reflect)我的用户名:ssh://userb@myserver/Repositories/NewModule
我最终将 push 这一改变。
因此,我们最终遇到了一个递归问题,即我们都将用户名从UserA更改为UserB,反之亦然。当我们中的任何一个拉/推到服务器时。
有什么想法可以解决这个问题吗?也许只是两个子模块的共享用户帐户对我们来说都是吗?能做到吗?怎么样?还有其他想法,还是以前解决过此问题的任何想法?
最佳答案
一种选择是在myserver上安装Gitosis。每个人的克隆URL都将是相同的,格式为ssh://git@myserver:/path/to/repo.git
。 Gitosis允许您注册开发人员的SSH密钥,并允许您指定身份验证和授权规则。
您还可以通过在myserver上入侵~git/.ssh/authorized_keys
并通过修改此example update hook进行授权来推出自己的产品。