Bootstrap 、 Angular.js 、 Elasticsearch 、 Symfony Framework 、 Swiftなどのプロジェクトが新しい開発者を引き付けており、彼らのコミュニティは成長しています。 これらすべてがプロジェクトに大きな成長をもたらし、開発者自身が全世界が使用するものの開発に参加することに興味を持っています。
私は、他の多くのプログラマーと同様に、主にPHPでのオープンソースプロジェクトの開発に抵抗することもできませんでした。 しかし、私が始めたとき、私は問題に遭遇しました-「貢献」のプロセスを適切に整理する方法、開始する場所、私のプルリクエストを考慮する方法などを知りませんでした。
同様の問題に直面しているすべての初心者の「貢献者」、猫へようこそ。

Symfony 、 Yii2を使用して、さまざまなPHPフレームワークの例を使用して、オープンソースプロジェクトへの参加プロセスを検討します。
最初に行うことは、GitHubでアカウントを作成することです(まだアカウントを持っていない場合)。 GitHubプロファイルは実際にはオープンソースの世界での名刺であるため、慎重に記入してください。
次に、選択したプロジェクトの開発参加ルールを理解する必要があります。 通常、これらのルールはファイル内にあります。
CONTRIBUTING.mdリポジトリのルート。 たとえば、Symfonyの場合、 Symfony Contributingです。
通常、オープンソースプロジェクトの開発に参加するにはいくつかの方法があります。主な方法は、何らかのエラーまたは望ましい改善に関するメッセージを送信する( 問題を送信する)か、修正または改善を伴うプルリクエストを直接作成する( コード投稿 )です。 ドキュメントの改善、他の開発者から寄せられた質問への回答などにも参加できます。
発送問題
見つかったバグや改善点を開発者に通知する場合は、適切なGitHub Issueを作成する必要があります。 ただし、作成する前に、他の人が作成したものと同じまたは類似したものが既に存在するかどうかを確認してください。 作成する前に、このプロジェクトのエラーレポートを送信するためのルールを必ずお読みください。 たとえば、 Yii Frameworkのルールは次のとおりです。 通常、説明は可能な限り明確で理解しやすいものにし、できればエラーの再現方法の例と説明が望ましいはずです。 これにより、明確な質問などに答えることができなくなるため、開発者とあなたの両方にとって多くの時間を節約できます。
プルリクエストを送信
修正または作成したいGitHubの問題を見つけた場合、次のステップは適切なプルリクエストを送信することです。
繰り返しになりますが、まず最初に、選択したプロジェクトの開発への参加ルールを読むことを忘れないでください。
たとえば、 Yiiのルールは次のとおりです。
次に、オープンソースプロジェクト( Git Workflow )に参加するときにGitとGitHubで作業する最も一般的なプロセスを説明します。
このプロセスはプロジェクトごとに異なる場合があり、一般にオープンソースプロジェクトだけでなく、GitHubおよびBitBucketの多くのクローズドプロジェクトにも固有です。
ステップ1-作業環境の準備
当然、開発には作業環境を準備する必要があります。 多くのオープンソースプロジェクトは、どのように構成する必要があるか、どのライブラリ、パッケージ、ツール、それらのバージョンなどが必要かを正確に示しています。
PHPプロジェクトの場合、通常、この最小限のリストのようなものが必要になります。
- Git
- PHP (通常5.3以降のバージョン)
- MySQL
- 作曲家
さらに、多くの場合、PHPUnitが必要です。 通常、それはプロジェクト自体の一部として使用され、PHPUnitの異なるバージョンではテストが機能しないことがあり、ライブラリの古いプロジェクトのCIサーバーでは最新バージョンで機能するものが機能しない可能性があるため、それを使用することをお勧めします。
ステップ2-プロジェクトリポジトリのフォークを作成する
選択したプロジェクトのページに移動し、「フォーク」ボタンをクリックします。 このコマンドは、このプロジェクトのリポジトリの独自のコピーを作成します。

