首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

為 PHP 核心貢獻代碼:從 Fork 到 Merge 的完整流程指南

     編輯:PHP 相關知識

前言

PHP 核心代碼託管於 github.com/php/php-src,採用 Git + GitHub Pull Request 流程。本文詳細說明從環境準備到代碼合併的完整步驟,助你成為 PHP 貢獻者。

前置準備

  1. GitHub 帳號:註冊並設定 SSH Key 或 Personal Access Token。
  2. 簽署 CLA:首次貢獻需簽署 Contributor License Agreement(電子簽名即可)。
  3. 開發環境:Linux/macOS 推薦,Windows 可用 WSL2。安裝 autoconf、bison、re2c、libxml2-dev、openssl-dev 等構建依賴。

流程總覽

Fork → Clone → Branch → Develop → Test → Commit → Push → PR → Review → Merge

詳細步驟

1. Fork 與 Clone

# GitHub 網頁點擊 Fork 到個人帳號
git clone git@github.com:YOUR_USERNAME/php-src.git
cd php-src
git remote add upstream git@github.com:php/php-src.git  # 追蹤官方倉庫

2. 同步上游最新代碼

git checkout -b fix/bug-12345-segfault-in-json-encode

分支命名規範:type/issue-id-short-desc,type 為 fix、feat、doc、refactor 等。

4. 開發與測試

git add ext/json/json_encoder.c
git commit -m "Fixed Bug #12345: Segfault in json_encode with deeply nested arrays

- Add recursion depth check in json_encode_serializer
- Return FAILURE when depth exceeds limit
- Add test case ext/json/tests/bug12345.phpt

Reviewed-by: Some Developer ">

提交訊息格式:

  • 首行 ≤ 79 字元,格式 Fixed Bug #NNNNN: Summary 或 Add feature: Summary。
  • 空一行,詳細說明動機、變更點、測試情況。
  • 可選 Reviewed-by、Signed-off-by。

6. 推送與發起 PR

wiki.php.net 發起 RFC(Request for Comments):

  1. 建立 RFC 頁面,闡述動機、設計、BC 影響、替代方案、投票機制。
  2. 在 internals@lists.php.net 郵件列表宣佈,接受社區討論(至少 2 週)。
  3. 發起投票,需 2/3 多數通過。
  4. 通過後再提交 PR 實作。

常見問題與技巧

問題解決方案
構建失敗:缺少依賴安裝對應 -dev 套件,參考 ./configure --help
測試不穩定重跑 make test,排除已知失敗(known_failing_tests)
PR 長時間無人審查在 PR 評論 @ 相關維護者,或發郵件至 internals 列表
想修復拼寫/小改動直接在 GitHub 網頁編輯提交 PR,或走 bugs.php.net 提交 Patch

進階:申請 PHP 開發者賬號

當有多個 PR 被合併,可在 php.net/svn-php.php 申請 SVN/Git 寫入權限,成為官方 Committer,直接推送至官方倉庫(仍需遵循審查流程)。

總結

貢獻 PHP 核心是提升技術深度、回饋社區的最佳途徑。遵循 C89 風格、編寫完整測試、耐心參與審查,你的代碼終將運行在全球數百萬伺服器上。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved