web-dev-qa-db-ja.com

少量の元のコードを使用する大規模な書き直しをフォークする必要がありますか?

私は図書館を書いています。これは、私のニーズ(主に、PCLの互換性)に合わせて、完全に書き直されたバージョンです。ただし、PCLに準拠するために多くの変更を加える必要があるため、APIは完全に書き直されます。また、書き直しなので、通常フォークで見られるように、ライブラリから始めて少しずつ変更することはできません。私はそれを試しましたが、うまくいきませんでした。

だから私は何をすべきですか?ここでフォークする必要がありますか、それとも新しいライブラリを作成する必要がありますか?

6
It'sNotALie.

「それは別のものの完全に書き直されたバージョンです[...]」

厳密に言えば、完全に書き直されたものはバージョンとは見なされません。少なくとも、「バージョン」をある程度正式に採用するコンピューティングではそうではありません。たとえば、Linuxを「Unixのバージョン」と呼ぶのは誤解を招きます。このために広く受け入れられている言葉は「クローン」です。

書き直されたものは、たとえそれがクローンであるという点でオリジナルに似ていても(類似または同一のインターフェースを持つなど)、フォークになることはできません。

オリジナルを変更しようとして機能しなかったため、リライトに着手したため、そのブリッジはすでに焼き付けられています。リライトはバージョンではないため、フォークとは見なされません。インターフェイスが異なるため、クローンでもありません。

これは、古いものと同様の機能領域をカバーする新しいライブラリです。

ライブラリの内部が複雑で再利用する価値があり、既存の内部を使用するように新しいインターフェイスを簡単に適合させることができる場合は、ライブラリを拡張するケースを作成できます。古いインターフェイスをそのままにしておく(おそらくそれらを削除する方法を提供するスペースを節約するためにコンパイル時に)。ただし、このライブラリでそのアプローチが実行可能である場合は、completeの書き換えは行いません。

1
Kaz

テストはありますか?もしそうなら、彼らは行動ではなくコードにどれほど緊密に結びついていますか?テストが動作レベルで機能する場合は、テストを実行します。

テストがない場合は、(お願いします)いくつか書いて、それを使って必要なものを追い出してください。書き直しのように聞こえるので、アイデアを再利用することは別として、それは「メジャーリリース番号」であり、したがって完全に新しいバージョンであると言ったほうがよいかもしれません。

0
Ghoti

だから私は何をすべきですか?ここでフォークする必要がありますか、それとも新しいライブラリを作成する必要がありますか?

両方のオプションを使用すると、古いプロジェクトの何らかの形の新しいイテレーションに取り組むことができます。違いは他のものにあります:

  1. フォークすると、前のイテレーションのコードの最後のバージョンで作業を開始できるようになります。したがって、ここでは、前のイテレーションと比較して、新しいイテレーションを想定する構造/設計がどの程度類似しているかによって異なります。違いが大きすぎる場合は、フォークする代わりに新しいライブラリを開始することを選択できます。
  2. 新しいプロジェクトを作成すると、前のイテレーションのソースコードリポジトリから自分自身を切り離すことになります。フォークすると、プロジェクトが同じリポジトリに保持され、特定の履歴バージョンにロールバックしたり、特定の履歴バージョンから取得したりできるようになります。この観点から、フォークしないことの利点は、おそらく、順序と編成が改善され、新しいリポジトリが乱雑にならないことです新しく開始
  3. これがオープンソースのコミュニティ主導のプロジェクトである場合は、決定自体がコミュニティにコンテンツを伝えるという事実に基づいて、フォークするかどうかを検討する必要があります。分岐は、新しい反復が前の反復の直接の継続であるという観点から考えられるべきであることを示します。新しい別のプロジェクトを開始すると、反対のことが示されます。
0
Geezer

基本的にすべてを最初から書き直していることを考えると、新しいプロジェクトを作成する必要があります。フォークは、2つが十分な類似性を共有していることを意味し、将来的には機能を共有したり、ここで新しい追加を行ったり、修正を加えたりすることができます。それは明らかにそうではないでしょう。

0
iheanyi