次に、リポジトリのコピーを複製する必要があります。
git clone https://github.com/<-GitHub->/<->.git
次に、プロジェクトの上流ブランチを追加する必要があります。これはベースリポジトリを参照します(Yiiのオプション)
cd <--> git remote add upstream https://github.com/yiisoft/yii2.git
ステップ3-Gitを構成する
次に、コミットを送信するときに正しい名前が表示されるように、Gitを少し調整する必要があります。
これには、次のコマンドを実行するだけで十分です。
git config --global user.name " " git config --global user.email you@example.com
このプロジェクトに対してこれらの値をローカルで構成する場合は、プロジェクトフォルダーで
git config --local user.name " " git config --local user.email you@example.com
ステップ4-作曲家
さらに、プロジェクトの99%のケースでは、Composerを介してライブラリをロードする必要があります
cd <--> composer install
ステップ5-テスト
始める前に、お気に入りのIDEまたはPHPUnitコンソール(あまり頻繁ではないBehat、PhpSpecなど)で設定して、テストを開始して操作します。
設定後、プロジェクトのテストを実行し、それらが正しく合格することを確認します。
ステップ6-コードの使用
修正の作業を開始するには、まずベースリポジトリの現在のコードに基づいて適切なGitブランチを作成する必要があります。
変更の本質を反映するブランチの名前を明確かつ簡潔に選択してください。
ブランチ名にGitHubの発行番号を含めることをお勧めします。
git fetch upstream git checkout -b 1234-helper-class-fix upstream/master
これで、コードの作業を安全に開始できます。
作業するときは、次の規則を覚えておいてください。
- コーディング標準(通常はPSR標準)に従います。
- バグが修正されたこと、または新しい関数が実際に機能することを証明する単体テストを作成します。
- どうしても必要な場合を除き、後方互換性を損なわないようにしてください。
- シンプルで論理的にシームレスなコミットを使用します。
- 変更をコミットするときは、明確で明確な完全なメッセージを書きます。
ステップ7-プルリクエストの送信
コードの作業中に、プロジェクトのメインブランチに他の変更を加えることができます。 したがって、変更を送信する前に、ブランチをリベースする必要があります。
これは次のように行われます。
git checkout <--> git fetch upstream git rebase upstream/master
これで、変更を送信できます。
git push origin <-->
その後、参加するプロジェクトのリポジトリクローンに移動し、[新しいプルリクエスト]ボタンをクリックします。
そして、次のフォームが表示されます。

左側では、変更をマージするブランチを選択する必要があります(通常はマスターですが、一般的にはリベースしたブランチです)。
右側には、変更のあるブランチがあります。
次に、GitHubから、変更を自動的に投稿できるかどうかについてのメッセージが表示されます。
ほとんどの場合、マージ可能が表示されます。
競合がある場合、ほとんどの場合、変更を確認する必要があります。
次に、「プルリクエストの作成」ボタンをクリックします。
プルリクエストの名前と説明を記入するときは、プルリクエストが作成される課題番号を示すことをお勧めします。
通常、多くの大規模プロジェクトでは、多くの場合Travis-CIであるCIサーバーが構成されます。
プルリクエストを作成した後、テスト、おそらくはメトリックスなどのツールを実行します。 以下に示すように、Pull Requestに彼の作業の結果が表示されます。

テストが失敗するか、ビルドがアセンブルされない場合、赤いエラーメッセージが表示され、詳細リンクを介して正確に何が間違っているかを確認できます。 ほとんどの場合、すべてのチェックが正常に渡されるように、プルリクエストを修正する必要があります。
ステップ8-プルリクエストの処理
プルリクエストで問題がなければ、すぐに彼はチームの誰かに倒されます。
しかし、開発者からいくつかの変更を求められることがよくあります。
これを行うには、手順6に戻り、変更とコミットを行った後、同様のコマンドを実行します。
git checkout <--> git fetch upstream git rebase upstream/master git push origin <-->
注:個人的には、1回のコミットでプルリクエストを送信するのが好きです。 これを行うために、私は不必要なコミットのスカッシュを作ります。 これを行う方法は、ここで読むことができます: gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html
ステップ9-あなたの後に出る
プルリクエストが承認または拒否されたら、変更を加えてブランチを削除する必要があります。
簡単にできます
git checkout master git branch -D <--> git push origin --delete <-->
最後のコマンドの代わりに、実行することもできます
git push origin :<-->
おわりに
おそらくこれは、オープンソースプロジェクトに関係する基本的なことのすべてでしょう。
あなたが怠け者ではなく、オープンソースプロジェクトに参加していることを付け加えたいと思います。 これは巨大で興味深い経験であり、履歴書のチェックマークでもあります。
また、PHP開発者にはSymfonyに貢献する方法に関する優れたガイドがあり、Symfonyで作業するときだけでなく、 symfony.com / doc / current / contributing / index.htmlにも役立ちます。
みんなありがとう!