diff options
-rw-r--r-- | 01_Functions.zsh | 50 | ||||
-rw-r--r-- | user:hugues/Bindings | 4 | ||||
-rw-r--r-- | user:hugues/KeyBindings.zsh | 4 |
3 files changed, 39 insertions, 19 deletions
diff --git a/01_Functions.zsh b/01_Functions.zsh index f6c99bf..abec907 100644 --- a/01_Functions.zsh +++ b/01_Functions.zsh @@ -22,6 +22,25 @@ cmd_exists () which -p $1 >/dev/null 2>&1 } +git () { + GIT=$(which -p git) + case $1 in + init|clone) + ;; + *) + if [ "$( ( $GIT ls-files ; $GIT ls-tree HEAD . ) 2>&- | head -n1)" = ""\ + -a \( ! -d .git -o "$($GIT rev-parse --git-dir 2>&-)" != ".git" \)\ + -a "$($GIT rev-parse --is-inside-git-dir 2>&-)" != "true" ] + then + echo >&2 "zsh: the current folder is not managed by git" + return + fi + ;; + esac + + $(which -p git) $@ +} + term_title() { # Jobs @@ -112,24 +131,25 @@ get_git_branch () fi fi - [ "$( ( git-ls-files ; git-ls-tree HEAD . ) 2>&- | head -n1)" = "" -a \( ! -d .git -o "$(git-rev-parse --git-dir 2>&-)" != ".git" \) -a "$(git-rev-parse --is-inside-git-dir 2>&-)" != "true" ] && return + # Get git branch only from git managed folders (not ignored subfolders..) + [ "$( ( git ls-files ; git ls-tree HEAD . ) 2>&- | head -n1)" = "" -a \( ! -d .git -o "$(git rev-parse --git-dir 2>&-)" != ".git" \) -a "$(git rev-parse --is-inside-git-dir 2>&-)" != "true" ] && return - GIT_DIR=$(git-rev-parse --git-dir) + GIT_DIR=$(git rev-parse --git-dir) # Get current working GIT branch - my_git_branch="$(git-branch 2>&- | grep -E '^\* ' | cut -c3-)" + my_git_branch="$(git branch 2>&- | grep -E '^\* ' | cut -c3-)" if [ "$my_git_branch" != "" ] then # If not on a working GIT branch, get the named current commit-ish inside parenthesis [ "$my_git_branch" = "(no branch)" ] &&\ checkouted_branch="" && \ - my_git_branch="$(git-name-rev --name-only HEAD 2>&- | sed 's,^tags/,,;s,^remotes/,,;s,\^0$,,')" + my_git_branch="$(git name-rev --name-only HEAD 2>&- | sed 's,^tags/,,;s,^remotes/,,;s,\^0$,,')" # If neither on a named commit-ish, show commit-id if [ "$my_git_branch" = "undefined" ] then - my_git_branch="$(git-rev-parse --verify HEAD 2>&-)" + my_git_branch="$(git rev-parse --verify HEAD 2>&-)" fi else # Initial commit @@ -157,7 +177,7 @@ get_git_branch () if [ "$REBASE_DIR" = "$GIT_DIR/rebase-merge" ] then current=$(< $REBASE_DIR/done wc -l) - last=$(( $current + $(< $REBASE_DIR/git-rebase-todo grep -v "^#\|^[[:blank:]]*$" | wc -l) )) + last=$(( $current + $(< $REBASE_DIR/git rebase-todo grep -v "^#\|^[[:blank:]]*$" | wc -l) )) rebase=$rebase$rebase_in_progress": " else current=$(cat $REBASE_DIR/next) @@ -165,14 +185,14 @@ get_git_branch () fi # Then the result - my_git_branch="[rebase $current/$last: "$(git-name-rev --name-only "$(cat $REBASE_DIR/onto 2>/dev/null)" 2>/dev/null)".."$my_git_branch"]" + my_git_branch="[rebase $current/$last: "$(git name-rev --name-only "$(cat $REBASE_DIR/onto 2>/dev/null)" 2>/dev/null)".."$my_git_branch"]" [ -r $REBASE_DIR/head-name ] && my_git_branch=$my_git_branch" "$(< $REBASE_DIR/head-name sed 's/^refs\///;s/^heads\///') else # No rebase in progress, put '(' ')' if needed [ ! "$checkouted_branch" ] && my_git_branch="($my_git_branch)" fi - if [ "$(git-status 2>&- | grep "new file" | head -n1)" != "" ] ; then + if [ "$(git status 2>&- | grep "new file" | head -n1)" != "" ] ; then # ADDED FILES my_git_branch=$my_git_branch fi @@ -197,19 +217,19 @@ get_git_status () return fi - if [ "$(git-rev-parse --is-inside-git-dir)" = "true" -o "$(git-config --get core.bare)" = "true" ] ; then + if [ "$(git rev-parse --is-inside-git-dir)" = "true" -o "$(git config --get core.bare)" = "true" ] ; then echo "$git_colors[managment_folder]" return fi - if [ "$(git-diff --cached 2>&- | grep '^diff ' | head -n1 )" != "" ] ; then + if [ "$(git diff --cached 2>&- | grep '^diff ' | head -n1 )" != "" ] ; then cached="yes" fi - if [ "$(git-ls-files -m 2>&- | head -n1)" != "" ] ; then + if [ "$(git ls-files -m 2>&- | head -n1)" != "" ] ; then not_up_to_date="yes" fi - GIT_DIR=$(git-rev-parse --git-dir 2>/dev/null) + GIT_DIR=$(git rev-parse --git-dir 2>/dev/null) if [ "$cached" != "" -a "$not_up_to_date" != "" ] ; then my_git_status="$git_colors[cached_and_not_up_to_date]" @@ -217,8 +237,8 @@ get_git_status () my_git_status="$git_colors[cached]" elif [ "$not_up_to_date" != "" ] ; then my_git_status="$git_colors[not_up_to_date]" - elif [ "$(git-cat-file -t HEAD 2>/dev/null)" != "commit" ] ; then - if [ ! -z "$(git-ls-files)" ] ; then + elif [ "$(git cat-file -t HEAD 2>/dev/null)" != "commit" ] ; then + if [ ! -z "$(git ls-files)" ] ; then my_git_status="$git_colors[cached]" else my_git_status="$git_colors[init_in_progress]" @@ -373,7 +393,7 @@ chpwd() if ( cmd_exists git && test -d .git ) then # Shows tracked branches and modified files - git-checkout HEAD 2>&1 | sed 's/^/ /' + git checkout HEAD 2>&1 | sed 's/^/ /' fi } diff --git a/user:hugues/Bindings b/user:hugues/Bindings index 301eb28..e0013c2 100644 --- a/user:hugues/Bindings +++ b/user:hugues/Bindings @@ -167,8 +167,8 @@ bindkey -s 'l' 'Q l\n' bindkey -s ' ' '\\ ' -bindkey -s 'g' 'Q git-status\n' -bindkey -s 'G' 'Q git-repack -d -a\n' +bindkey -s 'g' 'Q git status\n' +bindkey -s 'G' 'Q git repack -d -a\n' bindkey -s 'S' 'Q sudo !!' diff --git a/user:hugues/KeyBindings.zsh b/user:hugues/KeyBindings.zsh index a8bbc3c..82d3e45 100644 --- a/user:hugues/KeyBindings.zsh +++ b/user:hugues/KeyBindings.zsh @@ -216,8 +216,8 @@ do bindkey -M $keymap -s ' ' '\\ ' - bindkey -M $keymap -s 'g' 'Q git-status\n' - bindkey -M $keymap -s 'G' 'Q git-remote -v update\n' + bindkey -M $keymap -s 'g' 'Q git status .\n' + bindkey -M $keymap -s 'G' 'Q git remote -v update\n' bindkey -M $keymap -s 'S' 'Q sudo !!' |