X-Git-Url: http://git.plutz.net/?p=busy;a=blobdiff_plain;f=pages%2FSubversion.sh;h=6f93ff2956737870bf0c440e697ac0569c00f9cb;hp=c771ee07a9c23c4863c44e8cf1728036d7572db0;hb=HEAD;hpb=9158a331ff59327f9ce34945fe0275a56cad36b3 diff --git a/pages/Subversion.sh b/pages/Subversion.sh index c771ee0..6f93ff2 100755 --- a/pages/Subversion.sh +++ b/pages/Subversion.sh @@ -17,20 +17,22 @@ # You should have received a copy of the GNU Affero General Public License # along with Busy. If not, see . -url="$(echo "$_GET[\"i\"]" |sed -rn '1{s:\t: :g;s:\r::g;s:\\:\\\\:g;p}')" -rev="$(echo "$_GET[\"r\"]" |sed -rn '1{/^[0-9]+$/p}')" +url="$(echo "${_GET[i]}" |sed -rn '1{s:\t: :g;s:\r::g;s:\\:\\\\:g;s:/+:/:g;p}')" +rev="$(echo "${_GET[r]}" |sed -rn '1{/^[0-9]+$/p}')" +url="${url:-/}" baseuri=$(sed -rn 's:^svnRepo=(.*)$:\1:p' project.meta) lastrev=$(svn info "$baseuri" |sed -rn 's;^Revision: *([0-9]+);\1;p') [ -z "$rev" ] && rev="$lastrev" svn_path(){ - tmp="$url" - until [ -z "$tmp" -o "$tmp" = '//' -o "$tmp" = './' ]; do - echo "/$(basename "$tmp") " - tmp="$(dirname "$tmp")/" + tmp="${url%/*}" + until [ "$tmp" = "${tmp#/}" ]; do + echo "${tmp##*/}/ " + tmp="${tmp%/*}" done \ | tac + echo "${url##*/}" } svn_revisions(){ @@ -46,21 +48,19 @@ svn_changelog(){ } svn_showurl(){ - if (egrep -q '^(.*/|)$' <<<"$url"); then + if [ "${url%/}" != "$url" ]; then # we are showing a directory svn propget svn:externals -r "$rev" "${baseuri}/${url}" \ | sed -rn "s;^([^ ]+) (.+)$;\2/ [external include from \1]
;p" svn ls -r "$rev" "${baseuri}/${url}" \ - | sed -r "s:^.*$:&
:g" + | sed -r "s:^.*$:&
:g" else # we are showing a file - echo -E "$url" |egrep -vq '\.' && \ + if [ "$url" = "${url#*.}" ] && \ lang=txt \ - || lang=$( - source-highlight --lang-list \ - | grep -o "^${url##*.} " || echo sh - ) + || lang="$(source-highlight --lang-list |grep -o "^${url##*.} ")" + lang="${lang:-sh}" lang="${lang% }" svn cat -r "$rev" "${baseuri}/${url}" \ | source-highlight -s "$lang"