Phabricator Arcanist 快速开始

文章目录

    • 一、Phabricator简介
      • 1. Phabricator基本使用
        • 1.1 下载仓库代码
          • 1) Phabricator 配置http访问代码仓库
          • 2) Phabricator 配置ssh访问代码仓库
      • 2. Phabricator 代码审计(code review)流程
    • 二、Arcanist
      • 1. windows 下Arcanist安装
        • 1.1 安装使用过程问题总结
      • 2. Arcanist基本使用
        • 2.1 Arcanist常用命令
    • 参考

一、Phabricator简介

七、Phabricator简介
参考URL: https://blog.csdn.net/u010285974/article/details/81222976

官网:https://www.phacility.com/
项目地址:https://github.com/phacility/phabricator
Phabricator是一套基于Web的软件开发协作工具,一个Web应用用于帮助软件公司构建更好的软件。
原是facebook员工开发的可视化代码评审工具,现在离开facebook去Phacility,并持续维护
主要包含以下几个功能:

  1. 源码的review与审核
  2. 代码托管,代码浏览
  3. BUG跟踪
  4. 项目管理
  5. 团队成员交流
  6. 组织风险讨论
  7. 事件备注,以及回顾(统计等)
  8. 权限设置
  9. 其他功能

Phabricator是一套基于Web的软件开发协作工具,它的主要功能有操作数据(任务查看操作);开发辅助(工作流,查看提交的 diff,代码检查,执行单元测试);辅助(文件文档管理)。它最初是Facebook的一个内部工具,后来发展开源。

Phabricator是一个LAMP (Linux, Apache, MySQL, PHP) 程序,所以Windows下是不能安装的。

Phabricator能够托管代码仓库,并提供给SSH和HTTP访问方式。

个人使用体会TODO:

  1. Phabricator有wiki功能,很方便团队共享一些项目基本信息、以及知识。

1. Phabricator基本使用

1.1 下载仓库代码

1) Phabricator 配置http访问代码仓库
  1. 首先配置git的密码管理
    Phabricator Arcanist 快速开始_第1张图片
  2. 然后使用 IDEA打开http://xxx.git 下载代码即可。
2) Phabricator 配置ssh访问代码仓库
  1. 如上图,选择钥匙图标,选择–> SSH秘钥操作—> 生成秘钥对。
    Phabricator服务端会帮你生成公私钥,公钥服务器端保留,你下载私钥放置到
    C:\Users\Administrator.ssh

改名为id_rsa,注意,这里的文件不能有后缀,否则的话进行上传文件的时候会不识别你的私钥的。

注意:当然你也可以百度 在你的电脑上生成公私钥,把公钥上传Phabricator服务端。

2. Phabricator 代码审计(code review)流程

code review 大致的流程为:

  1. 修改代码
  2. arc diff,生成 revision,它的状态为 Need Review
  3. 邮件通知 reviewer 进行审核。如果审核不过,它会被置为 Need Revision,再次 diff 后,会重新回到 Need Review 状态;如果审核通过,它会被置为 Accepted
  4. arc land 后,revision 的状态会变为 Closed

真实的开发情况会比上面描述的流程复杂一些,比如我们不会等待一次 code review request 被Accepted 后,才继续开发,而是等待过程中继续开发。

为了适应真实的开发情况,制定了一个流程和规范。

TODO

二、Arcanist

arcanist的用法简介
参考URL: http://softlab.sdut.edu.cn/blog/subaochen/2016/09/arcanist%E7%9A%84%E7%94%A8%E6%B3%95%E7%AE%80%E4%BB%8B/

Arcanist是Phabricator提交代码评审的客户端工具。即这是Phabricator配套的Code Review工具。

Arcanist是Phabricator提供的一个客户端命令行工具,旨在帮助我们快速的操作和使用(不使用Arcanist的话,在web界面也是可以进行diff等操作的)。

arcanist是phabricator创建的代码审核辅助工具。

1. windows 下Arcanist安装

