'gcd' : Git-Aware 'cd' Relative to Repository Root with Auto-Completion
The following will enable you to have a Git-aware "cd" command with directory path expansion/auto-completion relative to the repository root. You will have to source it into your "~/.bashrc" file, after which invoking "gcd" from the shell will allow you specify directory paths relative to the root of your Git repository no matter where you are within the working tree.
gcd() { if [[ $(which git 2> /dev/null) ]] then STATUS=$(git status 2>/dev/null) if [[ -z $STATUS ]] then return fi TARGET="./$(git rev-parse --show-cdup)$1" #echo $TARGET cd $TARGET fi } _gcd() { if [[ $(which git 2> /dev/null) ]] then STATUS=$(git status 2>/dev/null) if [[ -z $STATUS ]] then return fi TARGET="./$(git rev-parse --show-cdup)" if [[ -d $TARGET ]] then TARGET="$TARGET/" fi COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}$2" dirnames=$(cd $TARGET; compgen -o dirnames $2) opts=$(for i in $dirnames; do if [[ $i != ".git" ]]; then echo $i/; fi; done) if [[ ${cur} == * ]] ; then COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 fi fi } complete -o nospace -F _gcd gcd
feed
Comments
0 comments postedPost new comment