【问题标题】:How to transfer several last patches from a darcs-1 repo to a darcs-2 one (converted elsewhere)如何将最后几个补丁从 darcs-1 存储库转移到 darcs-2 一个(在别处转换)
【发布时间】:2016-03-26 20:32:23
【问题描述】:

我已经克隆了列出的 repo https://hackage.haskell.org/package/language-c-0.4.7 作为上游 repo,即:http://code.haskell.org/language-c.

我在其中做了一些修改和修复,并将它们记录为补丁。

但后来我发现如果我想在 http://hub.darcs.net,我需要一个 darcs-2 存储库,以及最初的一个 我用于克隆的意外地是一个 darcs-1 存储库。 (可以使用darcs show repo 进行检查,在darcs-1 repo 的情况下不会打印darcs-2。)此外, 我还发现了一个language-c repo 在 这看起来像一个上游回购: http://hub.darcs.net/visq/language-c,还有一些新的变化 那里。当然,它也是一个 darcs-2 存储库。

我可以转换为 darcs-2,但我读到它不是 可重现,并且不能在结果之间交换补丁 转换的不同运行。

导出我最后几个补丁的最简单方法是什么? darcs-1 存储库并将它们应用到 darcs-2 存储库( http://hub.darcs.net/visq/language-c)?

(至于http://code.haskell.org/language-chttp://hub.darcs.net/visq/language-c 应该被认为是 上游,见 https://mail.haskell.org/pipermail/haskell-cafe/2015-December/122545.html, 我希望很快能得到一个明确的答案。)

【问题讨论】:

    标签: export patch darcs format-conversion


    【解决方案1】:

    在实践中,可重复转换的情况比darcs convert 提供的可怕警告更复杂——而且没有那么糟糕。

    警告的主要问题是,如果两个存储库具有相同的补丁但顺序不同,您可能会得到不兼容的补丁。

    如果您在同一存储库上连续两次重新运行转换,您将获得相同的结果。事实上,只要你在两个具有完全相同补丁的存储库上运行它,以相同的顺序,你就会得到相同的结果。

    此外,转换实际上是“前缀关闭”:您可以有两个存储库,一个以与另一个相同的补丁开始,以相同的顺序,最后还有一些额外的补丁。然后转换这两个存储库将再次生成兼容的存储库。

    因此,在您的场景中,您需要做的主要事情是重现原始转换。

    这很可能是从 code.haskell.org 存储库完成的,并且那里的补丁程序的顺序仍然与当时相同 - 他们很少更改上游存储库中的顺序,因为它通常仅在有人删除补丁程序时发生。

    因此,如果您重新获取 code.haskell.org 存储库,将补丁放入其中,然后进行转换,您可能会发现一切正常。然后,您可以获取新的 hub.darcs.net 存储库,将额外转换的补丁拉入其中,并检查它们是否正常。为了安全起见,请运行darcs check

    【讨论】:

    • 感谢您的建议!我会更深入地研究这个。不幸的是,它进行得并不顺利——在推送转换后的 repo 时,darcs“无法通勤”一些标签补丁,而且它似乎拒绝做任何进一步的事情——lists.osuosl.org/pipermail/darcs-users/2015-December/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-30
    • 1970-01-01
    • 1970-01-01
    • 2010-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多