Phabricator 是一套使用 PHP 編寫的開源軟體開發管理/協作工具,支援 Git、Mercurial、Subversion 等常見的版本控制軟體
內建了許多工具如:
- Differential – 用以審查代碼,和 GitHub flow 不同的地方在於管理者可以讓每個成員都有 commit 的權限, 但必須經過其它團隊成員的 code-review 後才能 merge 回分支,在 Phabricator 的 workflow 中這個步驟稱為 pre-push code review, 在官方文檔中可以看到更詳細的介紹
- Diffusion – 用以管理 Repository,Repository 可以是基於本地或者是遠端,如果來源為遠端還可自訂同步的頻率
- Diviner – 用以產生文檔
- Herald – 用以管理推播通知
- Slowvote – 簡易的投票應用
Phabricator 中的功能預覽
Phabricator 的最大賣點我覺得是在於 pre-push code review 的部分,舉例來說當團隊成員 A 提交了某個 commit,而這次的 patch 剛好與另一個成員 B 開發的新功能會有衝突,這時 B 有兩種選擇:
1. 直接在該次 commit 的頁面上留下訊息告知 A 某些 code 可能會與他正在開發的新功能不相容,然後 B 可以直接將造成衝突地方的 code 重寫後,產生新的 patch
並且 A 在稍後回到該頁面並同意了 B 對此部分 code 的修改。
這個由 A commit 再經過 B 修改後的 patch 就可 merge 回原本的分支上面了。
2. 留下訊息告知 A 這個 commit 會產生的問題,請 A 修改或者 rejected 該次的 commit
有關在 Phabricator 中的 code review 實際操作可以看看 Wikimedia 的駭客松 中的展示
我在創建了一份 Docker Images 放置在 GitHub 上,想快速體會一下 Phabricator 可以按照下列方式安裝
docker pull likol1227/phabricator:latest docker pull likol1227/mysql
PASSWORD=5566 LOCAL_STORAGE=/var/phabricator/mysql docker run -d --name mysql \ -e "MYSQL_ROOT_PASSWORD=${PASSWORD}" \ -v ${LOCAL_STORAGE}:/var/lib/mysql \ likol1227/mysql
HOST=127.0.1.1 SSH_PORT=10022 LOCAL_STORAGE=/var/phabricator LOCAL_LOG=/var/log/phd docker run --name phab \ -e "PHD_HOST=${HOST}" \ -e "SSH_PORT=${SSH_PORT}" \ -p 10080:80 -p ${SSH_PORT}:22 \ -v ${LOCAL_STORAGE}:/var/phd \ -v ${LOCAL_LOG}:/var/log/phd \ --link mysql:mysql likol1227/phabricator
使用上有任何問題歡迎在這留下反饋,或在 GitHub 上發送 issues
您好,我有做了一個 Phabricator 繁體中文的語系在 https://github.com/cwlin0416/phabricator-zh_hant/,希望能夠給您一些幫助,如果可以的也希望您能提供一些建議或是協助翻譯。