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ません) で確認できます。さらに、上流のレポのように見えるレポ も発見しました: http://hub.darcs.net/visq/language- c、さらにいくつかの新しい変更があります。もちろん、これも darcs-2 レポです。darcs-2darcs-1language-c

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、すぐに決定的な回答を得たいと思っています.)

4

1 に答える 1

2

実際には、再現可能な変換の状況はより複雑であり、darcs convert.

警告の根底にある主な問題は、2 つのリポジトリに同じパッチがあり、順序が異なる場合、互換性のないパッチが取得される可能性があることです。

同じリポジトリで変換を 2 回続けて実行すると、同じ結果が得られます。実際、2 つのリポジトリでまったく同じパッチを同じ順序で実行する限り、同じ結果が得られます。

さらに、変換は実際には「プレフィックスクローズ」です。2 つのリポジトリを使用でき、一方は他方と同じパッチで同じ順序で開始され、最後にいくつかの追加パッチもあります。次に、2 つのリポジトリを変換すると、再び互換性のあるリポジトリになります。

したがって、シナリオで行う必要がある主なことは、元の変換を再現することです。

リポジトリから行われた可能性が非常に高く、code.haskell.orgそこにあるパッチは当時と同じ順序のままです。上流のリポジトリで順序を変更することはまれです。これは通常、誰かがパッチを消去したときにのみ発生するためです。

したがって、リポジトリを新たに取得し、code.haskell.orgそこにパッチを適用してから変換を行うと、おそらくすべて問題ないことがわかるでしょう。次に、新しいhub.darcs.netレポを取得し、変換された追加のパッチをそこにプルして、問題がないことを確認します。安全のためにa を実行darcs checkします。

于 2015-12-20T21:09:45.130 に答える