SSH 项目的 url 取决于用户名
SSH projects' urls depends on the username
我正在使用 gerrit。
所有 项目的 url 看起来像这样:
ssh://username@domain:port/project
在标准git服务器(git实验室,git集线器...)它看起来像这样:
git@domain:project.git
我的问题是 gerrit url 依赖于 用户名 。
我想在我的一个项目中使用子模块,问题是在 .gitmodules 中我最终得到这样的结果:
[submodule "MyModule"]
path = MyModule
url = ssh://username@domain:port/project
这显然是错误的,因为每个用户的用户名不同
暂时这里是我看到的解决此问题的选项:
1) 在 gerrit 中使用通用 ssh 地址,就像在其他 git 服务器中一样(如果可能的话)
2) 使用 .gitmodules 中的 http 地址,每个用户都必须调整其子模块的原始遥控器(脚本可能会这样做)
3) 不要部署 .git 子模块并使用脚本为每个用户添加子模块
我的问题是:
1)可能吗?还有其他选择吗?什么是最佳选择?
您不需要将用户名放入 ssh url。如果服务器上的用户名与 Gerrit 上的用户名匹配,该命令将在没有用户名的情况下正常工作。否则,您可以使用 .ssh/config 文件指定特定服务器的用户名:
Host dev.mydomain.com
User myUserName
现在,只要看到对 dev.mydomain.com
的 ssh 调用,ssh 就会添加 myUserName@
我遇到了同样的问题,我使用 GIT_SSH 解决了。 GIT_SSH 环境变量定义了每当 Git 需要创建 ssh 连接时使用的脚本的路径。
您可以设置为GIT_SSH=<PATH>/git-ssh.sh
。
git-ssh.sh 的内容将是这样的:
#!/bin/bash
ssh domain:port/project -l $USER
我正在使用 gerrit。
所有 项目的 url 看起来像这样:
ssh://username@domain:port/project
在标准git服务器(git实验室,git集线器...)它看起来像这样:
git@domain:project.git
我的问题是 gerrit url 依赖于 用户名 。
我想在我的一个项目中使用子模块,问题是在 .gitmodules 中我最终得到这样的结果:
[submodule "MyModule"]
path = MyModule
url = ssh://username@domain:port/project
这显然是错误的,因为每个用户的用户名不同
暂时这里是我看到的解决此问题的选项:
1) 在 gerrit 中使用通用 ssh 地址,就像在其他 git 服务器中一样(如果可能的话)
2) 使用 .gitmodules 中的 http 地址,每个用户都必须调整其子模块的原始遥控器(脚本可能会这样做)
3) 不要部署 .git 子模块并使用脚本为每个用户添加子模块
我的问题是:
1)可能吗?还有其他选择吗?什么是最佳选择?
您不需要将用户名放入 ssh url。如果服务器上的用户名与 Gerrit 上的用户名匹配,该命令将在没有用户名的情况下正常工作。否则,您可以使用 .ssh/config 文件指定特定服务器的用户名:
Host dev.mydomain.com
User myUserName
现在,只要看到对 dev.mydomain.com
myUserName@
我遇到了同样的问题,我使用 GIT_SSH 解决了。 GIT_SSH 环境变量定义了每当 Git 需要创建 ssh 连接时使用的脚本的路径。
您可以设置为GIT_SSH=<PATH>/git-ssh.sh
。
git-ssh.sh 的内容将是这样的:
#!/bin/bash
ssh domain:port/project -l $USER