最近,针对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
但是当我参考上述镜像在其他驱动器中进行同步时,它将显示错误。
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存储库创建镜像并在其他驱动器中进行同步吗?
答案 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分支来使其工作。