Lier un Issue GitHub + Ticket Linear sur une PR
Ajoute un bloc #### Issues de style Sentry à la description d'une PR, référençant à la fois l'issue GitHub et le ticket Linear extrait du commentaire linear-linkback de l'issue.
Inputs
<issue-url>— URL GitHub issue commehttps://github.com/<owner>/<repo>/issues/<n>. Le numéro d'issue seul suffit si la PR est dans le même repo.- (optionnel)
<pr-number>— par défaut la PR ouverte pour la branche actuelle.
Steps
-
Résoudre le numéro de PR — passer si l'utilisateur en a fourni un :
gh pr view --json number,body -q '.number'Si aucune PR n'existe sur la branche, arrêter et informer l'utilisateur.
-
Extraire le numéro d'issue + repo de l'URL d'entrée, ou accepter un
#1234nu pour le repo actuel. -
Récupérer le ticket Linear depuis le commentaire linear-linkback de l'issue :
gh issue view <n> --repo <owner>/<repo> --json comments \ -q '.comments[] | select(.author.login=="linear-code") | .body' \ | grep -Eioe '[a-z]+-[0-9]+' | head -1Si aucune correspondance, demander la clé Linear à l'utilisateur, ou l'omettre.
-
Lire le corps de PR existant pour pouvoir l'ajouter plutôt que de le réécrire :
gh pr view <pr-number> --json body -q '.body' -
Construire le nouveau corps. Si le corps est vide, utiliser uniquement le bloc
#### Issues. Sinon, l'ajouter après une ligne vide. Ne pas dupliquer — si#### Issuesest déjà présent, remplacer cette section au lieu d'en ajouter une deuxième.Format :
#### Issues * Resolves: #<n> * Resolves: <linear-key> -
Mettre à jour la PR avec un heredoc pour préserver les sauts de ligne :
gh pr edit <pr-number> --body "$(cat <<'EOF' <new body> EOF )" -
Confirmer en affichant l'URL de la PR résultante :
gh pr view <pr-number> --json url -q '.url'
Notes
- Les commentaires de linkback Linear sont postés par l'utilisateur GitHub
linear-code. Le corps contient un lien markdown dont le texte est la clé Linear, par ex.PY-2357. - Les clés de projet varient par repo (
PY-…pour sentry-python,JS-…pour sentry-javascript, etc.) — la regex[a-z]+-[0-9]+les couvre tous. - Ne pas supprimer le contenu PR existant. Toujours lire d'abord, ajouter/remplacer ensuite.
- Si l'issue n'a pas encore de linkback Linear (nouvellement créée), procéder avec uniquement la référence GitHub issue et informer l'utilisateur que la clé Linear est manquante.