2015-12-20 27 views
3

我克隆在 https://hackage.haskell.org/package/language-c-0.4.7作爲上游 回購,即列出的回購:http://code.haskell.org/language-c如何幾個最後的補丁從的darcs-1回購轉移到的darcs -2-酮(別處轉換)

我已經做了一些修改,並將它們記錄爲補丁。

但後來我發現,如果我想要把它們發佈在 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, 我希望能得到很快一個明確的答案。)

回答

2

在實踐中具有可重複的情況轉換更加複雜 - 並且不如壞 - 由darcs convert提供的可怕警告。

警告的主要問題是,如果兩個存儲庫具有相同的修補程序但順序不同,則可能會得到不兼容的修補程序。

如果您在同一個存儲庫中連續兩次重新運行轉換,則會得到相同的結果。事實上,只要您在兩個存儲庫上運行完全相同的修補程序,的順序是,您將得到相同的結果。

此外,轉換實際上是「前綴關閉」:你可以有兩個倉庫,並用相同的修補程序的另一個開始,以相同的順序,也有在年底一些額外的補丁。然後轉換這兩個存儲庫將再次導致兼容的存儲庫。

因此,在您的情況下,您需要做的主要事情是重現原始轉換。

這很可能是從code.haskell.org回購協議完成的,而且補丁仍然與當時的順序相同 - 它們很少會在上游回購協議中更改訂單,因爲它通常只會在有人剔除修補程序時發生。

所以,如果你做了一個新的code.haskell.org回購,把你的補丁拉進去,然後做一個轉換,你可能會發現一切正常。然後,您可以獲取新的hub.darcs.net回購,將額外轉換後的修補程序拖入其中,並檢查它們是否正常。運行一個darcs check以保證安全。

+0

感謝您的建議!我會更深入地考慮這一點。不幸的是,它並不順利 - 推動轉換回購時,darcs「無法通勤」一些標籤補丁,它似乎拒絕進一步做任何事情 - http://lists.osuosl.org/ pipermail /的darcs用戶/ 2015-月/ 027164.html –