Google 回购工具(master 分支)无法从 Windows 上的本地镜像同步

Google repo tool (master branch) fails to sync from local mirror on Windows

最近更新了 Google 回购工具的主分支以支持 Windows OS。从提交日志中可以清楚地看出:https://gerrit.googlesource.com/git-repo/+log

我能够 运行 使用 Windows 上的 repo 工具(使用 Windows 上的 MinGW Git)等基本命令,如 repo init 和 repo sync。在我的工作中,我需要创建存储库的本地镜像,然后使用它。 repo 工具可以很好地创建镜像存储库。

以下是用于在 Windows OS 上的本地驱动器上创建镜像存储库的命令。

$ repo.cmd init -u <URL> -b <branch_name> -m <manifest_file_name> --mirror --no-repo-verify

$ repo.cmd sync --no-tags

但是当我引用上面的镜像到其他驱动器同步时,它显示错误。

Command:
$ repo.cmd init -u <URL> -b <Branch_name> -m <manifest_file_name> --reference="C:\git-repo\test\mirror-testing\mirror" --no-repo-verify

Error:
error: object directory C:/git-repo/test/mirror-testing/mirror/project/manifest.git/objects? does not exist; check .git/objects/info/alternates.

上述命令在 C:/git-repo/test/mirror-testing/mirror/project/manifest.git/objects/info/ 目录中创建备用文件,该文件包含以下路径:

C:\git-repo\test\mirror-testing\mirror\project/manifest.git\objects

我试过其他格式,提供参考价值:

Git format: "/C/git-repo/test/mirror-testing/mirror"
Cygwin format: "/cygdrive/c/git-repo/test/mirror-testing/mirror"

在参考中使用上述格式不会在对象目录中创建备用文件。

在上述所有情况下,repo init time 只是表明镜像未被引用并且 init 是从网络完成的。

当我用 Cygwin Git + Google 回购工具(稳定分支)重复相同的测试时,我没有看到任何错误,回购初始化时间和同步时间与镜像初始化和同步时间,这只是表明引用了镜像。

是否有人使用 Windows 上的 Google 存储库创建镜像并在其他驱动器中同步用作参考?

我已经在 Windows 7 和 Windows 10 上使用 MinGW Git 测试了 Google 回购工具主分支。 repo init 和 repo sync 在 OS.

上工作

即使使用 --mirror 创建本地镜像也能正常工作,但引用该本地镜像在其他驱动器中同步不起作用并显示错误:"object directory not found".

需要明确的是,对本地镜像使用 --reference 会显示错误,但它最终会使用网络并忽略本地镜像。最终命令成功完成,但它没有使用本地镜像。我目前在 Windows 上没有看到任何解决方法。

同时 Windows 10 在不使用任何 VM 的情况下原生支持 Linux bash。 WSL,Linux 的 Windows 子系统,是 Windows 10 的一项免费、可选功能,允许 Linux 程序在 Windows 上 运行。它为您提供 bash shell 的 Windows 版本和一个兼容层,允许许多 Linux 程序在您的 Windows 上本地 运行机器。使用此选项,您可以将 Cygwin Git 替换为 Linux Git.

我已经在 Linux Bash(安装了 Ubuntu 发行版)上测试了 repo 工具的 repo init、sync、mirror 和 reference 命令,它可以工作。事实上我们使用 Linux bash 所以 Goole repo stable 分支可以正常工作,你不需要使用 master 分支来让它工作。