infocalypse

(djk)
2009-07-20: Updated doc.

Updated doc.

diff --git a/infocalypse/__init__.py b/infocalypse/__init__.py
--- a/infocalypse/__init__.py
+++ b/infocalypse/__init__.py
@@ -14,13 +14,13 @@ in order to use this extension.
 For more information on Freenet see:
 http://freenetproject.org/
 
-To use the (optional) fn-fmsread and fn-fmsnotify commands
-you must be able to connect to a running FMS
-server.
+To use the (optional, but highly recommended) fn-fmsread
+and fn-fmsnotify commands you must be able to connect to
+a running FMS server.
 
 For more information on FMS see:
 USK@0npnMrqZNKRCRoGojZV93UNHCMN-6UU3rRSAmP6jNLE,
-   ~BG-edFtdCC1cSH4O3BWdeIYa8Sw5DfyrSV-TKdO5ec,AQACAAE/fms/100/
+   ~BG-edFtdCC1cSH4O3BWdeIYa8Sw5DfyrSV-TKdO5ec,AQACAAE/fms/103/
 
 ADDING THE EXTENSION:
 Add the following to your .hgrc/mercurial.ini file.
@@ -130,10 +130,16 @@ REPOSITORY UPDATE NOTIFICATIONS VIA FMS:
 hg fn-fmsread
 
 with no arguments reads the latest repo USK indexes from
-fms and updates the locally cached values.
+FMS and updates the locally cached values.
 
 There's a trust map in the config file which
-determines which fms ids can update which repositories.
+determines which FMS ids can update the index values
+for which repositories. It is purely local and completely
+separate from the trust values which appear in the
+FMS web of trust.
+
+The trust map is stored in the '[fmsread_trust_map]' section
+of the config file.
 
 The format is:
 <number> = <fms_id>|<usk_hash0>|<usk_hash1>| ... |<usk_hashn>
@@ -141,41 +147,76 @@ The format is:
 The number value must be unique, but is ignored.
 
 You can get the repository hash for a repo by running
-fn-info in the directory where you have fn-pull'ed it.
+fn-info in the directory where you have fn-pull'ed it
+or with fn-fmsread --list[all] if it has been announced.
 
-You MUST manually update the trust map to enable
-index updating for repos other than the one
-this code lives in (be68e8feccdd).
-
+Here's an example trust map config entry:
 # Example .infocalypse snippet
 [fmsread_trust_map]
 1 = test0@adnT6a9yUSEWe5p8J-O1i8rJCDPqccY~dVvAmtMuC9Q|55833b3e6419
 0 = djk@isFiaD04zgAgnrEC5XJt1i4IE7AkNPqhBG5bONi6Yks|be68e8feccdd|5582404a9124
 2 = test1@SH1BCHw-47oD9~B56SkijxfE35M9XUvqXLX1aYyZNyA|fab7c8bd2fc3
 
+You MUST update the trust map to enable index updating for
+repos other than the one this code lives in (be68e8feccdd).
+You can edit the config file directly if you want.
+
+However, the easiest way to update the trust map is by using the
+--trust and --untrust options on fn-fmsread.
+
+For example to trust falafel@IxVqeqM0LyYdTmYAf5z49SJZUxr7NtQkOqVYG0hvITw
+to notify you about changes to the repository with repo hash 2220b02cf7ee,
+type:
+
+hg fn-fmsread --trust --hash 2220b02cf7ee \
+   --fmsid falafel@IxVqeqM0LyYdTmYAf5z49SJZUxr7NtQkOqVYG0hvITw
+
+And to stop trusting that FMS id for updates to 2220b02cf7ee, you would
+type:
+
+hg fn-fmsread --untrust --hash 2220b02cf7ee \
+   --fmsid falafel@IxVqeqM0LyYdTmYAf5z49SJZUxr7NtQkOqVYG0hvITw
+
+To show the trust map type:
+
+hg fn-fmsread --showtrust
+
+The command:
+
 hg fn-fmsread --list
 
-Displays announced repositories from fms ids that appear in
+displays announced repositories from FMS ids that appear anywhere in
 the trust map.
 
 hg fn-fmsread --listall
 
 Displays all announced repositories including ones from unknown
-fms ids.
+FMS ids.
+
+You can use the --hash option with fn-pull to pull any repository
+you see in the fn-read --list[all] lists by specifying the
+repository hash.
+
+e.g. to pull this code, cd to an empty directory and type:
+
+hg init
+hg fn-pull --hash be68e8feccdd --aggressive
+
+The command:
 
 hg fn-fmsnotify
 
