check in
[Ultimately_Untrue_Thought.git] / provisioning / pelican_scheduler.py
index 8882e56..5fdc607 100755 (executable)
@@ -62,7 +62,21 @@ def schedule(command, when):
 
 def main():
     # sync our "working" repo with the bare one
-    subprocess.run(["git", "pull"], cwd=WORKING_REPO)
+
+    # but first, don't let the fact that this is running as a hook on the bare
+    # repo confuse us
+    our_env = os.environ.copy()
+    del our_env['GIT_DIR']
+
+    for git_cmd in [["git", "fetch", "origin"],
+                    ["git", "reset", "--hard", "origin/master"]]:
+        subprocess.run(git_cmd, cwd=WORKING_REPO, env=our_env)
+
+    # sitegen now! (even if there are no posts to queue, we can at least update
+    # /drafts/) and make any back-edits to published posts live
+    subprocess.run(SITEGEN_COMMAND,
+                   # XXX: `shell=True` is contrary to the moral law
+                   shell=True)
 
     # look for scheduled future posts
     future_publication_times = get_future_publication_times()