首先,安装依赖:

  • 安装 PHP (PHP官方下载地址: https://windows.php.net/download/).
    安装 PHP, 并配置环境变量;
    在系统变量中找到Path 点击;找到php.exe的文件目录,添加到path中;php -v 显示版本,表示成功;

复制 php.ini-development 文件为 php.ini, 用文本编辑器打开, 将 extension_dir=”ext”、 extension =”php_curl.dll”、extension =”php_mbstring.dll”前面的分号去掉。 如果没
有, 则添加这几项;

  • 安装 Git. 并把git命令行加入环境变量PATH
  • 安装 arcanist 和 libphutil。

将下载好的两个文件解压,将arcanist 中的 arc.bat 所在目录配置在 Path 环境变量中。
再 将 解 压 好 的 libphutil 文 件 夹 , 剪 切 到arcanistr\externals\includes 目录下;

  • 配置 arc 编辑器。
    使用 Arcanist 时需要使用文本编辑器编辑文本,不能使用微软自带的NotePad,建议使用 vim。
    在命令行运行如下命令,利用git的 vim.exe
C:\Users\G>arc set-config editor "C:\Program Files\Git\usr\bin\vim.exe"
Set key "editor" = "C:\Program Files\Git\usr\bin\vim.exe" in user config (was null).
  • 配置 Arcanist
    方法一:
    在 git 库代码根目录, 创建文件**.arcconfig**,并写入
{
"phabricator.uri" : "http://你公司Phabricator服务地址.com/"
}

在项目的根目录, 使用命令行输入, arc install-certificate,会提示访问路径。在浏览器中打开,复制 token,粘贴到命令行即可。

注意: 你应该把这个文件(.arcconfig)提交到代码仓库。新加入的人就不用使用方法二中设置arc set-config default 的步骤了。arc命令会根据这个文件,知道,它连接的Phabricator服务地址。

方法二:
配置PhabricatorURI:运行命令arc set-config default 你公司Phabricator服务地址,例如arc set-config default http://dev.she.cn/
安装证书:运行命令arc install-certificate,依照提示访问http://公司Phabricator服务地址/conduit/token/, 复制内容粘贴token即可。

1.1 安装使用过程问题总结

  1. 执行arc -v报错Warning: PHP Startup: Unable to load dynamic library ‘”php_curl.dll”’
C:\Users\G>arc -help
PHP Warning:  PHP Startup: Unable to load dynamic library '
Warning: PHP Startup: Unable to load dynamic library '”php_curl.dll”' (tried: D:\php-7.3.6\ext\”php_curl.dll” (找不到指 定的模块。), D:\php-7.3.6\ext\php_”php_curl.dll”.dll (找不到指定的模块。)) in Unknown on line 0

原因分析: php.ini中的extension_dir = “ext” 指定了它去ext目录找拓展的动态库文件。仔细查看报错,发现它”php_curl.dll” 整个替换了。

解决方法:
因此,修改php.ini 相关动态库引入,类似如下即可:

extension =curl
extension =mbstring
  1. 执行arc -help报错:ERROR: Unable to load libphutil. Put libphutil/ next to arcanist/, or update your PHP ‘include_path’ to include the parent directory of libphutil/, or symlink libphutil/ into arcanist/externals/includes/.

原因分析:
arcanist安装路径下externals\includes\ 下必须是libphutil目录名,之前是libphutil-master,它找不到,这里这个目录名是死的,arcanist在\externals\includes\libphutil找。
解决方法:
D:\arcanist-master\externals\includes\libphutil
3. 执行arc diff时乱码 (window下 vim乱码)
原因分析:因为前面配置arc使用git带的 vim.exe编辑器。原因是vim配置的编码问题。
解决方法:
找到VIM安装目录下的vimrc文件(C:\Program Files\Git\etc):
在文件最前面添加:

set fileencodings=utf-8,gb2312,gbk,gb18030
set termencoding=utf-8
set fileformats=unix
set encoding=prc

2. Arcanist基本使用

Phabricator Arcanist 快速开始_第2张图片

  1. arc diff (使用 arc diff 将代码发送到 Differential 以供审核)
    对项目做了一些修改后,首先git add/git commit将修改放进暂存区(stage area),然后执行arc diff命令,会提示填写下面的信息:
  • Test Plan – 必填,详细说明你的测试计划;
  • Reviewers – 必填,执行代码审核人的账户,多个使用”,”隔开;
  • Subscribers – 非必填,订阅人,能够收到代码变更的邮件通知,多个使用”,”隔开;

提交后,代码即进入phabricator的Differential,并生成一个代号D#(#为具体的数字),代码审核人就能够审阅你的代码了。

如果审核未通过,修改代码后继续使用arc diff –update D#,表示更新D#这个Differential,审核人可以继续就D#进行审核,提出审核意见。

如果审核通过,在本地执行arc land即可将代码push到中央仓库。如果存在开发分支,arc land也会将开发分支合并到master,并删除开发分支(合并和删除开发分支待验证)。

arc diff –preview允许在phabricator界面创建Diff,在更新Diff时可能更加方便,值得尝试。
arc diff 可以加参数–preview,这样会给出url,打开后可以在web中创建Differential,或者选择已存在的进行更新,比命令行会友好一些

走了一遍arc diff –preview的流程,确实比终端界面容易操作一些。对于新建diff,效率没有终端高;对于更新diff,不用爬到页面去找diff的ID了,比终端命令方便。
因此,新建diff,直接arc diff就好;更新diff,arc diff –preview有优势。

  1. arc land
    代码审核通过后,可以执行arc land将代码提交进中央仓库。arc land自动执行git push并且squash log ,默认情况下也删除了开发分支。arc land –keep-branch应该可以保留开发分支,此功能待验证。

2.1 Arcanist常用命令

$ arc help # 获得arc中包装的可用指令/工具
$ arc diff # 提交代码去审核
$ arc diff --update D(n) # 审核未通过,修改后,再次提交审核
$ arc diff --create # 创建一个新的提交审核
$ arc land # 审核通过后提交,已包括git push的动作,所以无需再push了
$ arc amend # 审核Git更新提交后的信息
$ arc list # 显示未提交修改的代码信息
$ arc lint # 检查代码的语法
$ arc get-config # 查看已设置过的配置
$ arc set-config # 修改配置,使用–local参数为全局配置

注意:当某个命令卡主时,比如arc diff 卡住,我们可以加 --trace 参数打印日志看具体卡在哪一步。

参考

Windows系统下Phabricator的Arcanist配置安装
参考URL: https://www.jianshu.com/p/a6ee738da1aa
arcanist的用法简介
参考URL: http://softlab.sdut.edu.cn/blog/subaochen/2016/09/arcanist%E7%9A%84%E7%94%A8%E6%B3%95%E7%AE%80%E4%BB%8B/

你可能感兴趣的:(#,CI/DI)