#!/usr/bin/env python3 import os import subprocess from pathlib import Path GIT_ROOT = Path(os.environ.get("GIT_ROOT_DIR") or "/srv/git/") def update_time(repo: Path) -> str: cmd = ["git", "for-each-ref", "--sort=-authordate", "--count=1", "--format='%(authordate:iso8601)'" ] proc = subprocess.run(cmd, cwd=repo, stdout=subprocess.PIPE) time = proc.stdout.decode().strip() with open(repo / "info" / "web" / "last-modified", "w") as f: f.write(time) return time def run_on_all_repos(root: Path): for element in os.listdir(root): full_path = root / element if element.startswith("."): pass # ignore hidden files elif element.endswith(".git"): time = update_time(full_path) print(f"last update for '{element.replace('.git','')}': {time}") elif os.path.isdir(root / element): run_on_all_repos(root / element) if __name__ == "__main__": run_on_all_repos(GIT_ROOT)