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
- --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"
在参考中使用上述格式不会在对象目录中创建备用文件。
在上述所有情况下,repo init time 只是表明镜像未被引用并且 init 是从网络完成的。
当我用 Cygwin Git + Google 回购工具(稳定分支)重复相同的测试时,我没有看到任何错误,回购初始化时间和同步时间与镜像初始化和同步时间,这只是表明引用了镜像。
repo.cmd 是一个批处理文件包装器,用于使用 python 调用回购工具。
repo.cmd 文件包含单行
@call python %~dp0\repo %*
我在 Windows 7 到 运行 这些命令中使用 Cygwin 终端。
要清楚 repo init 和 repo sync 在引用镜像时显示错误,但它通过从外部网络同步成功完成。问题是没有引用镜像。
是否有人使用 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 分支来让它工作。
最近更新了 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
- --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"
在参考中使用上述格式不会在对象目录中创建备用文件。
在上述所有情况下,repo init time 只是表明镜像未被引用并且 init 是从网络完成的。
当我用 Cygwin Git + Google 回购工具(稳定分支)重复相同的测试时,我没有看到任何错误,回购初始化时间和同步时间与镜像初始化和同步时间,这只是表明引用了镜像。
repo.cmd 是一个批处理文件包装器,用于使用 python 调用回购工具。 repo.cmd 文件包含单行
@call python %~dp0\repo %*
我在 Windows 7 到 运行 这些命令中使用 Cygwin 终端。
要清楚 repo init 和 repo sync 在引用镜像时显示错误,但它通过从外部网络同步成功完成。问题是没有引用镜像。
是否有人使用 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 分支来让它工作。