Commit dbee3dd9 authored by slavaGanzin's avatar slavaGanzin
Browse files

1. autofetch on zle-line-init

2. GIT_AUTO_FETCH_INTERVAL
parent 9f2977f3
# 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: ...@@ -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:
......
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 { ...@@ -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
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment