过时:Pre-GitHub代码审查

2018-7月,当我们转移到GitHub上的git时,以下内容就过时了。

通常,我们提交更改并在票据中设置审阅者。审阅者按照Trac票证页面上的“审阅”链接查找关联的变更集及其差异。问题是评论通常是在更改后几周或几个月完成的,作者没有上下文,反馈是通过复制/粘贴到电子邮件中来完成的。

有时,我们将更改提交给分支,并在将整个工作合并到主干之前与审阅者进行迭代。这有助于更好的时机和反馈。

理想情况下,我们会在提交代码之前对其进行审查,并且很容易引用一行代码并向其添加注释。代码评审会阻止提交,但这会激励我们快速完成。经验表明,简单而及时的反馈可以带来更彻底的审查和更好的代码。

里特韦尔是一个在线代码审查工具,允许我们进行提交前代码审查:http://code.google.com/p/rietveld/

发送更改以进行代码审查需要一些思考和设置,但对审查人员来说这真的很容易。

2017年10月更新

(Shane)我为Rietveld项目做出了一些贡献,但到目前为止还没有合并。 #556修复了最近更新SVN时出现的错误,以及 #558向该工具添加了一个新的--svn_changelist标志,以允许您仅上传特定的变更列表以供在该工具中查看。更改列表功能允许您仅选择某些文件进行审阅和提交,如果在同一客户端中有多个更改,或者如果您有不想提交的本地更改(例如IDE设置),这将非常有用。

2015年5月更新

(Andy)更新如下:

update.py脚本已更新。从下载最新的 http://codereview.appspot.com/static/upload.py

--internal-diff现在是默认值,这意味着不需要diff选项。

密码身份验证似乎不再有效,但upload.py的--oauth2选项效果很好,至少对谷歌帐户来说是这样。当使用OAuth2时,脚本将打开一个浏览器窗口,询问是否允许使用您的帐户发送邮件。

我用于查看svn分支更改的命令:

光盘dir-with-committed更改

upload.py--发送邮件--oauth2-m“变更说明“--版次=分支创建的修订:头部-r评论员1@gmail.com,reviewer 2@gmail.com。。。

2014年更新

(Markus)更新如下:

首先,在使用svn时,请确保svn diff程序是默认的text-to-stdout diff程序。upload.py应该使用--internal-diff选项,但没有使用,如果svn dif程序是图形程序,则会创建空的diff。

    • 您可以将“--diff_options”添加到upload.py命令行。

      • 使用一个相当现代的svn,您可以附加“--internal-diff”。

      • 如果您的svn已经足够大,无法理解--internal-diff,那么您应该能够使用“--diff-cmd-diff”。

    • 您可以通过注释掉自定义diff-cmd来临时修改~/.subversion/config文件。

指定基本URL时,最好使用http://而不是svn+ssh://,以避免要求身份验证。

您必须是Rietveld的注册用户。

显然,再也不可能从Rietveld web UI创建新问题。您必须使用upload.py。

的实际Linux命令行示例从提交的svn分支更改创建代码审阅问题对于 票号10939“ICU4J可选地从.dat和.res读取数据”:(我混淆了下面的审阅者电子邮件地址。)

~/svn.icu4j/trunk/src$~/Downloads/rietveld/upload.py-t'重症监护病房票据#10939:icu4j可选地从.dat和.res'--base_url读取数据http://source.icu-project.org/repos/icu/icu4j/branches/markus/mapdata/-r(右)审阅者@example.com-m'分支代码完成于r36098'--发送邮件--版本36076:36098

由于某些原因,这需要几分钟的时间。它最终会询问您的Rietveld用户电子邮件地址和密码。

这创建了的修补程序集1http://codereview.appspot.com/121870043

然后我在r36102和更新了审查问题以下内容。注意,这一次我提供了问题编号(-I)和--internal-diff选项,并删除了问题标题(-t)和审阅者(-r)选项以保持原样。

