Phabricator 介紹與 Docker 資源

Phabricator 是一套使用 PHP 編寫的開源軟體開發管理/協作工具,支援 Git、Mercurial、Subversion 等常見的版本控制軟體

內建了許多工具如:

  • Differential – 用以審查代碼,和 GitHub flow 不同的地方在於管理者可以讓每個成員都有 commit 的權限, 但必須經過其它團隊成員的 code-review 後才能 merge 回分支,在 Phabricator 的 workflow 中這個步驟稱為 pre-push code review, 在官方文檔中可以看到更詳細的介紹
  • Diffusion –  用以管理 Repository,Repository 可以是基於本地或者是遠端,如果來源為遠端還可自訂同步的頻率
  • Diviner – 用以產生文檔
  • Herald – 用以管理推播通知
  • Slowvote – 簡易的投票應用

phab1

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

Likol

哈囉!

1 Response

發佈留言