X-Git-Url: http://git.plutz.net/?p=busy;a=blobdiff_plain;f=pages%2FSubversion.sh;fp=pages%2FSubversion.sh;h=1e506a8ae1b5d4dd3858c2f2d61ff01cfa623b0c;hp=c771ee07a9c23c4863c44e8cf1728036d7572db0;hb=233efbaf5a599d99851e43f16651ddb037d6f0e5;hpb=35a0a997d4cef1b4784079a9e3ca85f9ba24d397
diff --git a/pages/Subversion.sh b/pages/Subversion.sh
index c771ee0..1e506a8 100755
--- a/pages/Subversion.sh
+++ b/pages/Subversion.sh
@@ -17,7 +17,7 @@
# 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}')"
+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}')"
baseuri=$(sed -rn 's:^svnRepo=(.*)$:\1:p' project.meta)
@@ -25,12 +25,13 @@ 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 +47,19 @@ svn_changelog(){
}
svn_showurl(){
- if (egrep -q '^(.*/|)$' <<<"$url"); then
+ if [ -z "$url" -o "${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"