Guest User

Untitled

a guest
Feb 19th, 2018
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.26 KB | None | 0 0
  1. _bold=$(tput bold)
  2. _normal=$(tput sgr0)
  3.  
  4.  
  5. __vcs_dir() {
  6. local vcs base_dir sub_dir ref
  7. sub_dir() {
  8. local sub_dir
  9. sub_dir=$(stat -f "${PWD}")
  10. sub_dir=${sub_dir#$1}
  11. echo ${sub_dir#/}
  12. }
  13.  
  14. git_dir() {
  15. base_dir=$(git-rev-parse --show-cdup 2>/dev/null) || return 1
  16. if [ -n "$base_dir" ]; then
  17. base_dir=`cd $base_dir; pwd`
  18. else
  19. base_dir=$PWD
  20. fi
  21. sub_dir=$(git-rev-parse --show-prefix)
  22. sub_dir="/${sub_dir%/}"
  23. ref=$(git-symbolic-ref -q HEAD || git-name-rev --name-only HEAD 2>/dev/null)
  24. ref=${ref#refs/heads/}
  25. git_svn_url=$(git-config svn-remote.svn.url 2>/dev/null)
  26. if [ -n "$git_svn_url" ]; then
  27. vcs="git-svn"
  28. alias pull="git-svn fetch"
  29. alias commit="git commit -a"
  30. alias push="commit && git-svn dcommit"
  31. alias revert="git checkout"
  32. else
  33. vcs="git"
  34. alias pull="git pull"
  35. alias commit="git commit -a"
  36. alias push="commit && git push"
  37. alias revert="git checkout"
  38. fi
  39. base_dir="$(basename "${base_dir}")"
  40. }
  41.  
  42. svn_dir() {
  43. [ -d ".svn" ] || return 1
  44. base_dir="."
  45. while [ -d "$base_dir/../.svn" ]; do base_dir="$base_dir/.."; done
  46. base_dir=`cd $base_dir; pwd`
  47. sub_dir="/$(sub_dir "${base_dir}")"
  48. ref=$(svn info "$base_dir" | awk '/^URL/ { sub(".*/","",$0); r=$0 } /^Revision/ { sub("[^0-9]*","",$0); print r":"$0 }')
  49. vcs="svn"
  50. base_dir="$(basename "${base_dir}")"
  51. alias pull="svn up"
  52. alias commit="svn commit"
  53. alias push="svn ci"
  54. alias revert="svn revert"
  55. }
  56.  
  57. cvs_dir() {
  58. [ -d "CVS" ] || return 1
  59. base_dir="."
  60. while [ -d "$base_dir/../CVS" ]; do base_dir="$base_dir/.."; done
  61. base_dir=`cd $base_dir; pwd`
  62. sub_dir="/$(sub_dir "${base_dir}")"
  63. if [ -e "CVS/Tag" ]; then
  64. ref="$(cut -c 2- CVS/Tag)"
  65. else
  66. ref="trunk"
  67. fi
  68. vcs="cvs"
  69. base_dir="$(basename "${base_dir}")"
  70. alias pull="cvs update"
  71. alias commit="cvs commit"
  72. alias push="cvs commit"
  73. alias revert=""
  74. }
  75.  
  76. accurev_dir() {
  77. base_dir=$(accurev info 2> /dev/null | grep ^Depot:) || return 1
  78. base_dir=$(accurev info 2> /dev/null | grep ^Depot: | cut -f 3-)
  79. ref=$(accurev info 2> /dev/null | grep ^Workspace/ref: | cut -f 2-)
  80. top=$(accurev info 2> /dev/null | grep ^Top: | cut -f 3-)
  81. sub_dir="/$(sub_dir "${top}")"
  82. vcs="accurev"
  83. alias pull="accurev update"
  84. alias commit="accurev promote"
  85. alias push="accurev promote"
  86. alias revert=""
  87. }
  88.  
  89. cvs_dir || svn_dir || accurev_dir || git_dir
  90.  
  91. if [ -n "$vcs" ]; then
  92. __vcs_prefix="($vcs)"
  93. __vcs_base_dir="${base_dir/$HOME/~}"
  94. __vcs_ref="[$ref]"
  95. __vcs_sub_dir="${sub_dir}"
  96. alias st="$vcs status"
  97. alias d="$vcs diff"
  98. alias up="pull"
  99. else
  100. unalias st 2> /dev/null
  101. unalias d 2> /dev/null
  102. unalias up 2> /dev/null
  103. unalias pull 2> /dev/null
  104. unalias commit 2> /dev/null
  105. unalias push 2> /dev/null
  106. unalias revert 2> /dev/null
  107.  
  108. __vcs_prefix=''
  109. __vcs_base_dir_temp=`basename "$PWD"`
  110. if [ "$PWD" == "$HOME" ]; then
  111. __vcs_base_dir="~"
  112. else
  113. __vcs_base_dir="`basename "$PWD"`"
  114. fi
  115. __vcs_ref=''
  116. __vcs_sub_dir=''
  117. fi
  118. }
  119.  
  120. PROMPT_COMMAND=__vcs_dir
  121. 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