1d1ba7d1338d

hg-review: Update documentation.
[view raw] [browse files]
author Steve Losh <steve@stevelosh.com>
date Tue, 13 Jul 2010 00:32:56 -0400
parents 84fc0674789f
children b3f631ce834e
branches/tags (none)
files hg-review/_sources/api.txt hg-review/_static/review.css hg-review/_static/review.less hg-review/api.html hg-review/index.html hg-review/searchindex.js

Changes

--- a/hg-review/_sources/api.txt	Mon Jul 12 23:41:12 2010 -0400
+++ b/hg-review/_sources/api.txt	Tue Jul 13 00:32:56 2010 -0400
@@ -52,11 +52,144 @@
     |
     `-- other files ...
 
+All review data for a changeset is stored in::
+
+    .hg/review/{{ changeset hash }}/
+
+A ``.exists`` file is included in that directory when code review for
+that changeset is initialized. This allows us to check if a given changeset has
+been initialized for code review very quickly.
+
+Comments for a changeset are stored in::
+
+    .hg/review/{{ changeset hash }}/comments/{{ comment hash }}
+
+Signoffs for a changeset are stored in::
+
+    .hg/review/{{ changeset hash }}/signoffs/{{ signoff hash }}
+
 File Formats
 ------------
 
+hg-review's file format is (fairly) stable and is designed to be easily parsed
+to enable export to other code review systems.
+
+Comment and signoff files are stored as JSON. The files are indented four
+spaces per level to make them more human-readable.
+
+``.exists`` Files
+'''''''''''''''''
+
+The ``.exists`` file is always empty. It simply exists to make looking up
+whether a given changeset has been initialized faster. It may go away in the
+future -- do not depend on it.
+
+Comment Files
+'''''''''''''
+
+Here is a sample comment file::
+
+    {
+        "author": "Steve Losh <steve@stevelosh.com>", 
+        "file": [
+            "reykjavi\u0301k.txt", 
+            "cmV5YWphdmnMgWsudHh0"
+        ], 
+        "hgdate": "Mon Jul 12 23:55:51 2010 -0400", 
+        "lines": [
+            0
+        ], 
+        "message": "Sample.", 
+        "node": "0e987f91e9b6628b26a30c5d00668a15fae8f22f", 
+        "style": "markdown"
+    }
+
+Comment files have some or all of the following fields:
+
+``author``
+    The Mercurial username of the person that added this comment.
+
+``file``
+    A list of two strings. The first string is a (JSON-encoded) representation
+    of the UTF-8 filename. The second string is a base64 encoded version of the
+    actual bytes of the filename (which is what Mercurial gives and expects to
+    receive internally). If this is a review-level comment both strings will be
+    blank.
+
+``hgdate``
+    The date and time the comment was added (or last edited).
+
+``lines``
+    A list of integers representing the lines of the file that this comment
+    applies to. If this is a file-level or review-level comment the list will
+    be empty.
+
+``message``
+    A string representing the raw comment message.
+
+``node``
+    A string representing the hash of the changset this comment belongs to, for
+    easy lookup later.
+
+``style``
+    A string representing the style of this comment -- this will be
+    ``markdown`` for Markdown comments and blank for plain-text comments. More
+    styles may be added in the future.
+
+Signoff Files
+'''''''''''''
+
+Here is a sample signoff file::
+
+    {
+        "author": "Steve Losh <steve@stevelosh.com>", 
+        "hgdate": "Tue Jul 13 00:16:00 2010 -0400", 
+        "message": "Sample.", 
+        "node": "0e987f91e9b6628b26a30c5d00668a15fae8f22f", 
+        "opinion": "yes", 
+        "style": "markdown"
+    }
+
+Signoff files have some or all of the following fields:
+
+``author``
+    The Mercurial username of the person that added this comment.
+
+``hgdate``
+    The date and time the comment was added (or last edited).
+
+``message``
+    A string representing the raw comment message.
+
+``node``
+    A string representing the hash of the changset this comment belongs to, for
+    easy lookup later.
+
+``opinion``
+    A string representing the signoff opinion. This will be ``yes``, ``no``, or
+    a blank string (for a neutral signoff).
+
+``style``
+    A string representing the style of this comment -- this will be
+    ``markdown`` for Markdown comments and blank for plain-text comments. More
+    styles may be added in the future.
+
 Command Line Interface
 ----------------------
 
-Python API
-----------
+hg-review's command line interface is (fairly) stable. If you want to interact
+with review data for a repository this is the safest method to use.
+
+See the :doc:`command line interface documentation </cli>` for more details.
+
+Internal Python API
+-------------------
+
+hg-review's internal Python implementation is *not* stable. It may change at
+any time. Relying on it virtually guarantees your application will break at
+some point.
+
+For a more stable API you should use the command line interface.
+
+The Python API will be documented later, but is not a high priority at the
+moment because of its volatility.
--- a/hg-review/_static/review.css	Mon Jul 12 23:41:12 2010 -0400
+++ b/hg-review/_static/review.css	Tue Jul 13 00:32:56 2010 -0400
@@ -3,7 +3,6 @@
   background-color: #f8f7e8;
   font-family: Georgia, serif;
   color: #222;
-  text-rendering: optimizeLegibility;
 }
 body a, html a {
   color: #b6410c;
@@ -51,7 +50,7 @@
   border: 1px solid #edecc7;
   margin: 25px auto 0px;
   padding: 0px 00px;
-  width: 800px;
+  width: 840px;
 }
 .document .documentwrapper {
   -webkit-border-radius: 8px;
@@ -78,12 +77,12 @@
   background-color: #f8f7e8;
   font-size: 13px;
   font-family: Monaco, Consolas, "Courier New", monospace;
-  line-height: 24px;
+  line-height: 16px;
   margin-bottom: 32px;
   margin-top: -8px;
   margin-left: 25px;
-  padding: 0px 8px;
-  width: 498px;
+  padding: 6px 8px;
+  width: 538px;
   overflow-x: auto;
 }
 .document .documentwrapper .bodywrapper span.pre {
@@ -95,11 +94,25 @@
   line-height: 24px;
   white-space: pre;
 }
+.document .documentwrapper .bodywrapper ul {
+  list-style-type: disc;
+}
+.document .documentwrapper .bodywrapper ul li {
+  margin-left: 44px;
+}
 .document .documentwrapper .bodywrapper ul span.pre {
   background-color: inherit;
   border: none;
   padding: 0;
 }
+.document .documentwrapper .bodywrapper ul li.toctree-l1 {
+  list-style-type: none;
+  margin-left: 0;
+}
+.document .documentwrapper .bodywrapper ul li.toctree-l2, .document .documentwrapper .bodywrapper ul li.toctree-l3 {
+  list-style-type: none;
+  margin-left: 30px;
+}
 .document .documentwrapper .bodywrapper a em {
   font-style: normal;
 }
@@ -207,7 +220,7 @@
   clear: both;
 }
 .footer {
-  width: 800px;
+  width: 840px;
   margin: 8px auto 40px;
   padding-right: 10px;
   text-align: right;
--- a/hg-review/_static/review.less	Mon Jul 12 23:41:12 2010 -0400
+++ b/hg-review/_static/review.less	Tue Jul 13 00:32:56 2010 -0400
@@ -5,7 +5,7 @@
 
 @font-normal: Georgia, serif;
 @font-mono: Monaco, Consolas, "Courier New", monospace;
-@content-width: 800px;
+@content-width: 840px;
 
 .border-radius(@radius) {
     -webkit-border-radius: @radius;
@@ -78,11 +78,11 @@
                 background-color: @c-soft-cream;
                 font-size: 13px;
                 font-family: @font-mono;
-                line-height: 24px;
+                line-height: 16px;
                 margin-bottom: 32px;
                 margin-top: -8px;
                 margin-left: 25px;
-                padding: 0px 8px;
+                padding: 6px 8px;
                 width: @content-width - 302px;
                 overflow-x: auto;
             }
--- a/hg-review/api.html	Mon Jul 12 23:41:12 2010 -0400
+++ b/hg-review/api.html	Tue Jul 13 00:32:56 2010 -0400
@@ -93,15 +93,125 @@
 |
 `-- other files ...</pre>
 </div>
