Ghid Operator: Folosirea Git Worktrees

Salut! Ești pe cale să înveți cum să folosești skill-ul using-git-worktrees din sistemul Wednesday. Pe scurt, e vorba de a-ți crea un spațiu de lucru curat și izolat, ca să nu-ți bați capul cu conflicte sau cu munca neterminată de pe ramura principală.

Ce face

Acest skill te ajută să te asiguri că lucrezi într-un spațiu izolat, departe de ramura ta principală sau de alte feature-uri la care lucrezi. Ideea e simplă: vrei să începi un feature nou sau să execuți un plan de implementare, dar nu vrei să-ți murdărești directorul de lucru curent. Skill-ul using-git-worktrees verifică dacă ai deja un astfel de spațiu și, dacă nu, îl creează pentru tine, fie prin unelte native ale platformei, fie prin fallback la git worktree.

Principiul de bază e: detectează izolarea existentă, apoi folosește unelte native, apoi apelează la git. Nu te lupta niciodată cu sistemul!

Când îmi folosește

Îți vine în ajutor ori de câte ori începi o nouă bucată de lucru (un feature, un bugfix) care necesită izolare față de spațiul tău de lucru curent. E perfect și înainte de a executa planuri de implementare complexe. Practic, ori de câte ori vrei să te asiguri că munca ta nouă nu interferează cu nimic altceva și că ai un mediu curat, fără git stash-uri complicate sau commit-uri temporare. Protejează ramura ta curentă de modificări nedorite și îți permite să schimbi contextul rapid.

Cum îl invoc / declanșez

Acest skill este declanșat de sistemul Wednesday atunci când contextul de lucru o cere. Ca operator, rolul tău este să anunți intenția și să oferi consimțământul, dacă este necesar.

La începutul unei operațiuni care necesită acest skill, vei anunța: “I’m using the using-git-worktrees skill to set up an isolated workspace.” (Folosesc skill-ul using-git-worktrees pentru a configura un spațiu de lucru izolat.)

Dacă sistemul nu are deja o preferință declarată pentru tine, te va întreba: “Would you like me to set up an isolated worktree? It protects your current branch from changes.” (Dorești să configurez un worktree izolat? Îți protejează ramura curentă de modificări.)

Dacă accepți, sistemul va continua. Dacă refuzi, sistemul va lucra în directorul curent și va sări peste crearea unui worktree.

Exemplu practic

Să zicem că vrei să începi un feature nou. Sistemul Wednesday va începe prin a verifica dacă ești deja într-un worktree izolat. Va rula ceva de genul:

GIT_DIR=$(cd "$(git rev-parse --git-dir)" 2>/dev/null && pwd -P)
GIT_COMMON=$(cd "$(git rev-parse --git-common-dir)" 2>/dev/null && pwd -P)
BRANCH=$(git branch --show-current)

Apoi, va verifica dacă nu ești într-un submodule (care ar putea da rezultate similare):

git rev-parse --show-superproject-working-tree 2>/dev/null
  • Dacă GIT_DIR != GIT_COMMON (și nu ești într-un submodule): Ești deja într-un worktree. Sistemul va raporta: “Already in isolated workspace at <cale> on branch <nume_ramura>.” sau “Already in isolated workspace at <cale> (detached HEAD, externally managed). Branch creation needed at finish time.” și va trece la configurarea proiectului.

  • Dacă GIT_DIR == GIT_COMMON (sau ești într-un submodule): Ești într-un repo normal. Sistemul te va întreba (dacă nu ai o preferință setată): “Dorești să configurez un worktree izolat? Îți protejează ramura curentă de modificări.”

    • Dacă accepți: Sistemul va încerca să folosească unelte native (dacă există) pentru a crea worktree-ul. Acestea se ocupă automat de crearea directorului, a ram