首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将几个最后的补丁从darcs-1存储库转移到darcs-2 (在其他地方转换)

如何将几个最后的补丁从darcs-1存储库转移到darcs-2 (在其他地方转换)
EN

Stack Overflow用户
提问于 2015-12-21 02:25:35
回答 1查看 80关注 0票数 3

我已经克隆了https://hackage.haskell.org/package/language-c-0.4.7中列出的上游存储库,即:http://code.haskell.org/language-c

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

但是后来我发现,如果我想在http://hub.darcs.net上发布它们,我需要一个darcs-2存储库,而我最初用于克隆的存储库出人意料地是一个darcs-1存储库。(可以用darcs show repo检查,在darcs-1存储库的情况下,它不会打印darcs-2。)此外,我还发现了一个看起来像上游存储库的language-c存储库: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,我希望很快就能得到明确的答案。)

EN

回答 1

Stack Overflow用户

发布于 2015-12-21 05:09:45

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

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

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

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

因此,在您的场景中,您需要做的主要工作是重新生成原始转换。

这很可能是从code.haskell.org代码库中完成的,而补丁的顺序仍然与当时相同-他们很少在上游代码库中改变顺序,因为只有当有人删除补丁时才会发生这种情况。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34384301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档