+<p>All review data for a changeset is stored in:</p>
+<div class="highlight-python"><pre>.hg/review/{{ changeset hash }}/</pre>
+</div>
+<p>A <tt class="docutils literal"><span class="pre">.exists</span></tt> file is included in that directory when code review for
+that changeset is initialized. This allows us to check if a given changeset has
+been initialized for code review very quickly.</p>
+<p>Comments for a changeset are stored in:</p>
+<div class="highlight-python"><pre>.hg/review/{{ changeset hash }}/comments/{{ comment hash }}</pre>
+</div>
+<p>Signoffs for a changeset are stored in:</p>
+<div class="highlight-python"><pre>.hg/review/{{ changeset hash }}/signoffs/{{ signoff hash }}</pre>
+</div>
 </div>
 <div class="section" id="file-formats">
 <h2>File Formats<a class="headerlink" href="#file-formats" title="Permalink to this headline">¶</a></h2>
+<p>hg-review&#8217;s file format is (fairly) stable and is designed to be easily parsed
+to enable export to other code review systems.</p>
+<p>Comment and signoff files are stored as JSON. The files are indented four
+spaces per level to make them more human-readable.</p>
+<div class="section" id="exists-files">
+<h3><tt class="docutils literal"><span class="pre">.exists</span></tt> Files<a class="headerlink" href="#exists-files" title="Permalink to this headline">¶</a></h3>
+<p>The <tt class="docutils literal"><span class="pre">.exists</span></tt> file is always empty. It simply exists to make looking up
+whether a given changeset has been initialized faster. It may go away in the
+future &#8211; do not depend on it.</p>
+</div>
+<div class="section" id="comment-files">
+<h3>Comment Files<a class="headerlink" href="#comment-files" title="Permalink to this headline">¶</a></h3>
+<p>Here is a sample comment file:</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="p">{</span>
+    <span class="s">&quot;author&quot;</span><span class="p">:</span> <span class="s">&quot;Steve Losh &lt;steve@stevelosh.com&gt;&quot;</span><span class="p">,</span>
+    <span class="s">&quot;file&quot;</span><span class="p">:</span> <span class="p">[</span>
+        <span class="s">&quot;reykjavi</span><span class="se">\u0301</span><span class="s">k.txt&quot;</span><span class="p">,</span>
+        <span class="s">&quot;cmV5YWphdmnMgWsudHh0&quot;</span>
+    <span class="p">],</span>
+    <span class="s">&quot;hgdate&quot;</span><span class="p">:</span> <span class="s">&quot;Mon Jul 12 23:55:51 2010 -0400&quot;</span><span class="p">,</span>
+    <span class="s">&quot;lines&quot;</span><span class="p">:</span> <span class="p">[</span>
+        <span class="mi">0</span>
+    <span class="p">],</span>
+    <span class="s">&quot;message&quot;</span><span class="p">:</span> <span class="s">&quot;Sample.&quot;</span><span class="p">,</span>
+    <span class="s">&quot;node&quot;</span><span class="p">:</span> <span class="s">&quot;0e987f91e9b6628b26a30c5d00668a15fae8f22f&quot;</span><span class="p">,</span>
+    <span class="s">&quot;style&quot;</span><span class="p">:</span> <span class="s">&quot;markdown&quot;</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>Comment files have some or all of the following fields:</p>
+<dl class="docutils">
+<dt><tt class="docutils literal"><span class="pre">author</span></tt></dt>
+<dd>The Mercurial username of the person that added this comment.</dd>
+<dt><tt class="docutils literal"><span class="pre">file</span></tt></dt>
+<dd>A list of two strings. The first string is a (JSON-encoded) representation
+of the UTF-8 filename. The second string is a base64 encoded version of the
+actual bytes of the filename (which is what Mercurial gives and expects to
+receive internally). If this is a review-level comment both strings will be
+blank.</dd>
+<dt><tt class="docutils literal"><span class="pre">hgdate</span></tt></dt>
+<dd>The date and time the comment was added (or last edited).</dd>
+<dt><tt class="docutils literal"><span class="pre">lines</span></tt></dt>
+<dd>A list of integers representing the lines of the file that this comment
+applies to. If this is a file-level or review-level comment the list will
+be empty.</dd>
+<dt><tt class="docutils literal"><span class="pre">message</span></tt></dt>
+<dd>A string representing the raw comment message.</dd>
+<dt><tt class="docutils literal"><span class="pre">node</span></tt></dt>
+<dd>A string representing the hash of the changset this comment belongs to, for
+easy lookup later.</dd>
+<dt><tt class="docutils literal"><span class="pre">style</span></tt></dt>
+<dd>A string representing the style of this comment &#8211; this will be
+<tt class="docutils literal"><span class="pre">markdown</span></tt> for Markdown comments and blank for plain-text comments. More
+styles may be added in the future.</dd>
+</dl>
+</div>
+<div class="section" id="signoff-files">
+<h3>Signoff Files<a class="headerlink" href="#signoff-files" title="Permalink to this headline">¶</a></h3>
+<p>Here is a sample signoff file:</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="p">{</span>
+    <span class="s">&quot;author&quot;</span><span class="p">:</span> <span class="s">&quot;Steve Losh &lt;steve@stevelosh.com&gt;&quot;</span><span class="p">,</span>
+    <span class="s">&quot;hgdate&quot;</span><span class="p">:</span> <span class="s">&quot;Tue Jul 13 00:16:00 2010 -0400&quot;</span><span class="p">,</span>
+    <span class="s">&quot;message&quot;</span><span class="p">:</span> <span class="s">&quot;Sample.&quot;</span><span class="p">,</span>
+    <span class="s">&quot;node&quot;</span><span class="p">:</span> <span class="s">&quot;0e987f91e9b6628b26a30c5d00668a15fae8f22f&quot;</span><span class="p">,</span>
+    <span class="s">&quot;opinion&quot;</span><span class="p">:</span> <span class="s">&quot;yes&quot;</span><span class="p">,</span>
+    <span class="s">&quot;style&quot;</span><span class="p">:</span> <span class="s">&quot;markdown&quot;</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>Signoff files have some or all of the following fields:</p>
+<dl class="docutils">
+<dt><tt class="docutils literal"><span class="pre">author</span></tt></dt>
+<dd>The Mercurial username of the person that added this comment.</dd>
+<dt><tt class="docutils literal"><span class="pre">hgdate</span></tt></dt>
+<dd>The date and time the comment was added (or last edited).</dd>
+<dt><tt class="docutils literal"><span class="pre">message</span></tt></dt>
+<dd>A string representing the raw comment message.</dd>
+<dt><tt class="docutils literal"><span class="pre">node</span></tt></dt>
+<dd>A string representing the hash of the changset this comment belongs to, for
+easy lookup later.</dd>
+<dt><tt class="docutils literal"><span class="pre">opinion</span></tt></dt>
+<dd>A string representing the signoff opinion. This will be <tt class="docutils literal"><span class="pre">yes</span></tt>, <tt class="docutils literal"><span class="pre">no</span></tt>, or
+a blank string (for a neutral signoff).</dd>
+<dt><tt class="docutils literal"><span class="pre">style</span></tt></dt>
+<dd>A string representing the style of this comment &#8211; this will be
+<tt class="docutils literal"><span class="pre">markdown</span></tt> for Markdown comments and blank for plain-text comments. More
+styles may be added in the future.</dd>
+</dl>
+</div>
 </div>
 <div class="section" id="command-line-interface">
 <h2>Command Line Interface<a class="headerlink" href="#command-line-interface" title="Permalink to this headline">¶</a></h2>
+<p>hg-review&#8217;s command line interface is (fairly) stable. If you want to interact
+with review data for a repository this is the safest method to use.</p>
+<p>See the <a class="reference external" href="cli.html"><em>command line interface documentation</em></a> for more details.</p>
 </div>
-<div class="section" id="python-api">
-<h2>Python API<a class="headerlink" href="#python-api" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="internal-python-api">
+<h2>Internal Python API<a class="headerlink" href="#internal-python-api" title="Permalink to this headline">¶</a></h2>
+<p>hg-review&#8217;s internal Python implementation is <em>not</em> stable. It may change at
+any time. Relying on it virtually guarantees your application will break at
+some point.</p>
+<p>For a more stable API you should use the command line interface.</p>
+<p>The Python API will be documented later, but is not a high priority at the
+moment because of its volatility.</p>
 </div>
 </div>
 
@@ -115,9 +225,14 @@
             <ul>
 <li><a class="reference external" href="#">API</a><ul>
 <li><a class="reference external" href="#data-repository-layout">Data Repository Layout</a></li>
-<li><a class="reference external" href="#file-formats">File Formats</a></li>
+<li><a class="reference external" href="#file-formats">File Formats</a><ul>
+<li><a class="reference external" href="#exists-files"><tt class="docutils literal"><span class="pre">.exists</span></tt> Files</a></li>
+<li><a class="reference external" href="#comment-files">Comment Files</a></li>
+<li><a class="reference external" href="#signoff-files">Signoff Files</a></li>
+</ul>
+</li>
 <li><a class="reference external" href="#command-line-interface">Command Line Interface</a></li>
-<li><a class="reference external" href="#python-api">Python API</a></li>
+<li><a class="reference external" href="#internal-python-api">Internal Python API</a></li>
 </ul>
 </li>
 </ul>
--- a/hg-review/index.html	Mon Jul 12 23:41:12 2010 -0400
+++ b/hg-review/index.html	Tue Jul 13 00:32:56 2010 -0400
@@ -112,7 +112,7 @@
 <li class="toctree-l2"><a class="reference external" href="api.html#data-repository-layout">Data Repository Layout</a></li>
 <li class="toctree-l2"><a class="reference external" href="api.html#file-formats">File Formats</a></li>
 <li class="toctree-l2"><a class="reference external" href="api.html#command-line-interface">Command Line Interface</a></li>
-<li class="toctree-l2"><a class="reference external" href="api.html#python-api">Python API</a></li>
+<li class="toctree-l2"><a class="reference external" href="api.html#internal-python-api">Internal Python API</a></li>
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference external" href="hacking.html">Hacking hg-review</a><ul>
--- a/hg-review/searchindex.js	Mon Jul 12 23:41:12 2010 -0400
+++ b/hg-review/searchindex.js	Tue Jul 13 00:32:56 2010 -0400
@@ -1,1 +1,1 @@
-Search.setIndex({desctypes:{},terms:{all:[2,5,1,4],concept:[0,5,2],project_url:4,mile:5,follow:1,hate:[],decid:1,depend:[2,4],flask:2,init:[0,4,1,2],program:[3,7,5],under:7,worth:3,sourc:2,fals:[1,4],faq:7,offlin:5,failur:1,affect:7,relev:4,disturb:[],level:1,did:5,list:[1,5],"try":5,item:1,stderr:1,gut:5,quick:2,pleas:2,prevent:4,natur:5,sign:[1,5],past:5,second:5,design:4,pass:1,port:[1,4],even:[4,5],index:[],what:[0,1,4],poke:0,section:4,abl:[3,4],remain:5,current:[1,4],delet:[],version:[2,3,7,5],"new":[2,1,4],hgreview:[2,1],ever:4,"public":[2,1,4],can:[5,2,3,1,4],full:[1,5],hash:3,never:[4,5],here:0,let:[2,4,5],address:[1,4],locat:2,valu:1,search:[],sjl:[0,4,2],action:[],opinion:5,chang:[3,1,5],chanc:[4,5],although:4,extra:4,backout:5,appli:5,modul:[],brought:[],filenam:1,api:[0,3],visibl:4,instal:[0,4,2],from:[3,1,5],describ:1,would:[1,5],visit:[2,1,4],two:[1,5],next:2,few:[2,4,5],live:[1,4],recommend:5,decentr:5,type:5,tell:5,more:[0,5,1,4],peopl:[4,5],site_root:4,train:[],particular:5,hold:[2,1],easiest:2,none:[1,4],someproject:2,sometim:4,car:[],work:[2,3,7,5],histori:5,anon_us:4,whatev:5,learn:[0,7],purpos:5,root:5,fetch:4,control:5,distrubut:[],quickstart:0,share:[],indic:1,topic:1,want:[0,7,4,1,2],alwai:[5,1,4],goal:5,turn:5,anoth:5,read_onli:4,how:[2,7,4,5],anyon:[2,4],instead:[5,1,4],simpl:[0,5],perman:4,product:5,subcommand:1,clone:[0,4,1,2],befor:[4,5],wrong:[4,5],plane:[],embrac:5,mai:3,data:[0,1,2,3,4,5],stabil:3,"short":1,practic:5,bind:4,caus:4,inform:4,combin:4,allow:[3,1,4],order:1,talk:5,help:[1,5],over:2,move:5,approv:5,becaus:[4,5],top:5,held:5,comma:1,left:4,mainli:1,perfect:5,write:5,cli:3,fix:5,better:5,solitari:[],window:[],restart:4,commmit:1,decad:5,main:4,might:[2,7,5],easier:5,them:[2,4,5],good:1,"return":1,greater:5,thei:5,python:[0,3,2],initi:[0,4,1,2],"break":3,jinja2:2,half:5,now:[0,4,2],choic:[0,1],somewher:[0,2],name:4,anyth:[0,5],edit:[0,5,1,4],gerrit:5,separ:[1,5],easili:[3,4],mode:4,each:[1,5],debug:1,updat:4,mean:[3,1,5],replac:1,individu:1,idea:5,realli:5,contrib:4,year:5,our:5,out:[0,5],shown:1,accomplish:5,goe:5,rev:1,content:1,print:1,got:[0,4],merg:4,gunicorn:4,insid:5,given:1,ask:5,org:[0,4,2],care:[4,5],launch:[],could:[4,5],keep:[4,5],thing:[2,1,5],perhap:5,place:0,isn:5,think:[1,5],frequent:3,first:[0,5,4,1,2],mdown:1,feel:3,onc:[2,4],number:1,yourself:1,hook:4,alreadi:[0,1,2],done:[2,4],least:1,stabl:3,open:[0,1,2],primari:5,ont:[],gpl:[3,7],differ:[1,5],script:[1,4],interact:[3,5],gpg:5,mkdir:4,system:5,messag:1,mercuri:[0,1,2,3,4,5,7],attach:1,store:5,listen:4,luckili:0,option:[1,4],especi:5,tool:[0,5],copi:4,specifi:1,biggest:5,part:4,review:[0,1,2,3,4,5,6,7],off:1,exactli:[1,5],than:[0,5],serv:4,cron:4,kind:[4,5],provid:[5,3,1,4],older:3,structur:[0,3,5],provic:[],project:[5,2,3,1,4],matter:2,friend:5,were:5,toward:5,browser:[0,1,2],sai:5,viewer:4,modern:1,ani:[2,5,7,1,4],myproject:4,have:[2,5,1,4],tabl:[],need:[0,1,2,3,4,5],seen:[1,5],seem:[4,5],built:4,also:[2,1,5],without:[2,3,4,5],take:[3,4,5],noth:1,sure:2,distribut:[0,7,4,5],deploy:[0,4],track:5,licens:[0,7],glog:[],most:[5,1,4],plai:0,deploi:4,model:5,don:[2,5,1,4],url:[2,1],later:[2,7,5],doe:[1,5],clean:3,latest:4,someth:[2,4],changeset:[5,2,3,1,4],wsgi:4,signoff:[5,0,3,1,4],show:1,text:[],verbos:1,subprocess:3,hack:[0,6],fear:3,find:[1,5],impact:5,yoursit:4,onli:[2,5,1,4],layout:[0,6,3],configur:4,behind:5,should:[2,5,7,1,4],local:[0,5,4,2],get:[2,1],stop:1,bear:[],autom:4,repo:[2,4],made:4,report:[0,2],neither:1,requir:[2,1],enabl:[0,1],remot:[2,1,5],bad:1,integr:0,contain:5,grab:4,where:[1,4],wrote:5,view:[1,4],set:[2,5,1,4],see:[2,4],num:1,fail:1,expertis:5,statu:1,hgrc:[0,4,2],state:1,won:[4,5],simplest:5,"import":4,awai:[0,5],experi:5,approach:[3,5],parent:[],disallow:1,extens:[0,4,1,2],job:4,both:2,howev:5,quiet:1,tour:2,instanc:4,context:1,com:4,albeit:3,comment:[5,0,3,1,4],markdown:1,simpli:[4,5],point:4,overview:[0,2],period:[],path:[0,4,1,2],diff:1,guid:0,reviewboard:5,code:[0,1,2,3,4,5],coupl:2,been:5,mark:1,interpret:[],basic:[0,5],immedi:4,oth:[],fire:[2,4],thousand:5,atlassian:5,understand:5,"catch":5,impati:0,those:1,crucibl:5,look:[3,7,4,5],"while":[2,5],unifi:1,error:[2,1,5],anonym:[1,4],advantag:5,ctrl:1,readi:[0,2],canon:1,non:3,worri:2,itself:[0,7,5],clutter:[2,5],uncom:4,conf:4,revis:1,sever:[1,5],develop:[0,5],welcom:[],author:[3,4,5],perform:[0,1],suggest:2,make:[2,3,1,5],anon:[1,4],same:[5,7,1,4],document:[0,6,2],conflict:4,http:[0,4,1,2],webserv:4,yese:1,someon:[5,1,4],hand:5,fairli:3,user:[0,4,5],implement:3,task:1,kept:3,eleg:3,whole:[1,5],well:[2,4],person:5,exampl:[2,4],command:[0,3,4,1,2],thi:[0,1,2,3,4,5,7],programm:[],everyth:4,usual:[],identifi:1,just:[2,5],when:[0,5,1,4],collabor:[1,5],web:[0,4,1,2],easi:5,had:5,except:1,littl:5,add:[0,4,1,2],els:[1,5],useless:5,applic:0,around:[0,5],format:[0,3,1],read:[2,5,1,4],know:[0,5,2],insert:4,like:[5,2,3,1,4],specif:[1,5],changelog:2,manual:4,server:[0,4,5],necessari:[4,5],popular:5,output:1,page:7,encount:[2,4],www:4,right:[0,1],often:[3,5],some:[0,5,1,4],back:[4,5],intern:[3,5],sampl:4,home:[],avoid:[3,5],though:5,definit:[],usernam:[1,4],localhost:[0,4,1,2],refer:4,machin:5,creatur:[],run:[0,4,1,2],power:5,usag:[0,1,2],sacrif:5,host:2,repositori:[0,1,2,3,4,5],post:2,src:[2,5],about:[2,7,5],central:5,unfortun:5,commit:[2,1,5],own:[0,1,5],pythonpath:4,within:5,automat:4,down:[2,4],ensur:1,subvers:5,your:[0,1,2,3,4,5],manag:5,git:5,lof:[],log:5,wai:[2,5],support:5,editor:1,start:[0,5,4,1,2],reli:5,interfac:[0,3,4,1,2],includ:[4,5],lot:5,"var":4,hei:5,"function":[3,5],ago:5,head:4,form:5,forc:[],bundl:2,neutral:[1,5],yourproject:[4,5],gain:1,newer:3,line:[0,1,2,3,4,5],inlin:1,"true":4,bug:[0,2],pull:[2,5,1,4],rietveld:5,possibl:[3,1,5],whether:1,access:[2,4],allow_anon_com:4,displai:1,below:[1,4],otherwis:1,problem:[2,4,5],constant:3,creat:[2,5,7,1,4],doesn:[4,5],exist:[2,3,5],file:[0,1,2,3,4,5],guarante:3,check:[0,1,2],probabl:[2,1,4],echo:4,googl:[],titl:4,tip:[],detail:1,"default":[1,4],other:[0,1,2,3,4,5],normal:[4,5],test:[0,6,1],you:[0,1,2,4,5,7],nice:4,meaning:[],reduc:3,bitbucket:[0,4,2],receiv:4,directori:[0,5,4,2],tradeoff:3,time:[2,1],push:[5,1,4]},titles:["hg-review documentation","Command Line Interface","Overview","API","Web Interface","Concepts","Hacking hg-review","Licensing"],modules:{},descrefs:{},filenames:["index","cli","overview","api","webui","concepts","hacking","licensing"]})
\ No newline at end of file
+Search.setIndex({desctypes:{},terms:{represent:3,all:[5,2,3,1,4],concept:[0,5,2],project_url:4,steve:3,mile:5,follow:[3,1],hate:[],decid:1,depend:[2,3,4],flask:2,base64:3,readabl:3,init:[0,4,1,2],program:[3,7,5],under:7,worth:3,sourc:2,string:3,fals:[1,4],faq:7,offlin:5,failur:1,veri:3,affect:7,relev:4,four:3,disturb:[],level:[3,1],did:5,list:[3,1,5],"try":5,item:1,"0e987f91e9b6628b26a30c5d00668a15fae8f22f":3,stderr:1,gut:5,quick:2,pleas:2,prevent:4,natur:5,sign:[1,5],past:5,second:[3,5],design:[3,4],pass:1,port:[1,4],even:[4,5],index:[],what:[0,3,1,4],poke:0,section:4,abl:[3,4],remain:5,current:[1,4],delet:[],version:[2,3,7,5],"new":[2,1,4],hgreview:[2,1],ever:4,"public":[2,1,4],can:[5,2,3,1,4],full:[1,5],hash:3,never:[4,5],here:[0,3],let:[2,4,5],address:[1,4],layout:[0,6,3],valu:1,search:[],sjl:[0,4,2],action:[],opinion:[3,5],chang:[3,1,5],chanc:[4,5],repositori:[0,1,2,3,4,5],extra:4,backout:5,appli:[3,5],modul:[],brought:[],filenam:[3,1],api:[0,3],visibl:4,instal:[0,4,2],txt:3,from:[3,1,5],describ:1,would:[1,5],visit:[2,1,4],two:[3,1,5],next:2,few:[2,4,5],live:[1,4],recommend:5,decentr:5,type:5,tell:5,more:[5,0,3,1,4],peopl:[4,5],site_root:4,train:[],particular:5,actual:3,hold:[2,1],easiest:2,high:3,none:[1,4],someproject:2,sometim:4,car:[],work:[2,3,7,5],histori:5,left:4,anon_us:4,whatev:5,learn:[0,7],purpos:5,root:5,fetch:4,control:5,distrubut:[],quickstart:0,give:3,share:[],indic:1,topic:1,want:[0,1,2,3,4,7],alwai:[5,3,1,4],mai:3,goal:5,thing:[2,1,5],anoth:5,write:5,how:[2,7,4,5],anyon:[2,4],instead:[5,1,4],simpl:[0,5],perman:4,product:5,subcommand:1,clone:[0,4,1,2],befor:[4,5],wrong:[4,5],plane:[],embrac:5,date:3,data:[0,1,2,3,4,5],stabil:3,"short":1,practic:5,bind:4,caus:4,inform:4,combin:4,allow:[3,1,4],order:1,talk:5,help:[1,5],over:2,move:5,approv:5,becaus:[3,4,5],top:5,held:5,comma:1,hgrc:[0,4,2],mainli:1,perfect:5,read_onli:4,style:3,cli:3,fix:5,better:5,solitari:[],window:[],restart:4,commmit:1,decad:5,main:4,might:[2,7,5],easier:5,them:[2,3,4,5],good:1,"return":1,greater:5,thei:5,python:[0,3,2],initi:[0,3,4,1,2],"break":3,jinja2:2,half:5,now:[0,4,2],choic:[0,1],somewher:[0,2],name:4,anyth:[0,5],edit:[5,0,3,1,4],gerrit:5,separ:[1,5],easili:[3,4],mode:4,each:[1,5],debug:1,unicod:[],updat:4,mean:[3,1,5],replac:1,individu:1,idea:5,realli:5,ensur:1,expect:3,year:5,our:5,out:[0,5],shown:1,accomplish:5,space:3,goe:5,rev:1,content:1,print:1,got:[0,4],prioriti:3,gunicorn:4,insid:5,given:[3,1],ask:5,org:[0,4,2],"byte":3,care:[4,5],indent:3,launch:[],could:[4,5],keep:[4,5],turn:5,perhap:5,place:0,isn:5,think:[1,5],frequent:3,first:[0,1,2,3,4,5],mdown:1,feel:3,onc:[2,4],number:1,yourself:1,hook:4,alreadi:[0,1,2],done:[2,4],least:1,blank:3,stabl:3,open:[0,1,2],primari:5,ont:[],gpl:[3,7],differ:[1,5],script:[1,4],interact:[3,5],gpg:5,mkdir:4,system:[3,5],messag:[3,1],mercuri:[0,1,2,3,4,5,7],attach:1,store:[3,5],listen:4,luckili:0,option:[1,4],especi:5,tool:[0,5],copi:4,specifi:1,"var":4,part:4,pars:3,kept:3,exactli:[1,5],than:[0,5],serv:4,cron:4,kind:[4,5],provid:[5,3,1,4],eleg:3,structur:[0,3,5],provic:[],project:[5,2,3,1,4],matter:2,friend:5,were:5,toward:5,browser:[0,1,2],sai:5,viewer:4,modern:1,ani:[1,2,3,7,5,4],myproject:4,raw:3,have:[5,2,3,1,4],tabl:[],need:[0,1,2,3,4,5],seen:[1,5],seem:[4,5],built:4,also:[2,1,5],exampl:[2,4],take:[3,4,5],which:3,noth:1,sure:2,distribut:[0,7,4,5],deploy:[0,4],track:5,licens:[0,7],glog:[],most:[5,1,4],plai:0,deploi:4,everyth:4,don:[2,5,1,4],url:[2,1],later:[2,3,7,5],doe:[1,5],clean:3,latest:4,someth:[2,4],changeset:[5,2,3,1,4],wsgi:4,reykjavi:3,signoff:[5,0,3,1,4],show:1,text:3,verbos:1,subprocess:3,hack:[0,6],fear:3,find:[1,5],impact:5,yoursit:4,onli:[2,5,1,4],locat:2,configur:4,state:1,should:[1,2,3,7,5,4],local:[0,5,4,2],get:[2,1],stop:1,bear:[],autom:4,repo:[2,4],rietveld:5,report:[0,2],awai:[0,3,5],requir:[2,1],enabl:[0,3,1],mon:3,method:3,remot:[2,1,5],bad:1,integr:0,contain:5,grab:4,where:[1,4],wrote:5,view:[1,4],set:[2,5,1,4],see:[2,3,4],num:1,fail:1,page:7,expertis:5,statu:1,review:[0,1,2,3,4,5,6,7],behind:5,won:[4,5],volatil:3,simplest:5,"import":4,neither:1,experi:5,approach:[3,5],parent:[],disallow:1,extens:[0,4,1,2],job:4,otherwis:1,tue:3,both:[2,3],last:3,howev:5,quiet:1,tour:2,instanc:4,context:1,com:[3,4],albeit:3,comment:[5,0,3,1,4],markdown:[3,1],simpli:[3,4,5],point:[3,4],overview:[0,2],period:[],path:[0,4,1,2],diff:1,guid:0,reviewboard:5,code:[0,1,2,3,4,5],coupl:2,been:[3,5],mark:1,json:3,interpret:[],basic:[0,5],immedi:4,quickli:3,oth:[],fire:[2,4],thousand:5,atlassian:5,understand:5,"catch":5,impati:0,those:1,crucibl:5,look:[3,7,4,5],plain:3,"while":[2,5],unifi:1,error:[2,1,5],anonym:[1,4],advantag:5,ctrl:1,readi:[0,2],canon:1,non:3,worri:2,"default":[1,4],itself:[0,7,5],clutter:[2,5],uncom:4,conf:4,revis:1,sever:[1,5],develop:[0,5],welcom:[],author:[3,4,5],perform:[0,1],suggest:2,make:[2,3,1,5],belong:3,anon:[1,4],same:[5,7,1,4],document:[0,6,3,2],conflict:4,http:[0,4,1,2],webserv:4,yese:1,someon:[5,1,4],hand:5,fairli:3,moment:3,user:[0,4,5],implement:3,u0301k:3,task:1,off:1,older:3,whole:[1,5],well:[2,4],person:[3,5],without:[2,3,4,5],command:[0,3,4,1,2],thi:[0,1,2,3,4,5,7],programm:[],model:5,usual:[],identifi:1,just:[2,5],tip:[],collabor:[1,5],changset:3,cmv5ywphdmnmgwsudhh0:3,human:3,web:[0,4,1,2],easi:[3,5],had:5,except:1,littl:5,add:[0,4,1,2],els:[1,5],useless:5,applic:[0,3],around:[0,5],format:[0,3,1],read:[2,5,1,4],know:[0,5,2],hgdate:3,insert:4,like:[5,2,3,1,4],specif:[1,5],safest:3,changelog:2,manual:4,integ:3,server:[0,4,5],necessari:[4,5],popular:5,output:1,losh:3,manag:5,encount:[2,4],www:4,right:[0,1],often:[3,5],some:[5,0,3,1,4],back:[4,5],intern:[0,3,5],"export":3,home:[],avoid:[3,5],though:5,definit:[],per:3,usernam:[3,1,4],stevelosh:3,localhost:[0,4,1,2],refer:4,machin:5,creatur:[],run:[0,4,1,2],power:5,usag:[0,1,2],sacrif:5,host:2,although:4,post:2,src:[2,5],about:[2,7,5],central:5,unfortun:5,includ:[3,4,5],commit:[2,1,5],own:[0,1,5],pythonpath:4,within:5,encod:3,automat:4,down:[2,4],empti:3,contrib:4,subvers:5,your:[0,1,2,3,4,5],merg:4,git:5,lof:[],log:5,wai:[2,5],support:5,start:[0,5,4,1,2],reli:[3,5],interfac:[0,3,4,1,2],editor:1,lot:5,biggest:5,hei:5,"function":[3,5],reduc:3,head:4,form:5,forc:[],bundl:2,jul:3,neutral:[3,1,5],yourproject:[4,5],gain:1,newer:3,line:[0,1,2,3,4,5],inlin:1,"true":4,bug:[0,2],pull:[2,5,1,4],made:4,utf:3,possibl:[3,1,5],whether:[3,1],access:[2,4],allow_anon_com:4,displai:1,below:[1,4],sampl:[3,4],problem:[2,4,5],constant:3,creat:[2,5,7,1,4],doesn:[4,5],repres:3,exist:[2,3,5],file:[0,1,2,3,4,5],guarante:3,check:[0,3,1,2],probabl:[2,1,4],echo:4,googl:[],titl:4,when:[5,0,3,1,4],detail:[3,1],virtual:3,field:3,other:[0,1,2,3,4,5],lookup:3,futur:3,normal:[4,5],test:[0,6,1],you:[0,1,2,3,4,5,7],nice:4,node:3,meaning:[],ago:5,bitbucket:[0,4,2],receiv:[3,4],faster:3,directori:[5,0,3,4,2],tradeoff:3,time:[2,3,1],push:[5,1,4]},titles:["hg-review documentation","Command Line Interface","Overview","API","Web Interface","Concepts","Hacking hg-review","Licensing"],modules:{},descrefs:{},filenames:["index","cli","overview","api","webui","concepts","hacking","licensing"]})
\ No newline at end of file