【问题标题】:Libgit2sharp how to do a mirror pushLibgit2sharp如何做镜像推送
【发布时间】:2014-09-08 18:06:44
【问题描述】:

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

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

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

有人试过吗?有没有更好的方法来做到这一点?

【问题讨论】:

    标签: push mirror libgit2sharp


    【解决方案1】:

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

    不幸的是,目前它不支持带有推送模式的 refspec,因此如果您想推送每个引用,则必须将它们中的每一个单独添加为推送的 refspec。

    【讨论】:

    • 感谢您的回复卡洛斯。循环遍历本地存储库中的每个 ref 会有所帮助。
    • 嗨,卡洛斯。您能否为该任务提供一些示例代码?我需要做同样的事情,但不明白如何更改目标网址。 Network.Push(remote) 试图推送到旧的仓库,但我看不出有什么办法可以改变它。
    猜你喜欢
    • 2017-03-31
    • 1970-01-01
    • 2021-02-27
    • 1970-01-01
    • 1970-01-01
    • 2014-05-01
    • 2020-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多