Så blockerade jag Co-Authored-By en gång för alla


Categories: utveckling

I dag gjorde jag en liten men viktig städning i repo:t, och passade på att säkra min commit-process framåt.

En viktig bakgrund var att jag redan hade försökt styra detta via AGENTS.md, med tydliga regler som:

  • commit-meddelanden och PR-beskrivningar får aldrig innehålla referenser till WARP
  • Co-Authored-By-trailers är uttryckligen förbjudna
  • Co-Authored-By: Oz <oz-agent@warp.dev> får aldrig läggas till

Trots det hände det ändå att agenten försökte lägga till Co-Authored-By vid commit. Därför gick jag över till teknisk enforcement via Git-hooks.

Vad vi gjorde

  1. Löste Co-Authored-By-problemet permanent (lokalt repo)
    Jag skapade en commit-msg-hook i .git/hooks/commit-msg som avbryter commits om commit-meddelandet innehåller Co-Authored-By:.

    Hookens innehåll:

    #!/bin/sh
    
    MSG_FILE="$1"
    
    if [ -z "$MSG_FILE" ] || [ ! -f "$MSG_FILE" ]; then
      echo "commit-msg hook error: commit message file not found." >&2
      exit 1
    fi
    
    if grep -Eiq '^[[:space:]]*Co-Authored-By:' "$MSG_FILE"; then
      echo "Commit rejected: 'Co-Authored-By:' trailers are forbidden." >&2
      exit 1
    fi
    
    exit 0
  2. Rullade ut samma skydd för alla repos under ~/Projects
    För att slippa göra detta repo för repo satte jag upp en global, katalog-scope:ad lösning:

    • Shared hooks-mapp: ~/.config/git/hooks-projects/
    • Samma commit-msg-hook där
    • En include-fil: ~/.gitconfig-projects-hooks med core.hooksPath
    • Global includeIf för ~/Projects/ så alla repos där automatiskt använder hooken

Resultat

Nu blockeras Co-Authored-By: automatiskt i commit-meddelanden för alla mina projekt under ~/Projects.
Det gör processen både säkrare och mindre beroende av manuella påminnelser.

Bonus

Det här är ett bra exempel på en liten investering som sparar tid framåt:
en gångs-konfiguration i Git > upprepade manuella korrigeringar.


Om du uppskattade denna guide får du gärna skänka ett bidrag på Buy Me A Coffee.

Buy Me A Coffee