# Homepage: http://code.google.com/p/coderev # License: GPLv2, see "COPYING" # # This library implements cvs operations, see comments in coderev.sh # # $Id: libcvs.sh 10 2008-08-23 09:02:26Z mattwyl $ CVS_OPS=( cvs_get_banner cvs_get_repository cvs_get_project_path cvs_get_working_revision cvs_get_active_list cvs_get_diff cvs_get_diff_opt ) function cvs_get_banner { echo "CVS" return 0 } function cvs_get_repository { cat CVS/Root } function cvs_get_project_path { cat CVS/Repository } function cvs_get_working_revision { # CVS doesn't have a global revision number, just fetch revision of the # first file or "." # local pathname="." [[ -n $1 ]] && [[ -z $2 ]] && pathname=$1 cvs st $pathname 2>/dev/null | grep 'Working revision:.*\.' | head -1 \ | sed 's/.*Working revision://' | awk '{print $1}' } function cvs_get_active_list { cvs st $@ | grep File: \ | awk '$4 != "Up-to-date" && $4 != "Unknown" {print $2}' } function cvs_get_diff { local op diff_opt OPTIND OPTARG while getopts "r:" op; do case $op in r) diff_opt="-r $OPTARG" ;; ?) echo "Unknown option: -$op" >&2; exit 1;; esac done shift $((OPTIND - 1)) cvs diff -uN $diff_opt $@ return 0 # cvs diff return 1 when there're changes } function cvs_get_diff_opt { echo "-r $1" }