+
+ # keep only the last part of gitbranch
+ printf '%s' "${gitbranch#refs/[^/]*/}"
+ return 0
+}
+
+git_getaction(){
+ local gitaction='' gitdir=$1
+ local tmp
+
+ for tmp in "${gitdir}/rebase-apply" \
+ "${gitdir}/rebase" \
+ "${gitdir}/../.dotest" ; do
+ if [[ -d ${tmp} ]] ; then
+ if [[ -f "${tmp}/rebasing" ]] ; then
+ gitaction="rebase"
+ elif [[ -f "${tmp}/applying" ]] ; then
+ gitaction="am"
+ else
+ gitaction="am/rebase"
+ fi
+ printf '%s' ${gitaction}
+ return 0
+ fi
+ done
+
+ for tmp in "${gitdir}/rebase-merge/interactive" \
+ "${gitdir}/.dotest-merge/interactive" ; do
+ if [[ -f "${tmp}" ]] ; then
+ printf '%s' "rebase-i"
+ return 0
+ fi
+ done
+
+ for tmp in "${gitdir}/rebase-merge" \
+ "${gitdir}/.dotest-merge" ; do
+ if [[ -d "${tmp}" ]] ; then
+ printf '%s' "rebase-m"
+ return 0
+ fi
+ done
+
+ if [[ -f "${gitdir}/MERGE_HEAD" ]] ; then
+ printf '%s' "merge"
+ return 0
+ fi
+
+ if [[ -f "${gitdir}/BISECT_LOG" ]] ; then
+ printf '%s' "bisect"
+ return 0
+ fi
+ return 1
+}
+
+git_get_data(){
+ local gitdir gitbase gitbranch gitaction
+
+ gitdir=${vcs_comm[gitdir]}
+ gitbranch="$(git_getbranch ${gitdir})"
+
+ if [[ -z ${gitdir} ]] || [[ -z ${gitbranch} ]] ; then
+ return 1
+ fi
+
+ vcs_adjust
+ gitaction="$(git_getaction ${gitdir})"
+ gitprefix=$(git rev-parse --show-prefix)
+ gitbase=${PWD%/${gitprefix%/}}
+ vcs_formats "${gitaction}" "${gitbranch}" "${gitbase}" ''
+ return 0
+}
+
+hg_get_data(){
+ local hgbranch hgbase file
+
+ hgbase=${vcs_comm[basedir]}
+
+ # Check if hg branch is efficient
+ hgbranch=$(hg branch)
+
+ vcs_formats '' "${hgbranch}" "${hgbase}" ''
+ return 0
+}
+
+svn_get_data(){
+ local svnbase svnbranch
+ local -a svninfo
+
+ svnbase="."
+ while [[ -d "${svnbase}/../.svn" ]]; do
+ svnbase="${svnbase}/.."
+ done
+ svnbase="$(vcs_realpath ${svnbase})"
+ svnrev=$(svn info | awk '{if($1 == "Révision :") print $2}')
+ svnbranch=$(svn info | awk '{if($1 == "URL :") print $2}'|awk -F "/" '{ print $NF }')
+
+ vcs_formats '' "${svnbranch}" "${svnbase}" "${svnrev}"
+ return 0
+}
+
+bzr_get_data(){
+ local bzrbase bzrrev bzrbranch bzrinfo
+
+ bzrbase=$(bzr info|awk '{if ($1 == "branch" && $2 == "root:") print $3}')
+ bzrbase="$(vcs_realpath ${bzrbase})"
+ bzrinfo=$(bzr version-info|awk '{if ($1 == "branch-nick:"||$1 == "revno:") print $2}')
+ bzrrev=$(echo $bzrinfo|awk '{print $1}')
+ bzrbranch=$(echo $bzrinfo|awk '{print $2}')
+
+ vcs_formats '' "${bzrbranch}" "${bzrbase}" "${bzrrev}"
+ return 0
+}
+
+cdv_get_data(){
+ local cdvbase
+
+ cdvbase=${vcs_comm[basedir]}
+ vcs_formats '' "${cdvbase/*\/}" "${cdvbase}" ''
+ return 0