-# - we don't make a hardline clone of the destination repo; instead
-# we make a copy (not a hardlink clone) of _template
-# - we set up a post-receive hook as well, which does the following:
-# + check that exactly two refs were updated
-# + delete the two stunt hooks
-# + rename the working repo into place as the destination repo
+# - we create a prospective new destination repo by making a copy
+# of _template
+# - we use the prospective new destination repo instead of the
+# actual new destination repo (since the latter doesn't exist)
+# - we set up a post-receive hook as well, which
+# + checks that exactly two refs were updated
+# + touches a stamp file
+# - after git-receive-pack exits, we rename the prospective
+# destination repo into place
+#
+# Cleanup strategy:
+# - We are crash-only
+# - Temporary working trees and their locks are cleaned up
+# opportunistically by a program which tries to take each lock and
+# if successful deletes both the tree and the lockfile
+# - Prospective working trees and their locks are cleaned up by
+# a program which tries to take each lock and if successful
+# deletes any prospective working tree and the lock (but not
+# of course any actual tree)
+# - It is forbidden to _remove_ the lockfile without removing
+# the corresponding temporary tree, as the lockfile is also
+# a stampfile whose presence indicates that there may be
+# cleanup to do