# Git hook – Jira automatikus frissítés ## Mi ez és mire jó? Amikor fejlesztés közben `git pull` parancsot futtatunk, a beérkező commitok üzenetéből automatikusan kiszedi a Jira ticket azonosítókat, és kilistázza őket a konzolon. A commit üzenetek formátuma: ``` BBUSAPPBE-496 Modulok összeszinkronizálása - Staging környezetben ``` --- ## Hogyan működik? A Git **hook** egy script, amely automatikusan lefut egy Git művelet előtt vagy után. Ebben az esetben a `post-merge` hookot használjuk, amely **minden `git pull` után** lefut. A script három lépésben dolgozik: 1. **Lekéri az új commitok üzeneteit** – csak azokat, amelyek a pull során érkeztek be 2. **Kiszedi a Jira ticket ID-kat** – nagybetűk + kötőjel + szám formátum alapján (pl. `BBUSAPPBE-496`) 3. **Kiírja a konzolra** az érintett ticketeket --- ## A script ```bash #!/bin/bash TICKETS=$(git log ORIG_HEAD..HEAD --pretty="%s" | grep -oE '[A-Z]+-[0-9]+' | sort -u) if [ -z "$TICKETS" ]; then echo "Nem találtam Jira ticket ID-t a commitokban." else echo "Érintett Jira ticketek:" for TICKET in $TICKETS; do echo " - $TICKET" done fi ``` ### A parancsok magyarázata | Parancs | Mit csinál | |---|---| | `git log ORIG_HEAD..HEAD` | A pull által behozott új commitokat listázza | | `--pretty="%s"` | Csak a commit üzenetét adja vissza | | `grep -oE '[A-Z]+-[0-9]+'` | Megkeresi a Jira ticket formátumú szövegeket | | `sort -u` | Rendezi és eltávolítja a duplikátumokat | --- ## Beállítás lépései ### 1. Lépj be a git repóba ```bash cd mezeik_teszt ``` ### 2. Hozd létre a `.githooks` mappát ```bash mkdir -p .githooks ``` ### 3. Hozd létre a hook fájlt ```bash nano .githooks/post-merge ``` Illeszd be a fenti scriptet, majd mentés: `Ctrl+O`, kilépés: `Ctrl+X` ### 4. Tedd futtathatóvá ```bash chmod +x .githooks/post-merge ``` ### 5. Állítsd be a Git hookpath-t ```bash git config core.hooksPath .githooks ``` ### 6. Ellenőrzés ```bash git config core.hooksPath # → .githooks ls -l .githooks/ # → post-merge látható ``` --- ## Tesztelés ```bash # Teszt commit létrehozása git commit --allow-empty -m "BBUSAPPBE-506 teszt commit" # Pull futtatása (hook automatikusan lefut) git pull ``` Várt eredmény a konzolon: ``` Érintett Jira ticketek: - BBUSAPPBE-506 ``` --- ## Fontos tudnivalók - A `.githooks` mappa **nem szinkronizálódik** automatikusan a remote repóval – minden fejlesztőnek egyenként kell beállítania - Ha a `.githooks` mappát a repóba szeretnéd verziókövetni (hogy a csapat könnyen átvehesse), add hozzá a commithoz: ```bash git add .githooks/ git commit -m "Git hookok hozzáadása" ``` Ezután minden fejlesztő csak ennyit futtat a klónozás után: ```bash git config core.hooksPath .githooks ``` --- ## Következő lépés (opcionális) A script bővíthető úgy, hogy ne csak kiírja a ticketeket, hanem automatikusan **frissítse is a Jirát** – például átmozgassa a ticketeket a „Kiadásra" oszlopba, vagy beállítsa a Fix Version mezőt. Ehhez Jira API token szükséges.