]> git.plutz.net Git - busy/blobdiff - pages/Subversion.sh
improvements in subversion browser
[busy] / pages / Subversion.sh
index c771ee07a9c23c4863c44e8cf1728036d7572db0..1e506a8ae1b5d4dd3858c2f2d61ff01cfa623b0c 100755 (executable)
@@ -17,7 +17,7 @@
 # You should have received a copy of the GNU Affero General Public License
 # along with Busy. If not, see <http://www.gnu.org/licenses/>. 
 
-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 "<a href='?p=Subversion&amp;i=$tmp&amp;r=$rev'>/$(basename "$tmp")</a> "
-    tmp="$(dirname "$tmp")/"
+  tmp="${url%/*}
+  until [ "$tmp" = "${tmp#/}" ]; do
+    echo "<a href='?p=Subversion&amp;i=$tmp/&amp;r=$rev'>${tmp##*/}/</a> "
+    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;^([^ ]+) (.+)$;<span class='extern'>\2/</span> [external include from <a href='\1'>\1</a>]<br>;p"
 
     svn ls -r "$rev" "${baseuri}/${url}" \
-    | sed -r "s:^.*$:<a href='?p=Subversion\&amp;i=$url/&\&amp;r=$rev'>&</a><br>:g"
+    | sed -r "s:^.*$:<a href='?p=Subversion\&amp;i=$url&\&amp;r=$rev'>&</a><br>: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"