# cvs -annotate -rTAG file line_range # AUTHOR: GPL(C) Mohsin Ahmed, http://www.cs.albany.edu/~mosh # set -x # # msdev: sh ~/cvs-ann.ksh "$(FileName)$(FileExt)" +$(CurLine) # msdev: sh ~/cvs-ann.ksh "$(CurLine)-3..$(CurLine)+3" "$(FileName)$(FileExt)" # vim: map a :exe "!cvs-ann ".line(".")."-3..".line(".")."+3" expand("%") unset LINENO ONLYLINES TAG FILE CMDLINEARG ONLYLINES for CMDLINEARG # remember $* do case $CMDLINEARG in +*) LINENO=$CMDLINEARG ;; *..*|/*/) ONLYLINES=$CMDLINEARG ;; # perl expr -r*) TAG=$CMDLINEARG ;; *) FILE=$CMDLINEARG if [[ ! -r "$FILE" ]] ;then echo "Cannot read file $1"; exit fi ;; esac done if [[ -z "$TAG" ]];then if [[ ! -r CVS/Tag ]] ;then TAG=HEAD echo "No ./CVS/Tag, assuming TAG=$TAG" else TAG=-r$(perl -ne 'print $1 if m/^T(.*)/' CVS/Tag) fi fi if [[ -z "$FILE" ]] ;then echo "Usage: $0 [+LINENO] [-rTAG] FILE .. vim on cvs ann -rTAG FILE" echo "Usage: $0 2..5 [-rTAG] FILE .. Ann lines 2 to 5" echo "Usage: $0 /regexp/ [-rTAG] FILE .. Ann lines matching /regexp/" echo "Need filename to annotate in branch $TAG." exit fi OFILE=$TMP/cvs-ann-$TAG-$(basename $FILE) echo "cvs ann $TAG $FILE > $OFILE" if [[ x$ONLYLINES != x ]] ;then cvs ann $TAG $FILE | perl -ne "print \"\$.:\$_\" if $ONLYLINES;" else cvs ann $TAG $FILE | pr -n -t > $OFILE vi $LINENO $OFILE fi