貢献ワークフロー
このガイドは初期セットアップからマージされたプルリクエストまで、XOOPS への貢献のプロセス全体を説明します。
貢献を始める前に、以下があることを確認:
- Git がインストールと設定されている
- GitHub アカウント (無料)
- PHP 7.4+ XOOPS 開発用
- Composer 依存関係管理用
- Git ワークフローの基本的な知識
- 行動規範の熟知
ステップ 1: リポジトリをフォーク
Section titled “ステップ 1: リポジトリをフォーク”GitHub ウェブ インターフェイスで
Section titled “GitHub ウェブ インターフェイスで”- リポジトリに移動 (例:
XOOPS/XoopsCore27) - 右上の Fork ボタンをクリック
- フォーク先を選択 (個人アカウント)
- フォークの完了を待つ
フォークする理由
Section titled “フォークする理由”- 独自のコピーを取得
- メンテナーは多くのブランチを管理する必要がない
- フォークを完全に制御
- プルリクエストはフォークと公式リポジトリを参照
ステップ 2: フォークをローカルにクローン
Section titled “ステップ 2: フォークをローカルにクローン”# フォークをクローン (YOUR_USERNAME を置き換え)git clone https://github.com/YOUR_USERNAME/XoopsCore27.gitcd XoopsCore27
# アップストリーム リモートを追加して元のリポジトリを追跡git remote add upstream https://github.com/XOOPS/XoopsCore27.git
# リモートが正しく設定されていることを確認git remote -v# origin https://github.com/YOUR_USERNAME/XoopsCore27.git (fetch)# origin https://github.com/YOUR_USERNAME/XoopsCore27.git (push)# upstream https://github.com/XOOPS/XoopsCore27.git (fetch)# upstream https://github.com/XOOPS/XoopsCore27.git (nofetch)ステップ 3: 開発環境をセットアップ
Section titled “ステップ 3: 開発環境をセットアップ”依存関係をインストール
Section titled “依存関係をインストール”# Composer 依存関係をインストールcomposer install
# 開発依存関係をインストールcomposer install --dev
# モジュール開発用cd modules/mymodulecomposer installGit を設定
Section titled “Git を設定”# Git アイデンティティを設定git config user.name "Your Name"git config user.email "your.email@example.com"
# オプション: グローバル Git 設定を設定git config --global user.name "Your Name"git config --global user.email "your.email@example.com"テストを実行
Section titled “テストを実行”# クリーンな状態でテストがパスすることを確認./vendor/bin/phpunit
# 特定のテスト スイートを実行./vendor/bin/phpunit --testsuite unitステップ 4: フィーチャー ブランチを作成
Section titled “ステップ 4: フィーチャー ブランチを作成”ブランチ命名規則
Section titled “ブランチ命名規則”パターン <type>/<description> に従う
タイプ:
feature/- 新機能fix/- バグ修正docs/- ドキュメント のみrefactor/- コード リファクタリングtest/- テスト追加chore/- メンテナンス、ツーリング
例:
# フィーチャー ブランチgit checkout -b feature/add-two-factor-auth
# バグ修正 ブランチgit checkout -b fix/prevent-xss-in-forms
# ドキュメント ブランチgit checkout -b docs/update-api-guide
# 常に upstream/main からブランチgit checkout -b feature/my-feature upstream/mainブランチを最新に保つ
Section titled “ブランチを最新に保つ”# 作業を始める前に、アップストリームと同期git fetch upstreamgit merge upstream/main
# 後で、アップストリームが変更した場合git fetch upstreamgit rebase upstream/mainステップ 5: 変更を行う
Section titled “ステップ 5: 変更を行う”- コードを作成 PHP 標準に従う
- テストを作成 新機能用
- ドキュメントを更新 必要な場合
- リンターを実行 とコード フォーマッター
コード品質チェック
Section titled “コード品質チェック”# すべてのテストを実行./vendor/bin/phpunit
# カバレッジで実行./vendor/bin/phpunit --coverage-html coverage/
# PHP CS Fixer を実行./vendor/bin/php-cs-fixer fix --dry-run
# PHPStan 静的分析を実行./vendor/bin/phpstan analyse class/ src/良い変更をコミット
Section titled “良い変更をコミット”# 何を変更したかをチェックgit statusgit diff
# 特定のファイルをステージgit add class/MyClass.phpgit add tests/MyClassTest.php
# または すべての変更をステージgit add .
# 説明的なメッセージでコミットgit commit -m "feat(auth): add two-factor authentication support"ステップ 6: ブランチを同期に保つ
Section titled “ステップ 6: ブランチを同期に保つ”作業中、メイン ブランチが進む可能性があります:
# アップストリームから最新変更を取得git fetch upstream
# オプション A: リベース (クリーン履歴に優先)git rebase upstream/main
# オプション B: マージ (より簡単だがマージ コミットを追加)git merge upstream/main
# 紛争が発生した場合、解決してから:git add .git rebase --continue # または git merge --continueステップ 7: フォークにプッシュ
Section titled “ステップ 7: フォークにプッシュ”# ブランチをフォークにプッシュgit push origin feature/my-feature
# その後のプッシュでgit push
# リベースした場合、強制プッシュが必要 (注意!)git push --force-with-lease origin feature/my-featureステップ 8: プルリクエストを作成
Section titled “ステップ 8: プルリクエストを作成”GitHub ウェブ インターフェイスで
Section titled “GitHub ウェブ インターフェイスで”- GitHub 上のフォークに進む
- ブランチから PR を作成する通知が表示される
- “Compare & pull request” をクリック
- またはマニュアルで “New pull request” をクリックしブランチを選択
PR タイトルと説明
Section titled “PR タイトルと説明”タイトル フォーマット:
<type>(<scope>): <subject>例:
feat(auth): add two-factor authenticationfix(forms): prevent XSS in text inputdocs: update installation guiderefactor(core): improve performance説明テンプレート:
## 説明この PR が何をするかの簡潔な説明。
## 変更- X を A から B に変更- 機能 Y を追加- バグ Z を修正
## 変更タイプ- [ ] 新機能 (新機能を追加)- [ ] バグ修正 (問題を修正)- [ ] 破壊的な変更 (API/動作変更)- [ ] ドキュメント更新
## テスト- [ ] 新機能にテストを追加- [ ] すべての既存テストがパス- [ ] マニュアル テストを実行
## スクリーンショット (該当する場合)UI 変更のビフォア/アフター スクリーンショットを含める。
## 関連する問題Closes #123関連: #456
## チェックリスト- [ ] コードはスタイル ガイドラインに従う- [ ] 独自のコードをレビュー- [ ] 複雑なコードをコメント- [ ] ドキュメントを更新- [ ] 新しい警告は生成されない- [ ] テストがローカルでパスステップ 9: フィードバックに対応
Section titled “ステップ 9: フィードバックに対応”コード レビュー中
Section titled “コード レビュー中”- コメントを注意深く読む - フィードバックを理解
- 質問する - 不明確な場合、質問
- 代替案を議論 - 尊重を持って方法を議論
- リクエストされた変更を行う - ブランチを更新
- 更新されたコミットを強制プッシュ - 履歴を書き直す場合
# 変更を行うgit add .git commit --amend # 最後のコミットを変更git push --force-with-lease origin feature/my-feature
# または新しいコミットを追加git commit -m "Address feedback on PR review"git push origin feature/my-feature- ほとんどの PR は複数のレビュー ラウンドが必要
- 患者であり建設的である
- フィードバックを学習機会として表示
- メンテナーはリファクターを提案可能
ステップ 10: マージとクリーンアップ
Section titled “ステップ 10: マージとクリーンアップ”メンテナーが承認およびマージしたら:
- GitHub は自動的にマージ または メンテナーがクリック
- ブランチが削除される (通常は自動)
- 変更は upstream にある
ローカル クリーンアップ
Section titled “ローカル クリーンアップ”# メイン ブランチに切り替えgit checkout main
# マージされた変更でメインを更新git fetch upstreamgit merge upstream/main
# ローカル フィーチャー ブランチを削除git branch -d feature/my-feature
# フォークから削除 (自動削除されていない場合)git push origin --delete feature/my-featureワークフロー ダイアグラム
Section titled “ワークフロー ダイアグラム”graph LR A[リポジトリをフォーク] --> B[フォークをクローン] B --> C[ブランチを作成] C --> D[変更を行う] D --> E[コミット & プッシュ] E --> F[PR を作成] F --> G{レビュー} G -->|承認| H[マージ] G -->|変更必要| I[PR を更新] I --> G H --> J[クリーンアップ] J --> K[完了]共通シナリオ
Section titled “共通シナリオ”開始前に同期
Section titled “開始前に同期”# 常に新鮮に開始git fetch upstreamgit checkout -b feature/new-thing upstream/mainさらにコミットを追加
Section titled “さらにコミットを追加”# もう一度プッシュするだけgit add .git commit -m "feat: additional changes"git push origin feature/new-thing# 最後のコミットが間違ったメッセージgit commit --amend -m "正しいメッセージ"git push --force-with-lease
# 前の状態に戻す (注意!)git reset --soft HEAD~1 # 変更を保持git reset --hard HEAD~1 # 変更を破棄ベストプラクティス
Section titled “ベストプラクティス”すべき こと
Section titled “すべき こと”- ブランチを単一の問題に焦点を当てる
- 小さく、論理的なコミットを行う
- 説明的なコミット メッセージを書く
- ブランチを頻繁に更新
- プッシュ前にテスト
- 変更をドキュメント化
- フィードバックに反応的であること
- main/master ブランチで直接作業
- 無関連な変更を 1 つの PR で混在
- 生成されたファイルまたは node_modules をコミット
- PR がパブリック後に強制プッシュ (—force-with-lease を使用)
- コード レビュー フィードバックを無視
- 巨大な PR を作成 (より小さなものに分割)
- 機密データをコミット (API キー、パスワード)
成功のためのヒント
Section titled “成功のためのヒント”コミュニケーション
Section titled “コミュニケーション”- 作業を開始する前に問題で質問
- 複雑な変更についてガイダンスを求める
- PR 説明でアプローチを議論
- フィードバックに迅速に対応
- PHP 標準を確認
- 問題レポート ガイドラインを確認
- 貢献概要を読む
- プルリクエスト ガイドラインに従う
関連ドキュメント
Section titled “関連ドキュメント”- 行動規範
- プルリクエスト ガイドライン
- 問題レポート
- PHP コーディング標準
- 貢献概要
#xoops #git #github #contributing #workflow #pull-request