-Posts update notifications to fms.
+posts update notifications to FMS.
 
 You MUST set the fms_id value in the config file
-to your fms id for this to work. You only need the
+to your FMS id for this to work. You only need the
 part before the '@'.
 
 # Example .infocalypse snippet
 fms_id = djk
 
 Use --dryrun to double check before sending the actual
-fms message.
+FMS message.
 
 Use --announce at least once if you want your USK to
 show up in the fmsread --listall list.
@@ -193,7 +234,7 @@ The fms_host and fms_port variables allo
 to specify the fms host and port if you run
 fms on a non-standard host/port.
 
-fms can have pretty high latency. Be patient. It may
+FMS can have pretty high latency. Be patient. It may
 take hours (sometimes a day!) for your notification
 to appear.  Don't send lots of redundant notifications.
 
@@ -256,11 +297,12 @@ extension was installed into.
 SOURCE CODE:
 The authoritative repository for this code is hosted in Freenet.
 
-# hg fn-fmsread -v
+hg fn-fmsread -v
 hg fn-pull --debug --aggressive \\
 --uri USK@kRM~jJVREwnN2qnA8R0Vt8HmpfRzBZ0j4rHC2cQ-0hw,\\
 2xcoQVdQLyqfTpF2DpkdUIbHFCeL4W~2X1phUYymnhM,AQACAAE/\\
-infocalypse.hgext.R1/37
+infocalypse.hgext.R1/38
+
 
 CONTACT:
 djk@isFiaD04zgAgnrEC5XJt1i4IE7AkNPqhBG5bONi6Yks
diff --git a/infocalypse/config.py b/infocalypse/config.py
--- a/infocalypse/config.py
+++ b/infocalypse/config.py
@@ -213,7 +213,7 @@ class Config:
                 ret.append(fms_id)
         return ret
 
-    # Broke this into a seperate func to appease pylint.
+    # Broke this into a separate func to appease pylint.
     @classmethod
     def validate_trust_map_entry(cls, cfg, fields):
         """ INTERNAL: Raise a ValueError for invalid trust map entries. """
diff --git a/infocalypse/doc/infocalypse_howto.html b/infocalypse/doc/infocalypse_howto.html
--- a/infocalypse/doc/infocalypse_howto.html
+++ b/infocalypse/doc/infocalypse_howto.html
@@ -10,6 +10,7 @@ HOWTO: Infocalypse 2.0 hg extension
 <hr>
 <h1>HOWTO: Infocalypse 2.0 hg extension</h1>
 <hr>
+<em>updated: 20090720</em>
 <h2><a name="toc"> Table of Contents</a></h2>
 <ul>
 <li> <a href="#introduction">Introduction</a>
@@ -26,8 +27,9 @@ HOWTO: Infocalypse 2.0 hg extension
 <li><a href="#fms_overview">Using FMS to send and receive update notifications</a>
   <ul>
       <li> <a href="#fms_trust_map">The update trust map</a>
-      <li> <a href="#fms_read">Reading other peoples notifications</a>
+      <li> <a href="#fms_read">Reading other people's notifications</a>
       <li> <a href="#fms_post">Posting your own</a>
+      <li> <a href="#fms_pull_hash">Pulling an announced repository</a>
   </ul>
 <li> <a href="#fn_reinsert">Reinserting and 'sponsoring' repositories</a>
 <li> <a href="#forking">Forking a repository onto a new USK</a>
@@ -36,6 +38,7 @@ HOWTO: Infocalypse 2.0 hg extension
 <li> <a href="#risks">Risks</a>
 <li> <a href="#advocacy">Advocacy</a>
 <li> <a href="#source_code">Source Code</a>
+<li> <a href="#version_info">Fixes and version information</a>
 <li> <a href="#contact">Contact</a>
 </ul>
 <hr>
@@ -74,8 +77,11 @@ installed.
 You can find more information on Mercurial here: <br>
 <a href="http://mercurial.selenic.com/wiki/">http://mercurial.selenic.com/wiki/ [HTTP Link!]</a>
 <p>
-I've tested with version 1.2.1.  Later versions should work. Version 1.0.2 won't
-work.<p>
+Version 1.0.2 won't work.
+<p>I use version 1.2.1 (x86 Gentoo) on a daily basis. Later versions should work.
+<p>
+I've smoke tested 1.1.2 (on Ubuntu Jaunty Jackalope) and 1.3 (on Widows XP) without
+finding any problems.
 <li>FMS<br>
 Installation of the Freenet Messaging System (FMS) is <em>optional</em> but
 <em>highly recommended</em>.  The hg fn-fmsread and hg fn-fmsnotify commands won't work
