# HG changeset patch # User Steve Losh # Date 1278995576 14400 # Node ID 1d1ba7d1338d9f3b650fdfe53c3dd26bee196740 # Parent 84fc0674789f8e908a2b666af89081b7c7a1fe3a hg-review: Update documentation. diff -r 84fc0674789f -r 1d1ba7d1338d hg-review/_sources/api.txt --- 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 ", + "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 ", + "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 ` 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. diff -r 84fc0674789f -r 1d1ba7d1338d hg-review/_static/review.css --- 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; diff -r 84fc0674789f -r 1d1ba7d1338d hg-review/_static/review.less --- 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; } diff -r 84fc0674789f -r 1d1ba7d1338d hg-review/api.html --- 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 ... +

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

+

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 command line interface documentation for more details.

-
-

Python API

+
+

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.

@@ -115,9 +225,14 @@ diff -r 84fc0674789f -r 1d1ba7d1338d hg-review/index.html --- 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 @@
  • Data Repository Layout
  • File Formats
  • Command Line Interface
  • -
  • Python API
  • +
  • Internal Python API
  • Hacking hg-review
      diff -r 84fc0674789f -r 1d1ba7d1338d hg-review/searchindex.js --- 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