Ricerca tra la vecchia roba

Sottocomandi custom di git

Posted: Novembre 3rd, 2009 | Author: | Filed under: Bash, Hack, Programmazione | Commenti disabilitati su Sottocomandi custom di git

Da un bel po’ di tempo ormai ho scritto la mia guida git (che peraltro è il mio post più letto) e il tool in questione ormai è andato oltre l’umana comprensione in usabilità e utilità (tranquilli non vengo pagato per questa pubblicità); adesso che sono disoccupato ho un po’ di tempo da dedicare a quello che ho appreso durante quest’anno di lavoro "professionale".

Git come strumento è proprio una toolbox, cioè un insieme di sottocomandi che permettono di eseguire funzioni appropriate su un repository di codice sorgente (e non); come toolbox non potrebbe essere completo se non permettesse di definire comandi custom e non mettesse a disposizione una "libreria" per facilitare le funzioni comuni. Tranquilli, non si parla di linkare codice in C (anche se ha il suo fascino of course) ma di scrivere un semplice (in questo caso di esempio) script per perlustrare le possibilità messe a disposizione.

Partiamo creando un repository di test nella directory temporanea

$ cd /tmp/
$ mkdir testing
$ cd testing
$ git init
Initialized empty Git repository in /tmp/testing/.git/

e di seguito create un file chiamato git-packz

$ cat > git-packz
#!/bin/bash

USAGE="$0 <message>
script di test per sottocomando git
"

PATH=$(git –exec-path):$PATH
. git-sh-setup

if [ $# -lt 1 ]
then
    usage
fi

echo "message: "$1

Adesso dentro questo repository è possibile chiamare il comando eseguendo

$ PATH=.:$PATH git packz miao
message: miao

Questo era solo un esempio, quando avrete scritto uno script che considerate definitivo spostatelo (linkatelo) in una directory puntata dal vostro PATH così da poterlo chiamare tramite un semplice git <nome script da cui si elimina il prefisso "git-">; come potete vedere lo script di esempio è molto semplice e l’unica parte fondamentale è quella in cui viene caricata in memoria dalla shell il contenuto di git-sh-setup. Questo non è altro che uno script che definisce alcune funzioni general purpose proprie di un repository git, cioè

  • die
  • usage
  • set_reflog_action
  • git_editor
  • is_bare_repository
  • cd_to_toplevel
  • require_work_tree
  • get_author_ident_from_commit

Per sapere cosa servono leggetevi la pagina di manuale.


Comments are closed.