tipos tag remove practices etiquetas crear best git

tag - Extendiendo la funcionalidad de Git



git tag best practices (3)

Ejemplos de la vida real

Mirando alrededor, hay muchos proyectos que extienden la línea de comandos de Git:

  • git-wtf (escrito en Ruby) usa brew o instalación manual para poner un ejecutable en /usr/bin (o fue /usr/local ?). Y parece que Git tiene un mecanismo que sabe que cuando escribes git wtf en realidad está buscando cualquier script en PATH llamado git-wtf .
  • git-annex (escrito en haskell) tiene un sabor más complejo. Pero incluso si usa Cabal para su instalación (y tiene una larga lista de dependencias si no la tiene), parece que usa el mismo principio básico que git-wtf. (Git lo encontrará en la ruta ejecutable mientras escribe el git annex )
  • git-flow (escrito en shell) usa brew / macport / apt-get / wget + bash para instalarse. Y, una vez más, parece utilizar el mismo mecanismo.

Solución (?)

Por lo tanto, es ciertamente posible escribir su propio script personalizado y luego ponerlo a disposición colocándolo en cualquiera de las rutas enumeradas en su variable PATH.

Pero por lo que sé, hay algunas deficiencias ...

Problemas conocidos

La documentación

Realmente no estás extendiendo Git, por lo que algunos comandos no funcionan:

$ git help wtf No manual entry for git-wtf $ git wtf --help No manual entry for git-wtf $ git wtf -h # the only command which works... Usage: git wtf [branch+] [options] ...

No lo probé en git-annex por lo que pueden haber solucionado este problema, pero git-flow y git-wtf siguen este comportamiento.

EDITAR : git help a las páginas de manual, por lo que este punto no está relacionado (Thx Eric).

El proceso de instalación

Instalación por Brew, macports y apt-get son increíbles. Pero no hay una forma aceptada a nivel mundial de agregar funciones a Git. Más específicamente, no tiene una plataforma independiente para instalar sus "complementos". Tal vez make haría el truco, pero incluso entonces tendría que escribir usted mismo un script de instalación.

Me preguntaba si había una manera fácil de extender los comandos de Git.

Así que podría crear comandos como:

git my-custom-made-extension --my-options <my-other-arguments>

En un mundo perfecto, podría hacerlo en cualquier idioma que me plazca y podría agregar mis extensiones personalizadas a cualquier entorno de desarrollo con bastante facilidad.

Digamos, ¿algo así como el soporte de plugins en Vim?


Como puede ver en el código fuente en execv_dashed_external , si execv_dashed_external el comando git-my-custom-made-extension , entonces git alias:

  • git my-custom-made-extension ...git-my-custom-made-extension ...
  • git help my-custom-made-extensionman git-my-custom-made-extension

No hay nada especial en "extender git". Simplemente cree un programa como lo haría normalmente, y asegúrese de que el nombre comience con git- .


Probablemente desee crear un alias, ya sea manualmente o con git config . La página de manual cubre esto en detalle. Un ejemplo realmente básico sería algo como:

git config --global alias.log1 "log --oneline"