¿Una forma de insertar un texto predefinido en la ventana de mensaje de confirmación de Magit?


8

Tenemos la convención de que cada mensaje de confirmación comienza con un número de problema.

Me gustaría poder insertar mediante programación la parte del número de problema (calculada por una función separada) en la ventana de confirmación de Magit, cuando se abre por primera vez (es decir, al presionar C C).

¿Cómo lo hago mejor? Donde mirar

ACTUALIZACIÓN: Esto es lo que estoy usando actualmente.

(defun my-extract-branch-tag (branch-name)
  (let ((TICKET-PATTERN "\\(?:[[:alpha:]]+-\\)?\\([[:alpha:]]+-[[:digit:]]+\\)-.*"))
    (when (string-match-p TICKET-PATTERN branch-name)
       (s-upcase (replace-regexp-in-string TICKET-PATTERN "[\\1] " branch-name)))))

(defun my-git-commit-insert-branch ()
  (insert (my-extract-branch-tag (magit-get-current-branch))))

(add-hook 'git-commit-setup-hook 'my-git-commit-insert-branch)

Para un nombre de sucursal como <username>-foo-123-<explanatory part>se produce [FOO-123]en la primera línea del mensaje de confirmación, para permitir un enlace automático de tickets fácil en Jira.


Respuestas:


9

Hay una git-commit-setup-hookque puede usarse para preparar el búfer de mensajes de confirmación. Aquí viene un breve ejemplo:

(defun my-git-commit-setup ()
  (insert "#123 "))

(add-hook 'git-commit-setup-hook 'my-git-commit-setup)

2

Así que contento de que esta respuesta es viejo, pero muy útiles por @wasamasa:

En un modelo de ramificación basado en gitflow, ramas (características) creadas por Bitbucket basadas en problemas de Jira (que siempre tienen el formato UPPERCASEALPHA-DIGITS), lo uso para insertar automáticamente el número de problema actual:

(let ((ISSUEKEY "[[:upper:]]+-[[:digit:]]+"))
 (when (string-match-p ISSUEKEY (magit-get-current-branch))
  (insert
   (replace-regexp-in-string
    (concat ".*?\\(" ISSUEKEY "\\).*")
    "- \\1: "
    (magit-get-current-branch)))))

2

Para mantener las cosas realmente simples, puede invocar magit-commitcon argumentos git equivalentes para lograr lo mismo:

(magit-commit `("--edit" ,(format "--message=%d: " 1234)))

Agregar ese comando como una acción a la ventana emergente con algo como lo siguiente podría ayudar a optimizar su flujo de trabajo de git:

(defun my/read-issue-id ()
  "Return an issue ID default to the issue ID you are currently working on."
  ;; Or maybe completing-read w/unwrapping logic to extract the ID from a supplied list of issues...
  (read-number
   "Issue ID: "
   ;; Check your org-clock or make some REST request or something and use that as a default:
   42))

(defun my/issue-commit (issue-id)
  "Make a commit with a message starting with ISSUE-ID."
  (interactive (list (my/read-issue-id)))
  (magit-commit (append `("-e" ,(format "--message=%d: " issue-id))
                        (magit-commit-arguments))))

(magit-define-popup-action 'magit-commit-popup ?I "'Issue' commit" #'my/issue-commit)
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.