X-Git-Url: http://git.plutz.net/?p=busy;a=blobdiff_plain;f=pages%2FSubversion.sh;h=6f93ff2956737870bf0c440e697ac0569c00f9cb;hp=fa86d8b17140fe7f923cb5fc6d7b359fd17b60e5;hb=HEAD;hpb=f485895094cd72318b46f39689c3ba954eb37411
diff --git a/pages/Subversion.sh b/pages/Subversion.sh
index fa86d8b..6f93ff2 100755
--- a/pages/Subversion.sh
+++ b/pages/Subversion.sh
@@ -17,13 +17,56 @@
# 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 [ "$tmp" = "${tmp#/}" ]; do
+ echo "${tmp##*/}/ "
+ tmp="${tmp%/*}"
+ done \
+ | tac
+ echo "${url##*/}"
+}
+
+svn_revisions(){
+ for i in {1.."$lastrev"}; do
+ echo "$i"
+ done
+}
+
+svn_changelog(){
+ svn log "${baseuri}/${url}" \
+ | sed -rn '2,${s:^-+$::g;
+ s:^r([0-9]+) \| ([a-zA-Z0-9]+) \| ([0-9: -]+) .+$:
Revision \1 by \2
at \3
:g;p}'
+}
+
+svn_showurl(){
+ 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"
+ else
+ # we are showing a file
+ if [ "$url" = "${url#*.}" ] && \
+ lang=txt \
+ || lang="$(source-highlight --lang-list |grep -o "^${url##*.} ")"
+ lang="${lang:-sh}"
+ lang="${lang% }"
+ svn cat -r "$rev" "${baseuri}/${url}" \
+ | source-highlight -s "$lang"
+ fi
+}
+
case "$1" in
title)
echo "Code"