hg site extension
 
(Arne Babenhauserheide)
2011-11-24: only write commits[-x00]/index.html if it changed.

only write commits[-x00]/index.html if it changed.

diff --git a/site.py b/site.py
--- a/site.py
+++ b/site.py
@@ -144,26 +144,28 @@ def writelog(ui, repo, target, name):
             dd = d
             di = str(ck)+"00"
             d = commits+"-"+di
-            logs[-1].write("<p><a href=\"../commits-"+di+"\">earlier</a></p>")
+            logs[-1][-1] += "<p><a href=\"../commits-"+di+"\">earlier</a></p>"
             if ck>2:
                 # the older log gets a reference to the newer one
-                logs[-1].write("<p><a href=\"../commits-"+str(ck-2)+"00"+"\">later</a></p>")
+                logs[-1][-1] += "<p><a href=\"../commits-"+str(ck-2)+"00"+"\">later</a></p>"
             elif ck>1:
-                logs[-1].write("<p><a href=\"../commits\">later</a></p>")
-            logs.append(open(join(d, "index.html"), "w"))
+                logs[-1][-1] += "<p><a href=\"../commits\">later</a></p>"
+            logs.append([join(d, "index.html"), ""])
         else:
             d = commits
-            logs.append(open(join(d, "index.html"), "w"))
+            logs.append([join(d, "index.html"), ""])
 
-        logs[-1].write(templates["head"].replace("{reponame}", "<a href='../'>"+name+"</a>").replace("{title}", name))
+        logs[-1][-1] += templates["head"].replace("{reponame}", "<a href='../'>"+name+"</a>").replace("{title}", name)
         for c in range(ck*100+1, min(len(repo.changelog)+1, (ck+1)*100)):
             ctx = repo.changectx(str(-c))
             t.show(ctx)
-        logs[-1].write(ui.popbuffer())
+        logs[-1][-1] += ui.popbuffer()
 
-    for l in logs:
-        l.write(templates["foot"].replace("{reponame}", "<a href='../'>"+name+"</a>"))
-        l.close()
+    for filepath,data in logs:
+        data += templates["foot"].replace("{reponame}", "<a href='../'>"+name+"</a>")
+        if not contentequals(filepath,data): 
+            with open(filepath, "w") as f: 
+                f.write(data)
 
 
 def writecommits(ui, repo, target, name, force=False):