Как я могу перенаправить / перехватить команду "git" и сделать некоторые вещи перед настоящей командой git? - PullRequest
0 голосов
/ 15 декабря 2018

На самом деле я пишу эту функцию, связанную в моем zshrc:

function mgit {
  string='github'
  remote=$(git remote -v)
  if [[ ${remote} == *${string}* ]]; then
    git config --global user.name "name1"
    git config --global user.email "email1@test.com"
  else
    git config --global user.name "name2"
    git config --global user.email "email2@test.de"
  fi
  git "$@"
}

Это прекрасно работает, если я теперь выполняю mgit --version вместо git --version.

Но есть ли способ перехватить настоящую команду git и выполнить эту функцию?
Потому что теперь я не могу использовать свои псевдонимы, например ga для git add . ...
И так ли это тогдавозможно со всеми командами, такими как Docker или что-то еще?

1 Ответ

0 голосов
/ 15 декабря 2018

Да.Просто вызовите вашу функцию git и используйте command git для вызова "реального" git:

git() {
  echo "Do some things"
  command git "$@"
}

Пример:

% git --version
Do some things
git version 2.19.2 
...