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