Você pode usar ".git / hooks" para instalar um gancho "pré-commit", talvez: link
Normalmente é assim que você faria isso. É claro que ajudaria se você explicasse exatamente o que você quer que a "sobrecarga" faça.
Sempre que o usuário digita git commit -a ,
eu quero executá-lo no meu próprio script,
Em seguida, execute o comando original git commit.. e execute-o como normalmente faria.
Você pode usar ".git / hooks" para instalar um gancho "pré-commit", talvez: link
Normalmente é assim que você faria isso. É claro que ajudaria se você explicasse exatamente o que você quer que a "sobrecarga" faça.
Se você quer que o seu "gancho" não esteja limitado a apenas git , mas você precisa fazê-lo funcionar com qualquer executável, você pode usar alias
alias git='myhackyscript.sh'
então myhackyscript.sh pode parecer
#!/bin/bash
# save params
params=("$@")
# do what i want to do
do_something
# launch git
git "${params[@]}"
myhackyscript.sh deve ser armazenado em uma pasta $PATH como /usr/bin/
Você pode definir uma função de shell que invoca um script personalizado que passa as coisas para o comando git original:
git() {
case $1 in
commit)
echo "WUFF"
;;
esac
\git "$@"
}
Colocar esta função em um dos arquivos RC do seu shell (por exemplo, ~/.profile ou /etc/profile no caso de sh sh / bash / ksh) tornará isso disponível após o próximo login. Claro, você pode obter muito mais elaboare do que isso. Além disso, você pode dar uma olhada no git-sh-setup(1) e git-rev-parse(1) , em particular a seção sobre parseopt .
Se você criar um script ls em um local como ~/bin , que está localizado no path before /bin/ls , seu script será executado.
user@wopr /home/user/bin/: $ cat ls
#!/bin/bash
echo "Security Breached!"
# Run original command
/bin/ls "$@"
Agora, ao listar arquivos, a mensagem Security Breached! é sempre exibida.
user@wopr /home/user/bin/: $ ls
Security Breached!
ls file.sh file myscript.sh
user@wopr /home/user/bin/: $ which ls
/home/user/bin/ls
Você deve estar ciente dos diretórios no seu path e quem pode gravar nesses diretórios.
Tags command-line windows git linux terminal