Кроссплатформенное (OSX / Linux) Bash Solution
Сильно вдохновлен @smooves
ответом: https://stackoverflow.com/a/9229377/622276 и комментариями.
Но я поддерживаю собственную интеграцию gash с приглашением bash
С источником здесь:
https://github.com/neozenith/dotfiles/blob/master/bash-scripts/function_parse_git_prompt.sh
msys
версия в Git Bash для Windows работает идентично версии linux.
Я собираю кроссплатформенные опции в инструкцию case. Таким образом, он будет обрабатывать процесс извлечения для любого git-репо, к которому я перехожу, и которое старше пятнадцати минут с момента последней выборки, поэтому остальная часть моего сценария приглашения знает, есть ли у меня что-то, что можно извлечь.
Git radar привык к этому, но для этого требовалось сохранить файл с отметкой времени, когда была вызвана последняя выборка. Это не пишет временных файлов.
git rev-parse --show-toplevel
просто означает, что если я где-нибудь в git-репо, он получит корень репо, чтобы мы могли ссылаться на путь к папке .git
.
# No repo == no more work
local REPO_ROOT=`git rev-parse --show-toplevel 2> /dev/null`
if [[ -n $REPO_ROOT && -e "$REPO_ROOT/.git/FETCH_HEAD" ]]; then
case $OSTYPE in
darwin*)
local LAST_FETCH="$(stat -f '%m' $REPO_ROOT/.git/FETCH_HEAD)"
local FETCH_THRESHOLD="$(date -v-15m +%s)"
;;
*)
local LAST_FETCH="$(stat -c %Y $REPO_ROOT/.git/FETCH_HEAD)"
local FETCH_THRESHOLD="$(date -d'15 minutes ago' +%s)"
;;
esac
# Fork fetch process in background
if [[ $LAST_FETCH -lt $FETCH_THRESHOLD ]]; then
git fetch --all --quiet --prune 2> /dev/null &
fi
fi