Thu Mar 11 15:47:14 PST 2010  Jeremy Fitzhardinge <jeremy@goop.org>
  * Add ETags for immutable directories
  
  Like immutable files, the ETag is based on the storage index.
  However, since a directory is a special interpretation of a file, it is
  distinguished from the file by prepending "DIR:" onto the start of the
  ETag, and adding -representation on the end (where -representation is
  the ?t= argument, json, info, etc).
  
  It also checks the return of setETag and avoids generating a
  representation if the client already has it.
  

New patches:

[Add ETags for immutable directories
Jeremy Fitzhardinge <jeremy@goop.org>**20100311234714
 Ignore-this: b2b8f1c91af5e83b3c8d1441d658a15d
 
 Like immutable files, the ETag is based on the storage index.
 However, since a directory is a special interpretation of a file, it is
 distinguished from the file by prepending "DIR:" onto the start of the
 ETag, and adding -representation on the end (where -representation is
 the ?t= argument, json, info, etc).
 
 It also checks the return of setETag and avoids generating a
 representation if the client already has it.
 
] {
hunk ./src/allmydata/web/directory.py 148
 
     def render_GET(self, ctx):
         req = IRequest(ctx)
+
         # This is where all of the directory-related ?t=* code goes.
         t = get_arg(req, "t", "").strip()
hunk ./src/allmydata/web/directory.py 151
+
+        if not self.node.is_mutable():
+            si = self.node.get_storage_index()
+            if si and req.setETag('DIR:%s-%s' % (base32.b2a(si), t or "")):
+                    return ""
+
         if not t:
             # render the directory as HTML, using the docFactory and Nevow's
             # whole templating thing.
}

Context:

[setup: add licensing declaration for setuptools (noticed by the FSF compliance folks)
zooko@zooko.com**20100309184415
 Ignore-this: 2dfa7d812d65fec7c72ddbf0de609ccb
] 
[setup: fix error in licensing declaration from Shawn Willden, as noted by the FSF compliance division
zooko@zooko.com**20100309163736
 Ignore-this: c0623d27e469799d86cabf67921a13f8
] 
[CREDITS to Jacob Appelbaum
zooko@zooko.com**20100304015616
 Ignore-this: 70db493abbc23968fcc8db93f386ea54
] 
[desert-island-build-with-proper-versions
jacob@appelbaum.net**20100304013858] 
[docs: a few small edits to try to guide newcomers through the docs
zooko@zooko.com**20100303231902
 Ignore-this: a6aab44f5bf5ad97ea73e6976bc4042d
 These edits were suggested by my watching over Jake Appelbaum's shoulder as he completely ignored/skipped/missed install.html and also as he decided that debian.txt wouldn't help him with basic installation. Then I threw in a few docs edits that have been sitting around in my sandbox asking to be committed for months.
] 
[TAG allmydata-tahoe-1.6.1
david-sarah@jacaranda.org**20100228062314
 Ignore-this: eb5f03ada8ea953ee7780e7fe068539
] 
Patch bundle hash:
e39fc8874aa7dee40857867f2ea2653a62403182
