Google存储库工具(主分支)无法从Windows上的本地镜像同步

时间:2018-11-30 10:04:15

标签: windows git repo

最近,针对Google回购工具的master分支已更新为支持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
  • -no-repo-verify用于强制使用repo工具的master分支。
  • 以上命令在本地驱动器C:\ git-repo \ test \ mirror-testing \ mirror中创建镜像

但是当我参考上述镜像在其他驱动器中进行同步时,它将显示错误。

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"

在引用中使用以上格式不会在对象目录中创建替代文件。

在上述所有情况下,

回购初始化时间仅表明未引用镜像,而是通过网络完成初始化。

当我使用Cygwin Git + Google repo工具(稳定分支)重复相同的测试时,我看不到任何错误,并且repo init时间和同步时间与mirror init和同步时间相比要少得多,这表明镜子。

  • repo.cmd是一个批处理文件包装程序,可使用python调用repo工具。 repo.cmd文件包含单行

    @call python%〜dp0 \ repo%*

  • 我正在Windows 7中使用Cygwin终端运行这些命令。

  • 为清楚起见,在引用镜像时repo init和repo sync显示错误,但通过从外部网络进行同步可以成功完成。问题是没有引用镜像。

有人在Windows上使用Google存储库创建镜像并在其他驱动器中进行同步吗?

1 个答案:

答案 0 :(得分:0)

我已经在Windows 7和Windows 10上使用MinGW Git测试了Google回购工具主分支。 repo init和repo sync在两个操作系统上都可以工作。

即使使用--mirror创建本地镜像也可以,但是引用该本地镜像以在其他驱动器中同步则不起作用,并显示错误:“找不到对象目录”。

将--reference与本地镜像一起使用时会显示错误,但最终会使用网络并忽略本地镜像。最终,该命令成功完成,但是没有使用本地镜像。我目前在Windows上看不到任何解决方法。

同时,Windows 10本机支持Linux bash,而无需使用任何VM。 WSL是Windows的Linux子系统,是Windows 10的一项免费的可选功能,它允许Linux程序在Windows上运行。它为您提供bash shell的Windows版本和兼容性层,该兼容性层允许许多Linux程序在Windows计算机上本机运行。使用此选项,您可以将Cygwin Git替换为Linux Git。

我已经在Linux Bash(安装了Ubuntu发行版)上测试了回购工具,用于回购初始化,同步,镜像和参考命令,并且它可以正常工作。实际上,我们使用Linux bash只是为了让Goole repo稳定分支工作,而无需使用master分支来使其工作。