1. autofetch on zle-line-init

2. GIT_AUTO_FETCH_INTERVAL
This commit is contained in:
slavaGanzin 2016-10-26 23:47:51 +03:00
parent 9f2977f3eb
commit dbee3dd9c6
2 changed files with 25 additions and 6 deletions

View File

@ -1,6 +1,6 @@
# Git auto fetch # Git auto fetch
Automatically fetches all changes from all remotes every time you cd into yout git-initialized project. Automatically fetches all changes from all remotes while you are working in git-initialized directory.
####Usage ####Usage
Add ```git-auto-fetch``` to the plugins array in your zshrc file: Add ```git-auto-fetch``` to the plugins array in your zshrc file:
@ -8,7 +8,14 @@ Add ```git-auto-fetch``` to the plugins array in your zshrc file:
plugins=(... git-auto-fetch) plugins=(... git-auto-fetch)
``` ```
Every time you change directory to your git project all remotes will be fetched in background. Log of ```git fetch --all``` will be saved into .git/FETCH_LOG Every time you launch a command in your shell all remotes will be fetched in background.
By default autofetch will be triggered only if last fetch was done at least 60 seconds ago.
You can change fetch interval in your .zshrc:
```
GIT_AUTO_FETCH_INTERVAL=1200 #in seconds
```
Log of ```git fetch --all``` will be saved into .git/FETCH_LOG
####Toggle auto fetch per folder ####Toggle auto fetch per folder
If you are using mobile connection or for any other reason you can disable git-auto-fetch for any folder: If you are using mobile connection or for any other reason you can disable git-auto-fetch for any folder:

View File

@ -1,7 +1,10 @@
function git-fetch-on-chpwd { GIT_AUTO_FETCH_INTERVAL=${GIT_AUTO_FETCH_INTERVAL:=60}
function git-fetch-all {
(`git rev-parse --is-inside-work-tree 2>/dev/null` && (`git rev-parse --is-inside-work-tree 2>/dev/null` &&
dir=`git rev-parse --git-dir` && dir=`git rev-parse --git-dir` &&
[[ ! -f $dir/NO_AUTO_FETCH ]] && [[ ! -f $dir/NO_AUTO_FETCH ]] &&
(( `date +%s` - `date -r $dir/FETCH_LOG +%s` > $GIT_AUTO_FETCH_INTERVAL )) &&
git fetch --all &>! $dir/FETCH_LOG &) git fetch --all &>! $dir/FETCH_LOG &)
} }
@ -15,6 +18,15 @@ function git-auto-fetch {
echo "${fg_bold[red]}disabled${reset_color}") echo "${fg_bold[red]}disabled${reset_color}")
} }
chpwd_functions+=(git-fetch-on-chpwd) eval "original-$(declare -f zle-line-init)"
git-fetch-on-chpwd
unset git-fetch-on-chpwd function zle-line-init () {
git-fetch-all
original-zle-line-init
}
zle -N zle-line-init
# chpwd_functions+=(git-fetch-on-chpwd)
# git-fetch-on-chpwd
unset git-auto-fetch
unset original-zle-line-init