Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- _bold=$(tput bold)
- _normal=$(tput sgr0)
- __vcs_dir() {
- local vcs base_dir sub_dir ref
- sub_dir() {
- local sub_dir
- sub_dir=$(stat -f "${PWD}")
- sub_dir=${sub_dir#$1}
- echo ${sub_dir#/}
- }
- git_dir() {
- base_dir=$(git-rev-parse --show-cdup 2>/dev/null) || return 1
- if [ -n "$base_dir" ]; then
- base_dir=`cd $base_dir; pwd`
- else
- base_dir=$PWD
- fi
- sub_dir=$(git-rev-parse --show-prefix)
- sub_dir="/${sub_dir%/}"
- ref=$(git-symbolic-ref -q HEAD || git-name-rev --name-only HEAD 2>/dev/null)
- ref=${ref#refs/heads/}
- git_svn_url=$(git-config svn-remote.svn.url 2>/dev/null)
- if [ -n "$git_svn_url" ]; then
- vcs="git-svn"
- alias pull="git-svn fetch"
- alias commit="git commit -a"
- alias push="commit && git-svn dcommit"
- alias revert="git checkout"
- else
- vcs="git"
- alias pull="git pull"
- alias commit="git commit -a"
- alias push="commit && git push"
- alias revert="git checkout"
- fi
- base_dir="$(basename "${base_dir}")"
- }
- svn_dir() {
- [ -d ".svn" ] || return 1
- base_dir="."
- while [ -d "$base_dir/../.svn" ]; do base_dir="$base_dir/.."; done
- base_dir=`cd $base_dir; pwd`
- sub_dir="/$(sub_dir "${base_dir}")"
- ref=$(svn info "$base_dir" | awk '/^URL/ { sub(".*/","",$0); r=$0 } /^Revision/ { sub("[^0-9]*","",$0); print r":"$0 }')
- vcs="svn"
- base_dir="$(basename "${base_dir}")"
- alias pull="svn up"
- alias commit="svn commit"
- alias push="svn ci"
- alias revert="svn revert"
- }
- cvs_dir() {
- [ -d "CVS" ] || return 1
- base_dir="."
- while [ -d "$base_dir/../CVS" ]; do base_dir="$base_dir/.."; done
- base_dir=`cd $base_dir; pwd`
- sub_dir="/$(sub_dir "${base_dir}")"
- if [ -e "CVS/Tag" ]; then
- ref="$(cut -c 2- CVS/Tag)"
- else
- ref="trunk"
- fi
- vcs="cvs"
- base_dir="$(basename "${base_dir}")"
- alias pull="cvs update"
- alias commit="cvs commit"
- alias push="cvs commit"
- alias revert=""
- }
- accurev_dir() {
- base_dir=$(accurev info 2> /dev/null | grep ^Depot:) || return 1
- base_dir=$(accurev info 2> /dev/null | grep ^Depot: | cut -f 3-)
- ref=$(accurev info 2> /dev/null | grep ^Workspace/ref: | cut -f 2-)
- top=$(accurev info 2> /dev/null | grep ^Top: | cut -f 3-)
- sub_dir="/$(sub_dir "${top}")"
- vcs="accurev"
- alias pull="accurev update"
- alias commit="accurev promote"
- alias push="accurev promote"
- alias revert=""
- }
- cvs_dir || svn_dir || accurev_dir || git_dir
- if [ -n "$vcs" ]; then
- __vcs_prefix="($vcs)"
- __vcs_base_dir="${base_dir/$HOME/~}"
- __vcs_ref="[$ref]"
- __vcs_sub_dir="${sub_dir}"
- alias st="$vcs status"
- alias d="$vcs diff"
- alias up="pull"
- else
- unalias st 2> /dev/null
- unalias d 2> /dev/null
- unalias up 2> /dev/null
- unalias pull 2> /dev/null
- unalias commit 2> /dev/null
- unalias push 2> /dev/null
- unalias revert 2> /dev/null
- __vcs_prefix=''
- __vcs_base_dir_temp=`basename "$PWD"`
- if [ "$PWD" == "$HOME" ]; then
- __vcs_base_dir="~"
- else
- __vcs_base_dir="`basename "$PWD"`"
- fi
- __vcs_ref=''
- __vcs_sub_dir=''
- fi
- }
- PROMPT_COMMAND=__vcs_dir
- PS1='\[\033]0;\u@\h:\w\007\]\u:$__vcs_prefix\[${_bold}\]${__vcs_base_dir}\[${_normal}\]${__vcs_ref}\[${_bold}\]${__vcs_sub_dir}\[${_normal}\]\$ '
Add Comment
Please, Sign In to add comment