Das Blog wird mit dem CMS Hugo betrieben und die Inhalte versioniert auf GitHub abgelegt. Gelegentlich werden auf GitHub auch Dateien abgelegt, die im Blog verlinkt werden sollen. Diese Dateien befinden sich in einem anderen öffentlichen Repository, für das eine Versionierung nicht erforderlich ist.

Um die Anzahl der Commits zu reduzieren, wurde eine Automatisierung mittels Squash Commits implementiert. Dies geschieht durch den Einsatz von GitHub Actions, wodurch alle Änderungen auf einen einzigen Commit zusammengeführt werden. Im Folgenden wird der Prozess beschrieben.

Zunächst ist der Zugriff auf die Repository-Einstellungen erforderlich. Unter dem Abschnitt „Actions" findet sich die Option „Actions Permissions", mit der die Erlaubnis zur Verwendung von Actions von Drittanbietern oder aus dem GitHub Marketplace festgelegt werden kann. Diese Einstellung kann allerdings durch Organisationsrichtlinien oder Sicherheitsvorgaben eingeschränkt sein, um mögliche Sicherheitsrisiken zu minimieren.

Nach erfolgreicher Konfiguration lässt sich die Funktionalität überprüfen, indem die GitHub Action getestet und in das eigene Repository integriert wird.

Nachfolgend ist der Code für die GitHub Action aufgeführt.

name: Squash Commits

on:
  push:
    branches:
      - main

jobs:
  squash_commits:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repository
        uses: actions/checkout@v2

      - name: Configure Git
        run: |
          git config --global user.email "[email protected]"
          git config --global user.name "Your Name"

      - name: Squash all commits
        run: |
          git reset --soft $(git commit-tree HEAD^{tree} -m "Single commit")
          git commit --amend -m "Squashed commit"

      - name: Push changes
        run: |
          git push --force