Store the git hash of developer docs loaded
authorMagnus Hagander <magnus@hagander.net>
Mon, 20 Jun 2022 18:29:36 +0000 (20:29 +0200)
committerMagnus Hagander <magnus@hagander.net>
Mon, 20 Jun 2022 18:32:05 +0000 (20:32 +0200)
This will require some further updates on the loading side of things
before it's fully valid, but for now track and show a link to the git
hash used to build developer docs *if* one is specified.

We only track it for devel (because releases have release numbers) and
we only show it in the cases where we would already show the loading
time.

pgweb/core/migrations/0006_version_docsgit.py [new file with mode: 0644]
pgweb/core/models.py
pgweb/docs/views.py
templates/docs/docspage.html
tools/docs/docload.py

diff --git a/pgweb/core/migrations/0006_version_docsgit.py b/pgweb/core/migrations/0006_version_docsgit.py
new file mode 100644 (file)
index 0000000..0afccca
--- /dev/null
@@ -0,0 +1,18 @@
+# Generated by Django 3.2.11 on 2022-06-20 18:16
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('core', '0005_remove_version_relnotes'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='version',
+            name='docsgit',
+            field=models.CharField(blank=True, help_text='The git hash of the loaded docs, for devel version', max_length=40),
+        ),
+    ]
index df29ed3733620a4e9887b0189f2df46ffbc45ed7..317031d1c5c09c463de71a5ea8e53481de0c3dad 100644 (file)
@@ -25,6 +25,7 @@ class Version(models.Model):
     supported = models.BooleanField(null=False, blank=False, default=True)
     testing = models.IntegerField(null=False, blank=False, default=0, help_text="Testing level of this release. latestminor indicates beta/rc number", choices=TESTING_CHOICES)
     docsloaded = models.DateTimeField(null=True, blank=True, help_text="The timestamp of the latest docs load. Used to control indexing and info on developer docs.")
+    docsgit = models.CharField(max_length=40, null=False, blank=True, help_text="The git hash of the loaded docs, for devel version")
     firstreldate = models.DateField(null=False, blank=False, help_text="The date of the .0 release in this tree")
     eoldate = models.DateField(null=False, blank=False, help_text="The final release date for this tree")
 
index 436e2357d4093666625d282336e2f5c0aa37d8e8..573be6a791dfa44ed3bb9ae0222873e834f09315 100644 (file)
@@ -30,11 +30,14 @@ def _versioned_404(msg, version):
 @content_sources('style', "'unsafe-inline'")
 def docpage(request, version, filename):
     loaddate = None
+    loadgit = None
     if version == 'current':
         ver = Version.objects.filter(current=True)[0].tree
     elif version == 'devel':
         ver = Decimal(0)
-        loaddate = Version.objects.get(tree=Decimal(0)).docsloaded
+        verobj = Version.objects.get(tree=Decimal(0))
+        loaddate = verobj.docsloaded
+        loadgit = verobj.docsgit
     else:
         ver = Decimal(version)
         if ver == Decimal(0):
@@ -155,6 +158,7 @@ def docpage(request, version, filename):
         'title': page.title,
         'doc_index_filename': indexname,
         'loaddate': loaddate,
+        'loadgit': loadgit,
         'og': {
             'url': '/docs/{}/{}'.format(page.display_version(), page.file),
             'time': page.version.docsloaded,
index d2c9341d4a9588e3b1d54eef3a93e1ab8110d9c1..a99caef71c9f6fd01d0e6420b9c0afbc228564f5 100644 (file)
@@ -80,7 +80,7 @@
               <div class="row">
                 <div class="col">
                   <div>
-                    <a href="/docs/" title="Documentation">Documentation</a> &rarr; <a href="/docs/{{page.display_version}}/{{doc_index_filename}}">PostgreSQL {{page.display_version}}</a>{%if loaddate%} ({{loaddate|date:"Y-m-d H:i:s"}}){%endif%}
+                    <a href="/docs/" title="Documentation">Documentation</a> &rarr; <a href="/docs/{{page.display_version}}/{{doc_index_filename}}">PostgreSQL {{page.display_version}}</a>{%if loaddate%} ({{loaddate|date:"Y-m-d H:i:s"}}{%if loadgit%} - git commit <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h={{loadgit}}">{{loadgit}}</a>{%endif%}){%endif%}
                   </div>
                 </div>
               </div>
index 1807e214c8d5bdacb29c6d06545c81ea15c47742..4eff98581703116ae49c2af9c9e2dce009a1ee0c 100755 (executable)
@@ -104,6 +104,8 @@ parser.add_option("-q", "--quiet", action="store_true", dest="quiet",
                   help="Run quietly (no output at all)")
 parser.add_option("-v", "--verbose", action="store_true", dest="verbose",
                   help="Run verbosely")
+parser.add_option("-g", "--git", type=str,
+                  help="Specify git hash used to load")
 (options, args) = parser.parse_args()
 
 if len(args) != 2:
@@ -233,7 +235,15 @@ if not quiet:
 
 if numchanges > 0:
     # Update the docs loaded timestamp
-    curs.execute("UPDATE core_version SET docsloaded=CURRENT_TIMESTAMP WHERE tree=%(v)s", {'v': ver})
+    if ver == "0" and options.git:
+        githash = options.git
+    else:
+        githash = ''
+
+    curs.execute("UPDATE core_version SET docsloaded=CURRENT_TIMESTAMP, docsgit=%(git)s WHERE tree=%(v)s", {
+        'v': ver,
+        'git': githash,
+    })
 
     # Issue varnish purge for all docs of this version
     if ver == "0":