Como esse alias git funciona?

6

Normalmente, os aliases do git são limitados a um único comando:

git config --global alias.ci commit

Então, em vez de git commit , você pode fazer git ci

Mas parece que você pode inserir uma função lá também:

git config --global alias.up-sub '!f() { cd $1 && git checkout master && git pull && git submodule update --init --recursive; }; f'

Isso permite que você chame git up-sub some-submodule

A questão é: como funciona? Eu não vi a sintaxe !f() em nenhum outro contexto.

    
por scribu 05.09.2012 / 23:02

1 resposta

8

Parece uma definição e invocação de função de shell regular. Apenas o estrondo se destaca, mas uma pesquisa rápida no manual git-config(1) mostra uma explicação:

If the alias expansion is prefixed with an exclamation point, it will be treated as a shell command. For example, defining "alias.new = !gitk --all --not ORIG_HEAD", the invocation "git new" is equivalent to running the shell command "gitk --all --not ORIG_HEAD". Note that shell commands will be executed from the top-level directory of a repository, which may not necessarily be the current directory.

Sem o estrondo, seria alias um subcomando git .

    
por 05.09.2012 / 23:08

Tags