------------------------------------------------------------
Terminology:
------------------------------------------------------------

WoT -
      Web of Trust. May refer to the plugin of the same name or compatible
      alternative plugins like LCWoT - Less Crappy Web of Trust.
WoT identifier -
                 Web of Trust identifier. This is MyNickname@public-key-hash.
                 Often abbreviated "wot_id". Not to be confused with a WoT
                 identity.
WoT identity ID -
              a WoT identity's public key hash.

------------------------------------------------------------
Architecture:
------------------------------------------------------------



------------------------------------------------------------
Dev log:
------------------------------------------------------------
!!! experimental branch for testing wiki over hg idea !!!
See (note updated uri)
reenet:USK@Gq-FBhpgvr11VGpapG~y0rGFOAHVfzyW1WoKGwK-fFw,MpzFUh5Rmw6N~aMKwm9h2Uk~6aTRhYaY0shXVotgBUc,AQACAAE/fniki/-22/
!!!

djk20100207
BUG: fn-wiki will run without .infocalypse. audit other new commands, should abort cleanly.

djk20100123
Saw error reinserting fred staging mirror:
{4}:008c3b951f:(102, 117, 0):PutSuccessful
Exiting because of an IO error.
{3}:4e965d6bb1:(0, 32, 0):ProtocolError:('ProtocolError', {'CodeDescription': 'Socket closed'})
{3}:24a632ebbe:(32, 102, 0):ProtocolError:('ProtocolError', {'CodeDescription': 'Socket closed'})
{3}:ec68723c40:(-1, 0, 0):ProtocolError:('ProtocolError', {'CodeDescription': 'Socket closed'})
FCP connection [CLOSED]
abort: No such file or directory: /home/dkarbott/infocalypse_tmp/_tmp_895966490831

Not reproducible.
Bug introduced by changes to wiki_hack branch?


djk20091208
Failed attempt to DRY out:
   
THIS_IS_A_CONSTANT = 'THIS_IS_A_CONSTANT'

constant defs.

# pylint doesn't infer the names so it reports them as undefined
# def str_constant(name):
#    assert not name is globals()
#    globals()[name] = name
#str_constant('ARC_REQUESTING_URI')


djk20091111
Remember to test pathhacks under windows.  If it works, use it to clean
up the config and fms import hacks.

djk20091003
Added work around for hg-git bug:
http://github.com/schacon/hg-git/issues#issue/51

Tested hg-git fix on Windows XP w/ 1.3.1 binary mercurial 
(also tested fn-fmsread), Ubuntu Jaunty Jackalope with mercurial 1.1.2,
gentoo Python 2.6.2 and mercurial 1.3.1.

djk20090714
Added Python 2.5.4 version of ConfigParser.py to the python2_5_file
directory.  This was required to make the berkwood 1.3 Windows
binary distribution of Mercurial work. i.e. here:

http://mercurial.berkwood.com/binaries/Mercurial-1.3.exe

Smoke tested on Windows XP w/ 1.2.1, 1.3 binary
Mercurial distros:
http://mercurial.berkwood.com/binaries/Mercurial-1.3.exe
http://mercurial.berkwood.com/binaries/Mercurial-1.2.1.exe

Looks good.

djk20090713
Smoke tested on Ubuntu Jaunty Jackalope with
Mercurial 1.1.2.  Looks good.

djk20090706
Added doc/infocalypse_howto.html 

djk20090703
Smoke tested fn-pull / fn-push / fn-fmsread on Windows XP using 
Mercurial Distributed SCM (version 1.2.1)
from http://mercurial.berkwood.com/
No problems.

fn-putsite works on XP after fix in 7e118c550744.

Successfully pulled fred_staging/82/ on XP.

djk20090702
Minimum required mercurial version is (and probably has been for a
while) 1.2.1. [djk20090713, Too conservative. 1.1.2 works on 
Jaunty Jackalope]. 1.0.2 definitely doesn't work anywhere (problems pushing)]

That's the only rev. I've been testing with.

djk20090620
Re-insert failures are caused by a Mercurial bug
see Limitations below.

http://www.selenic.com/mercurial/bts/issue1704

djk20090511
Finally, fixed default config creation.

There is a bug which sometimes shows up in re-insert.
See bottom of this file.

djk20090502
I added an explicit format_version field to the config file
and added code to automatically re-write the config file
when the version changes.  

Disregard the note about fms* config variables below.
They will appear 'automagically'.

djk20090501
I added fn-fmsread and fn-fmsnotify to support sending and
receiving repo update notifications via fms. They are
documented in __init__.py.

The gensig.py script can be used to publish repo updates
in your fms signature.

IMPORTANT:
If you were running an earlier version of the code
you must fn-push or fn-pull successfully at least once
before you will see the new fms* config variables in
your .infocalypse/infocalypse.ini file.

djk20090425
I reworked the graph representation to handle multiple
heads correctly.  

Repositories inserted with the previous code won't work
with the new code because I had to change the 
top key format.

djk20090422
pylint -fparseable --include-ids=y *.py

------------------------------------------------------------
KNOWN LIMITATIONS/BUGS:
------------------------------------------------------------
o Doesn't support hg rollback correctly. 
  I need to dig into this. Advice welcome.

o reinsert sometimes fails because it can't regenerate a bit-for-bit
  exact copy of the bundle it is trying to insert.
  I need to dig into this more.  It looks like command.bundle()
  is giving me different outputs for the same inputs depending
  on the repo head????
  djk20090620
  This is a Mercurial bug:
  http://www.selenic.com/mercurial/bts/issue1704

! Bugs where I treat graph requests as edge requests,
  AUDIT FOR BUGS ANALOGOUS: adebd3c115a6
  Saw an assertion trip. 
  [djk20091004 think I've got this sorted.]

x Won't handle repositories with multiple heads correctly.
  I am reworking the graph rep to fix this.
  [FIXED: eb110e539719]

FCP BUGS:
x 1208 SSK reinserts of same data fail with code 9.
  This breaks fn-reinsert. [FIXED in 1209]
x 1208 RemoveRequest kills the FCP connection.
  This can cause fn-pull to fail. 
  It should work if you run it again. 
  [FIXED in 1209]