svnsafeup: fold diff blocks, oneline stat, y/n

Minor improvements on the svnsafeup function:
 - use last line of diffstat as header
 - add 2nd level folds to diff sections, folding each file's diff
 - require "y" to continue to `svn up`
This commit is contained in:
Daniel Hahler 2011-03-29 01:55:10 +02:00
commit b9e76ce057

View file

@ -51,7 +51,7 @@ function svnsafeup() {
fi fi
local from=${2:-BASE} to=${1:-HEAD} local from=${2:-BASE} to=${1:-HEAD}
local range="$from:$to" local range="$from:$to"
local marker_o='{{{' marker_c="}}}\n\n" # fold markers local marker_o='{{{' marker_c="}}}\n" # fold markers
local repo_id="$(svn_get_repo_name)@$(svn_get_rev_nr)" local repo_id="$(svn_get_repo_name)@$(svn_get_rev_nr)"
local diffcmd="svn diff -r $range" local diffcmd="svn diff -r $range"
@ -65,19 +65,23 @@ function svnsafeup() {
echo "Diff for: $repo_id, range: $range" echo "Diff for: $repo_id, range: $range"
echo echo
if [ $commands[diffstat] ] ; then if [ $commands[diffstat] ] ; then
echo "$diffcmd | diffstat: $marker_o" diffstat=$(echo $diff | diffstat)
echo $diff | diffstat echo -n "diffstat: "
echo "$marker_c" echo $diffstat | tail -n1
echo $marker_o
echo $diffstat
echo $marker_c
fi fi
echo "svn log -r $range: $marker_o" echo "svn log -r $range: $marker_o"
svn log -r $range svn log -r $range
echo "$marker_c" echo "$marker_c"
echo "$diffcmd: $marker_o" echo "$diffcmd: $marker_o"
echo $diff echo $diff | sed "s/^Index: .*/\0 ${marker_o}2/"
echo "$marker_c" echo "${marker_c}2"
# add modeline for vim # add modeline for vim
echo " vim:fdm=marker:fdl=1:" echo " vim:fdm=marker:fdl=1:"
} | view - } | view -
read "?continue to 'svn up'? (ctrl-c to abort)" || return 1 read "answer?continue to 'svn up'? (ctrl-c to abort, y to continue) " || return 1
[[ $answer == "y" ]] || return 1
svn up -r $to svn up -r $to
} }