为什么 REPO 连接远程地址和文件夹?

Why is REPO concatenating remote address and folder?

我正在尝试使用 repo 为一个项目获取多个 git 存储库。我有一个个人 git 服务器,其中托管了所有 git 存储库

我可以通过执行此命令手动克隆单个存储库:

git clone my_repo@my_repo_address:repo_a

但是由于我需要为不同的项目使用相同的存储库,所以我决定使用 REPO 而不是手动克隆。

我创建了一个要使用的 default.xml 文件,它包含以下内容:

<?xml version="1.0" encoding="UTF-8"?>
<manifest>
  <remote  name="project"
           fetch="my_repo@my_repo_address"/>

  <project name="repo_a" remote="project" revision="master" path="a"/>
  <project name="repo_b" remote="project" revision="master" path="b"/>
  <project name="repo_c" remote="project" revision="master" path="c"/>
</manifest>

我将此 default.xml 文件托管在名为 git-repo-fetch 的同一 git 服务器上。我可以按如下方式成功初始化回购协议:

 repo init -u my_repo@my_repo_address:git-repo-fetch

并且初始化成功。但是当我执行 repo sync 时,我得到了错误:

Fetching project repo_c
fatal: 'git-repo-fetch/my_repo@my_repo_address/repo_c' does not appear to be a git repository
fatal: Could not read from remote repository.

我的问题是 为什么回购将 XML 回购名称 (git-repo-fetch) 与提取地址 (my_repo@my_repo_地址)?

通过这样做,它会尝试从 git-repo-fetch/my_repo@my_repo_address 获取,这是错误的。

据我所知(比如在this thread from 2011), repo一直支持ssh://URL方案

ssh://[user@]host.xz[:port]/path/to/repo.git/ 

并且不是类scp语法user@host:repo

user@host:path is a nice shorthand on the command line, but ssh:// is less ambiguous for a manifest XML file.

使用 scp 语法,repo 执行 "munge" URL,如 mentioned in 2012.