Auto generate a static website after a remote push to the server.

#!/bin/bash

DOMAIN=[domain-name]
GIT_REPO=/var/repos/[repo-name].repo.git
WORKING_DIRECTORY=/tmp/$DOMAIN
PUBLIC_WWW=/var/www/$DOMAIN
BACKUP_WWW=/tmp/$DOMAIN-backup

set -e

rm -rf $WORKING_DIRECTORY
rsync -aqz $PUBLIC_WWW/ $BACKUP_WWW
trap "echo 'A problem occurred.  Reverting to backup.'; rsync -aqz --del $BACKUP_WWW/ $PUBLIC_WWW; r
m -rf $WORKING_DIRECTORY" EXIT

git clone $GIT_REPO $WORKING_DIRECTORY
git clone https://github.com/[them] $WORKING_DIRECTORY/themes/beautifulhugo
# The following section should be changed to use rsync so that it nicely updates
# the directory instead of making it blank.
rm -rf $PUBLIC_WWW/*
hugo -s $WORKING_DIRECTORY -d $PUBLIC_WWW -b "http://${DOMAIN}"
rm -rf $WORKING_DIRECTORY
git  post-receive   

How to change your git commit date after the facts

Change lastmod for Hugo when lastmod is based on git commit

stackoverflow - re-write git commit time

git filter-branch -f --env-filter \
    'if [ $GIT_COMMIT = 9fb407b47803c201725fd02c1a7406c93e5cad42 ]
     then
         export GIT_AUTHOR_DATE="Sun May 10 00:00:00 2020 +0900"
         export GIT_COMMITTER_DATE="Sun May 10 01:00:00 2020 +0900"
     fi'

Don’t forget to use –force when pushing upstream.