Revision: 541 http://opencsw.svn.sourceforge.net/opencsw/?rev=541&view=rev Author: skayser Date: 2011-09-21 12:11:59 +0000 (Wed, 21 Sep 2011) Log Message: ----------- mgar: fix vcs metadata lookup, lives at the working copy root
Modified Paths: -------------- gar-wrapper/mgar Modified: gar-wrapper/mgar =================================================================== --- gar-wrapper/mgar 2011-09-19 21:52:02 UTC (rev 540) +++ gar-wrapper/mgar 2011-09-21 12:11:59 UTC (rev 541) @@ -162,22 +162,32 @@ exit 2 } +function get_vcstype { + local __dir=`get_absolute_dirname "$1"` + while :; do + [ -d "${__dir}/.svn" ] && { echo "svn"; return; } + [ -d "${__dir}/.git" ] && { echo "git"; return; } + [ "${__dir}" == "/" ] && return + __dir=`dirname ${__dir}` + done +} + # Makes mgar fail gracefully in case of unexpected svn/git hickups like # the ones introduced with the backwards-incompatible svn 1.7pre3 release. # svn: E155036: Working copy [...] too old (format 10, created by Subversion 1.6 function assert_vcsdir_valid { local __dir="$1" - local __vcstype="" + local __vcstype=`get_vcstype "${__dir}"` local __out="" # Temporarily disable the global set -e to handle exit codes != 0 set +e - [ -d "${__dir}/.svn" ] && __vcstype="svn" - [ -d "${__dir}/.git" ] && __vcstype="git" case ${__vcstype} in svn) __out=`svn status "${__dir}" 2>&1`;; git) __out=`git status "${__dir}" 2>&1`;; - *) __out="Directory neither contains .svn or .git"; /bin/false;; + *) __out="Directory not versioned? No VCS metadata found upwards til /." + /bin/false + ;; esac [ $? -eq 0 ] || die_vcsdir_invalid "${__dir}" "${__out}" set -e This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. _______________________________________________ devel mailing list devel@lists.opencsw.org https://lists.opencsw.org/mailman/listinfo/devel