Libgit2sharp如何做镜像推送

时间:2014-09-08 09:34:36

标签: push mirror libgit2sharp

我是Git / LibGit2Sharp的新手,我正在尝试使用LibGit2Sharp创建一个git存储库的镜像。按照此处给出的说明https://github.com/libgit2/libgit2sharp/issues/577,我首先通过向其添加远程数据库将外部存储库镜像到本地文件夹,并使用repo.Network.fetch(remote, fetchRefSpec) fetchRefSpec refs/\*:refs/*

现在,我想将数据推送到另一个远程存储库。我在这里很困惑。因为,当通过git命令执行此操作时,将remote.remoteName.mirror配置条目设置为true,然后执行git push remoteName。当mirror设置为true时指定任何其他refSpec会产生错误。

然而,当使用LibGit2Sharp时,即使我设置了mirror = true,我仍然需要在推送时提供pushRefSpec。提供空或通配符refSpecs抛出异常。我甚至试过refs/tags/\*:refs/tags/*,但我得到了同样的例外。循环遍历pushRefSpec中的所有分支,但不创建镜像。

有人试过吗?是否有更好的方法可以做到这一点?

1 个答案:

答案 0 :(得分:1)

.mirror配置是git工具的一个选项。 libgit2(sharp)在不同的级别工作,您需要准确指定要推送的内容。

目前遗憾的是,它不支持带有推送模式的refspecs,所以如果你想推送每个引用,你必须单独添加它们作为推送的refspec。