~/svn.icu4j/trunk/src$~/Downloads/rietveld/upload.py-i 121870043--base_urlhttp://source.icu-project.org/repos/icu/icu4j/branches/markus/mapdata/-m'代码审阅更改r36102'--发送邮件--版本36076:36102----内部diff

这创建了的修补程序集2http://codereview.appspot.com/121870043

的实际Linux命令行示例从挂起的主干更改创建代码审阅问题(尚未承诺) 11341号机票“getByteBufferFromInputStream()可能效率很低”:(我模糊了下面的电子邮件地址,但保留了diff选项。)

~/svn.icu4j/trunk/src$~/Downloads/rietveld/upload.py-t“ICU ticket#11341:getByteBufferFromInputStream()可能效率很低”--base_urlhttp://source.icu-project.org/repos/icu/icu4j/trunk-r(右)yoshito_umaoka@example.com--抄送andy.heninger@example.com-m'检查InputStream.read()<0表示流的末尾,不可用()==0'--发送邮件--内部diff

这创建了的修补程序集1http://codereview.appspot.com/155570043

重症监护病房4C的示例从挂起的主干更改创建代码审阅问题(尚未提交):

~/svn.icu/trunk/src$~/Downloads/rietveld/upload.py-t'重症监护病房票#11136:UnicodeString:重新组合堆栈缓冲区数组'-base_urlhttp://source.icu-project.org/repos/icu/icu/trunk-r(右)andy.heninger@gmail.com--抄送srl@icu-project.org-m’重组堆栈缓冲区阵列;一个int16_t表示短长度&flags’--send_mail--internal-diff

-->http://codereview.appspot.com/178970043

2012年说明

以下是马克斯·谢勒(Markus Scherer)于2012年夏天主持的谷歌实习生马克西姆·塞拉诺(Maxime Serrano)的一篇文章:

我对rietveld的使用

Rietveld是一个具有相对简单界面的代码审查工具。它允许用户上传正在进行的提交以供审查,审查人员可以将评论附加到差异的特定行。〔…〕

创建提交的界面非常简单:rietveld提供了一个名为upload.py的python脚本,您只需从签出的根目录中运行即可。实际上,如果我检查过ICU的后备箱~/重症监护室,我想:

$cd~/重症监护室

在运行脚本之前。通常,我将upload.py保存在我的主目录中,因此运行它就像

$python~/upload.py

然后,脚本将运行适当的diff命令(通常是git-diff或svn-diff),并为您创建变更集。它将提示您输入变更集的名称,以及AppEngine用户名(或gmail地址)和密码。从那里,它应该为您生成一个链接,您的变更集将在那里。

如果这不起作用,并且有时会出现不稳定的情况,那么rietveld中存在一个可以接受更通用的diff文件的接口。要使用它,只需运行:

$svn diff>out.diff

$git diff>out.diff

并导航到rietveld的“创建问题”选项卡以上载差异。rietvel德将要求您提供“基本URL”。这应该是您签出项目的URL,除非这不是rietvell可以在没有权限的情况下签出的URL,在这种情况下,您应该提供“公共”签出URL。

例如:当我签出我想要写入权限的ICU副本时,我会使用URLsvn公司+ssh://source.icu-project.org/repos/icu/icu/trunk。但是,rietveld没有我的私钥,因此它无法对此URL进行身份验证。因此,我必须提供公共版本:http://source.icu-project.org/repos/icu/icu/trunk-以便它能够正确下载基本文件并显示差异。

一旦创建了第一个diff,如果您想回复评论,只需将新的变更集上传到同一个rietveld问题。为此,请再次导航到签出根目录,然后运行:

$python~/upload.py-i<数字>

其中<number>是您的问题编号。它可以在问题的URL中找到:例如,问题位于 http://codereview.appspot.com/6443126/发行号为6443136。

upload.py将提示您输入此变更集的名称-这不需要与问题的名称相同。从那里,您的审阅者将能够正常地向更新的差异添加注释(并查看此差异和前一个差异之间的差异)。