@@ -333,21 +339,21 @@ via FMS.  It is <em>highly recommended</
 <h3><a name="fms_trust_map">The update trust map</a></h3>
 There's a trust map in the .infocalypse/infocalypse.ini config file which
 determines which fms ids can update the index values for
-which repositories.
+which repositories. It is purely local and completely
+separate from the trust values which appear in the
+FMS web of trust.
 <p>
 The format is:<br>
 <number> = <fms_id>|<usk_hash0>|<usk_hash1>| ... |<usk_hashn>
 <p>
 The number value must be unique, but is ignored.
 <p>
-The fms_id values are the full fms_ids that you are trusting to update the
+The fms_id values are the full FMS ids that you are trusting to update the
 repositories with the listed hashes.
 <p>
 The usk_hash* values are <a href="#repo_hashes">repository hashes</a>.
 <p>
-You MUST manually update the trust map to enable
-index updating for repos other than the one
-this code lives in (be68e8feccdd).
+Here's an example trust map config entry:
 <pre>
    # Example .infocalypse snippet
    [fmsread_trust_map]
@@ -355,8 +361,36 @@ this code lives in (be68e8feccdd).
    0 = djk@isFiaD04zgAgnrEC5XJt1i4IE7AkNPqhBG5bONi6Yks|be68e8feccdd|5582404a9124
    2 = test1@SH1BCHw-47oD9~B56SkijxfE35M9XUvqXLX1aYyZNyA|fab7c8bd2fc3
 </pre>
+<p>
+You <em>must</em> update the trust map to enable
+index updating for repos other than the one
+this code lives in (be68e8feccdd). You can edit the config
+file directly if you want.
+<p>
+However, the easiest way to update the trust map is by using the
+--trust and --untrust options on fn-fmsread.
+<p>
+For example to trust falafel@IxVqeqM0LyYdTmYAf5z49SJZUxr7NtQkOqVYG0hvITw
+to notify you about changes to the repository with repo hash 2220b02cf7ee,
+type:
+<p>
+<pre>
+hg fn-fmsread --trust --hash 2220b02cf7ee --fmsid falafel@IxVqeqM0LyYdTmYAf5z49SJZUxr7NtQkOqVYG0hvITw
+</pre>
+<p>
+And to stop trusting that FMS id for updates to 2220b02cf7ee, you would
+type:
+<p>
+<pre>
+hg fn-fmsread --untrust --hash 2220b02cf7ee --fmsid falafel@IxVqeqM0LyYdTmYAf5z49SJZUxr7NtQkOqVYG0hvITw
+</pre>
+<p>
+To show the trust map type:
+<pre>
+hg fn-fmsread --showtrust
+</pre>
 
-<h3><a name="fms_read">Reading other peoples notifications</a></h3>
+<h3><a name="fms_read">Reading other people's notifications</a></h3>
 <pre>
 hg fn-fmsread -v
 </pre>
@@ -376,6 +410,18 @@ hg fn-fmsread --listall
 Displays all announced repositories including ones from unknown
 fms ids.
 
+<h3><a name="fms_pull_hash">Pulling an announced repository</a></h3>
+You can use the --hash option with fn-pull to pull any repository
+you see in the fn-read --list or fn-read --listall lists.
+<p>
+For example to pull the latest version of the infocalypse
+extension code, cd to an empty directory and type:
+<p>
+<pre>
+hg init
+hg fn-pull --hash be68e8feccdd --aggressive
+</pre>
+<p>
 <h3><a name="fms_post">Posting your own</a></h3>
 <pre>
 hg fn-fmsnotify -v
@@ -601,6 +647,17 @@ hg update
 <p>
 <a href="#toc">[TOC]</a>
 <hr>
+<h2><a name="version_info">Fixes and version information</a></h2>
+<ul>
+   <li>hg version: 7b10fa400be1<br>
+   Added fn-fmsread --trust and --untrust and fn-pull --hash support.
+   <li>hg version: ea6efac8e3f6<br>
+   Fixed a bug that was causing the berkwood binary 1.3 Mercurial distribution
+   (<a href="http://mercurial.berkwood.com/binaries/Mercurial-1.3.exe">http://mercurial.berkwood.com/binaries/Mercurial-1.3.exe [HTTP Link!]</a>) not to work.
+</ul>
+<a href="#toc">[TOC]</a>
+<hr>
+
 <h2><a name="contact">Contact</a></h2>
 <b>fms:</b><br>
 djk@isFiaD04zgAgnrEC5XJt1i4IE7AkNPqhBG5bONi6Yks