=== modified file 'bzrlib/doc_generate/__init__.py'
Index: unstable/bzrlib/doc_generate/__init__.py
===================================================================
--- unstable.orig/bzrlib/doc_generate/__init__.py
+++ unstable/bzrlib/doc_generate/__init__.py
@@ -16,6 +16,9 @@
 
 from __future__ import absolute_import
 
+import datetime
+import os
+
 
 def get_module(target):
     mod_name = "bzrlib.doc_generate.autodoc_%s" % (target)
@@ -25,3 +28,14 @@ def get_module(target):
         mod = getattr(mod, comp)
     return mod
 
+
+def get_autodoc_datetime():
+    """Obtain the datetime to use for timestamps embedded in generated docs.
+
+    :return: A `datetime` object
+    """
+    try:
+        return datetime.datetime.utcfromtimestamp(
+            int(os.environ['SOURCE_DATE_EPOCH']))
+    except (KeyError, ValueError):
+        return datetime.datetime.utcnow()
Index: unstable/bzrlib/doc_generate/autodoc_bash_completion.py
===================================================================
--- unstable.orig/bzrlib/doc_generate/autodoc_bash_completion.py
+++ unstable/bzrlib/doc_generate/autodoc_bash_completion.py
@@ -18,11 +18,10 @@
 
 from __future__ import absolute_import
 
-import time
-
 import bzrlib
 import bzrlib.help
 import bzrlib.commands
+from bzrlib.doc_generate import get_autodoc_datetime
 
 
 def get_filename(options):
@@ -30,12 +29,11 @@ def get_filename(options):
 
 
 def infogen(options, outfile):
-    t = time.time()
-    tt = time.gmtime(t)
+    d = get_autodoc_datetime()
     params = \
            { "bzrcmd": options.bzr_name,
-             "datestamp": time.strftime("%Y-%m-%d",tt),
-             "timestamp": time.strftime("%Y-%m-%d %H:%M:%S +0000",tt),
+             "datestamp": d.strftime("%Y-%m-%d"),
+             "timestamp": d.strftime("%Y-%m-%d %H:%M:%S +0000"),
              "version": bzrlib.__version__,
              }
 
Index: unstable/bzrlib/doc_generate/autodoc_man.py
===================================================================
--- unstable.orig/bzrlib/doc_generate/autodoc_man.py
+++ unstable/bzrlib/doc_generate/autodoc_man.py
@@ -26,12 +26,12 @@ from __future__ import absolute_import
 PLUGINS_TO_DOCUMENT = ["launchpad"]
 
 import textwrap
-import time
 
 import bzrlib
 import bzrlib.help
 import bzrlib.help_topics
 import bzrlib.commands
+from bzrlib.doc_generate import get_autodoc_datetime
 
 from bzrlib.plugin import load_plugins
 load_plugins()
@@ -44,12 +44,12 @@ def get_filename(options):
 
 def infogen(options, outfile):
     """Assembles a man page"""
-    t = time.time()
-    tt = time.gmtime(t)
+
+    d = get_autodoc_datetime()
     params = \
            { "bzrcmd": options.bzr_name,
-             "datestamp": time.strftime("%Y-%m-%d",tt),
-             "timestamp": time.strftime("%Y-%m-%d %H:%M:%S +0000",tt),
+             "datestamp": d.strftime("%Y-%m-%d"),
+             "timestamp": d.strftime("%Y-%m-%d %H:%M:%S +0000"),
              "version": bzrlib.__version__,
              }
     outfile.write(man_preamble % params)
