hg site extension
 
(Arne Babenhauserheide)
2014-02-08: only write bugfiles which changed → reduce the required uploads a

only write bugfiles which changed → reduce the required uploads a lot.

diff --git a/staticsite.py b/staticsite.py
--- a/staticsite.py
+++ b/staticsite.py
@@ -644,15 +644,24 @@ def writebugs(ui, repo, target, name):
         f.write(templates["foot"].replace("{reponame}", "<a href='../'>"+name+"</a>"))
     # write all bug details
     for bug in openbugs + resolvedbugs:
-        bugsfile = bugslist = os.path.join(bugdir, bug.fullid + ".html")
-        content = "<h2>" + bug.description + "</h2>\n"
-        content += "<pre>" + bug.details + "</pre>\n"
-        content += "<hr>"
-        content += "- <a href=\"index.html\">" + _("all bugs") + "</a> -"
-        with open(bugsfile, "w") as bf:
-            bf.write(templates["head"].replace("{reponame}", "<a href='../'>"+name+"</a>").replace("{title}", name))
-            bf.write(content)
-            bf.write(templates["foot"].replace("{reponame}", "<a href='../'>"+name+"</a>"))
+        bugsfile = os.path.join(bugdir, bug.fullid + ".html")
+        body = "<h2>" + bug.description + "</h2>\n"
+        body += "<pre>" + bug.details + "</pre>\n"
+        body += "<hr>"
+        body += "- <a href=\"index.html\">" + _("all bugs") + "</a> -"
+        content = templates["head"].replace("{reponame}", "<a href='../'>"+name+"</a>").replace("{title}", name)
+        content += body
+        content += templates["foot"].replace("{reponame}", "<a href='../'>"+name+"</a>")
+        needswrite = False
+        try:
+            with open(bugsfile) as bf:
+                if not bugsfile.read() == content:
+                    raise Exception("bugfile content does not match content to write. Needs overwriting.")
+        except: # generic exception: If anything went wrong, we need to write the file.
+            with open(bugsfile, "w") as bf:
+                bf.write(templates["head"].replace("{reponame}", "<a href='../'>"+name+"</a>").replace("{title}", name))
+                bf.write(content)
+                bf.write(templates["foot"].replace("{reponame}", "<a href='../'>"+name+"</a>"))
 
 def escapename(filename):
     """escape index.html as .index.html and .ind… as ..ind… and so fort."""