summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--plugins/git-auto-fetch/README.md22
-rw-r--r--plugins/git-auto-fetch/git-auto-fetch.plugin.zsh12
2 files changed, 33 insertions, 1 deletions
diff --git a/plugins/git-auto-fetch/README.md b/plugins/git-auto-fetch/README.md
new file mode 100644
index 000000000..7f5eac49d
--- /dev/null
+++ b/plugins/git-auto-fetch/README.md
@@ -0,0 +1,22 @@
+# Git auto fetch
+
+Automatically fetches all changes from all remotes every time you cd into yout git-initialized project.
+
+####Usage
+Add ```git-auto-fetch``` to the plugins array in your zshrc file:
+```shell
+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
+
+####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:
+
+```shell
+$ cd to/your/project
+$ git-auto-fetch
+disabled
+$ git-auto-fetch
+enabled
+```
diff --git a/plugins/git-auto-fetch/git-auto-fetch.plugin.zsh b/plugins/git-auto-fetch/git-auto-fetch.plugin.zsh
index cbf6984a0..87535b251 100644
--- a/plugins/git-auto-fetch/git-auto-fetch.plugin.zsh
+++ b/plugins/git-auto-fetch/git-auto-fetch.plugin.zsh
@@ -1,5 +1,15 @@
function git_fetch_on_chpwd {
- ([[ -d .git ]] && git fetch --all &>! ./.git/FETCH_LOG &)
+ ([[ -d .git ]] && [[ ! -f ".git/NO_AUTO_FETCH" ]] && git fetch --all &>! .git/FETCH_LOG &)
+}
+
+function git-auto-fetch {
+ [[ ! -d .git ]] && return
+ if [[ -f ".git/NO_AUTO_FETCH" ]]; then
+ rm ".git/NO_AUTO_FETCH" && echo "disabled"
+ else
+ touch ".git/NO_AUTO_FETCH" && echo "enabled"
+ fi
}
chpwd_functions+=(git_fetch_on_chpwd)
git_fetch_on_chpwd
+unset git_fetch_on_chpwd