git子模块作为构建的一部分

git子模块作为构建的一部分,git,build,git-submodules,Git,Build,Git Submodules,我正在尝试设置一个git存储库,其中包含一个子模块存储库。在本例中,让我们调用2个repos:Super&Sub。因此,我初始化了超级回购,然后对第二次回购添加了一个子模块。我用Super repo提交了.gitmodules文件,这样当您执行git克隆——递归时,它会将子模块沿着Super向下拉。目前我们的URL格式如下: ssh://user.name@serverUrl/path/to/repo.git 现在让我们假设我有3个用户:user.a,user.b和user.c用户。a将子模块

我正在尝试设置一个git存储库,其中包含一个子模块存储库。在本例中,让我们调用2个repos:Super&Sub。因此,我初始化了超级回购,然后对第二次回购添加了一个子模块。我用Super repo提交了
.gitmodules
文件,这样当您执行
git克隆——递归时,它会将子模块沿着Super向下拉。目前我们的URL格式如下:

ssh://user.name@serverUrl/path/to/repo.git
现在让我们假设我有3个用户:
user.a
user.b
user.c
<代码>用户。a
将子模块添加到超级回购
user.b
是生成服务器。当
user.a
添加子模块时,则
user.b
应将子模块作为
user.b
(而不是
user.a
)获取。这同样适用于
user.c
当他克隆super并执行提交时,日志应该反映它是由
user.c
提交的,而不是作为
user.a
(添加子模块的人)提交的。我怀疑有一种方法可以指定子模块的url,而不将user.name作为url的一部分。这就引出了我的问题。如何正确设置git存储库,使url不包含用户名?大概这涉及到复制一些键,我只是好奇什么是正确的方法来做这件事

非常感谢
Ben

使用gitolite,这样就操作系统而言,您可以使用同一用户访问所有回购协议。每个ssh密钥将确定id。

尝试以以下方式为子模块使用相对URL:

[submodule "common/sub"]
path = common/sub
url = ../common/sub
我们最终使用它来完成这项工作,到目前为止似乎工作得很好…这也会起作用:)但请检查gitolite,因为它为每个分支提供了一些更简洁的权限选项等。请参见此处的解决方案: