[pygr-notify] [pygr commit] r161 - Created wiki page through web user interface.

codesite-noreply at google.com codesite-noreply at google.com
Wed Mar 25 21:47:22 PDT 2009


Author: cjlee112
Date: Wed Mar 25 21:46:31 2009
New Revision: 161

Added:
    wiki/CodeReviewGuidelines.wiki

Log:
Created wiki page through web user interface.

Added: wiki/CodeReviewGuidelines.wiki
==============================================================================
--- (empty file)
+++ wiki/CodeReviewGuidelines.wiki	Wed Mar 25 21:46:31 2009
@@ -0,0 +1,24 @@
+#summary Recommendations for how to do Pygr code reviews.
+
+= Keep "code reviewing" and "code rewriting" separate! =
+
+We review existing code by having the reviewer directly edit the code in a  
separate git branch.  When the reviewer edits existing code in this way  
s(he) needs to keep two different impacts separate, by keeping them in two  
separate git branches:
+
+  * "innocuous" revisions: e.g. adding or editing comments or docstrings.   
We will refer to this as "code reviewing" because it leaves the original  
behavior unchanged.
+
+  * significant revisions: anything that might alter how the code  
behaves.  We will refer to this as "code rewriting" because it could change  
the code's correctness and must be analyzed much more carefully.
+
+Once the reviewer is done, the original author(s) of the existing code  
should review these recommended changes and decide what should be merged to  
master.  To make this job of "reviewing the code review" as straightforward  
as possible, it is very important that the innocuous changes (code  
reviewing) be separate from the potentially significant changes (code  
rewriting).  Knowing which changes require "paranoid" analysis (code  
rewriting) vs. which don't will make it easier and faster to review all  
these changes.
+
+Git makes this separation really easy, and makes the potential  
disadvantages / overhead fairly minor.
+
+= Process =
+Say you were performing a code review of the *seqdb* module.  You would  
first
+
+  * create a branch named something like *seqdb_review*, and add  
docstrings and comments, reformat whitespace, add new test cases, move  
classes and functions around, delete unused classes or functions, change  
internal variable names etc.
+
+  * If you see code that you think would benefit from revision, create a  
branch *seqdb_rewrite*, and make your changes there.
+
+  * Always commit each individual change separately (rather than combining  
several distinct changes into one commit), so that it will later be  
possible to easily pick and choose which changes to keep.  If many changes  
are combined in one commit, the only way to separate them is by hand, and  
much of the value of git for managing the revision process is lost.  This  
applies equally both to "code reviewing" and "code rewriting".
+
+  * If code is rewritten, then in effect we have to begin a new cycle of  
code review, to review the new code.  The above rules would apply again;  
i.e. we'd create a review branch in which the existing code's author(s) can  
add comments, tests, etc.  If the author thinks significant changes to the  
rewritten code are desirable, s(he) can either just communicate them to the  
reviewer, or create a new "rewrite" branch in which to make these changes  
and expose that branch for review...
\ No newline at end of file



More information about the pygr-notify mailing list