9

githubで公開されているサードパーティのコードを使用する必要があります。そのコードのgithubのネットワークグラフを見ていると、他のフォークには元のリポジトリにマージされていないコミットがあることがわかります。

どのブランチ/フォークが私に適しているかをどのように判断する必要がありますか?

このような問題に直面している間、あなたの考慮事項を参加させてください。

John Feminellaが示唆しているように、常に(通常は安定した)「リリースされたバージョンのプロジェクト」を使用する必要があります。

もちろん私はそれに同意しますが、この質問は次のいずれかの場合に関連しています。

  • 元の作者はもはやそのコードを維持していません。
  • オリジナルには実装されていないが、複数のフォークで異なる方法で実装されている必要な機能があります
  • コードはまだ開発段階にあり、各フォークには元のフォークとはいくつかの違いがあります(機能、または開発の決定と実装のいずれか)

私は何度もそのようなケースに直面しました。現在、元の作者はまだリポジトリを維持しようとしていますが、彼には十分な時間がないようです。他のフォークはよりアクティブです。生産用に十分安定していると発表されているフォークはありません。前回このようなケースに直面したとき、元のリポジトリにも私にとって重要な機能が実装されていませんでした。

したがって、そのような場合は、最も安定したフォークを選択し、コード内で使用してみて、徹底的にテストし、安定させるためにいくつかの改善に貢献する必要があります。

4

2 に答える 2

7

更新: OPは、問題のプロジェクトが死んでいることを示すために、彼の元の質問を明確にしました。

プロジェクトが停止していて、フォークがN個ある場合、「最良のフォーク」を選択するための通常の戦略は、いくつかの要因によって異なります。

  • プロジェクトのメンテナンスを引き継ぐことを誰かが発表しましたか?メーリングリスト、公開フォーラムなどでニュースを検索します(GitHubだけでなく)。もしそうなら、そのフォークをたどり始めます。

  • ネットワークグラフ上に、(たとえばではなくmaster)別のフォークからのコミットを持つフォークがありますか?もしそうなら、それはサポートが死んだプロジェクトの可能な代替としてこの他のフォークの周りに合体していることを示しています。

  • これらのいずれかが機能しない場合は、もう少し掘り下げてください。しばらく前に分割され、現在サポートが組織されているプロジェクトのバリエーションはありますか?もしそうなら、おそらく他のプロジェクトがあなたのニーズに合うでしょう。

それがすべて失敗すると、プロジェクトを継続するためのサポートがない場合があります。もしそうなら、おそらくそれはあなた自身のかゆみを掻く時です!


元の答え:

これに関するいくつかのコメント:

  • 一般に、特定のフォークまたはブランチを選択するのではなく、プロジェクトのリリースされたバージョンを使用する必要があります。そうしないと、プロジェクトが新しいコミットで更新されるたびに依存関係が変更され、独自のコードでバグを見つけるのが困難になる可能性があります。

  • 常に最新バージョンが必要であり、そのリスクに問題がない場合は、プロジェクトのmasterブランチを使用してください。これは公式のブランチだからです。これは、リポジトリのメインページにアクセスしたときに表示されるデフォルトのブランチになります。

  • 人々は通常、元のコードベースへのある種の変更に関するフィードバックを作成して求めるためにリポジトリをフォークします。

  • したがって、その変更に協力している場合、またはその特定の変更に早期にアクセスすることに特に関心がない限り、他のフォークについて心配する必要はありません。

まれに、プロジェクトの公式のメインライン開発ブランチが以外の名前で呼ばれることがありmasterます。その場合は、READMEを参照して、どのブランチを確認する必要があるかを確認する必要があります。

于 2012-04-29T12:21:02.867 に答える
7

ジョンの答えを完成させるため。

私はhttp://gitpop.heroku.comを使用しています。これは、最も人気がありアクティブなフォークを見つけるのに役立ちます。それはかなり初歩的ですが、それは仕事をします。

編集:2014年3月のように、GitPopが壊れているので、私はそれが私にとって有用だったので私自身を書きました。 http://gitpop2.herokuapp.com

于 2013-08-09T07:43:19.987 に答える