使用 Phabricator 来 code review

本地开发代码提交流程:

# 切换到master分支
git checkout master

# 新建并切换到开发分支develop
git checkout -b develop
git checkout -b develop origin/master # 指定上游分支

# 查看分支信息(是否有上游分支)
git branch -vv

# 若无上游分支,指定上游分支
git branch -u origin/master
或 git branch --set-upstream-to=origin/master develop

# 拉取最新的代码
git pull --rebase

# 修改本地文件,然后提交
git add .
git commit -m "message"

# 检查代码格式规范
arc lint

# 提交code review
# arc diff xxx --preview  // 提交针对某个分支的commit,并只生成diff文件,不在web端创建revision
# arc diff HEAD^ # git: just the most recent commit
arc diff
或 arc diff --create
# 如果想跳过代码格式检查
arc diff --nolint


# 提交code review之后,点击生成的url在浏览器里打开,填写Title、Summary、Test Plan、Reviewers等信息

# 得到修改意见,在本地修改后提交
git add .
git commit -m "modified after review"
或 git commit --amend

# 再次提交code review(这个revision是上次创建code review时的id,比如D1234)
arc diff --update 1234
# --update 1234 也可以不加,默认会合到上一个review中

# reviewer已经Accept之后,提交代码
arc land
或 arc land develop
# 如果报错找不到对应的revision,带上revision号(比如1234)
arc land --revision 1234

# land使用之后会将当前develop分支merge到上游master分支,提供详细的提交信息,推送到master并且删除本地develop分支

使用 arc diff 只对特定范围的 commit 提交 code revision

arc diff 会合并提交一个范围内的所有 commit 为一条 revision,默认范围是 git merge-base origin/master HEAD到 HEAD。可以通过 arc diff <commit> 指定范围为从 git merge-base <commit> HEAD 到 HEAD

我们可以通过 arc which 查看 arc diff 的 commit 范围。当我们想合并的是中间的部分 commit 的时候,可以这么做:

git branch revision
git checkout revision
git reset --hard <last-commit>
arc diff <first-commit>

当 revision 被通过,我们可以通过 arc land <branch> 来合并 branch 到 master 分支,然后 push 到远端仓库。

有其他需求,详询官方文档:◉ Arcanist User Guide: arc diff 


通过执行arc help land,可以找到land推送到的target的顺序:

A target branch is selected by examining these sources in order:

  - the --onto flag;
  - the upstream of the current branch, recursively (Git only);
  - the arc.land.onto.default configuration setting;
  - or by falling back to a standard default:
    - "master" in Git;
    - "default" in Mercurial.
arc land # 将当前分支推到上游分支,一般是master
arc land --onto foo/bar # 将当前分支推到foo/bar
arc land develop
arc land develop --onto foo/bar
arc set-config arc.land.onto.default foo/bar
# 当review别人的diff时,可以在自己本地打补丁进行测试
arc patch -h # arc patch --help
arc patch D12345 // 会新建一个arcpatch-D12345分支
arc patch --nobranch D12345 // 不会新建分支,使用当前分支
# arc patch实际执行的是git cherry-pick <commit_id>。如果patch发生冲突,先解决冲突,git add .,然后git cherry-pick --continue;如果放弃patch,git cherry-pick --abort

arc patch --diff <diff_id> # 可以只patch某个revision(如D12345)里面的某个diff,只需在History找到该Diff对应的ID,当错误地更新revision想要回退可用这个

在 ~/.arcrc 文件里有相应改动:

$ cat ~/.arcrc
{
  "hosts": {
    "https://phabricator.xxx.ai/api/": {
      "token": "xxx"
    }
  },
  "config": {
    "arc.land.onto.default": "foo/bar",
    "editor": "vim"
  }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值