====== Cvs == CVS is a revision control system, just like RCS, [[GIT]] and Subversion ([[SVN]]) are. \\ Though the current Crossfire repository is maintained by svn, it is possible to access the old cvs archive, \\ which could be of interest, since the change towards svn did just upload the client, server and arch modules \\ until between svn revision 1450 and 1500, when the sound and map modules were added. \\ Until the maps were added to the svn repository, several Crossfire releases were introduced, and as of year 2018 still available for download. Cvs is basically a command line tool with syntax as: cvs -d:pserver:anonymous@crossfire.cvs.sourceforge.net:/cvsroot/crossfire co Several modules (folders) are available : - CVSROOT -- 1 MB - CFJavaEditor -- 9 MB - arch -- 48 MB - iso_arch -- 24 MB - alternate_images -- 7 MB - client -- 6 MB - cfclient_sdl -- 5 MB - jxclient -- 12 MB - crossfire -- the server - 23 MB - maps -- 47 MB - maps-bigworld -- 169 MB - sounds -- 1 MB These modules can be checked out by the following syntax : cvs $CVS_OPTS -d:pserver:anonymous@crossfire.cvs.sourceforge.net:/cvsroot/crossfire co -P ---- ===== Script == A bash script to checkout the modules one by one. \\ The cvs server on SF is pretty lazy, therefore the script attempts MAX_RETRIES on each of the modules. \\ The script is expected to be placed and run outside of a folder named ' crossfire_cvs ' . #!/bin/ash CVS_OPTS="-z 7" # '-z9' MAX_RETRIES=10 ERROR=${ERROR:=1} ERR=${ERR:-$ERROR} #ERR var already used as /dev/null OR /dev/stderr _err(){ test "$ERROR" || return 0 echo -e "$0:ERROR:$*" >&2 } _exit(){ local RV test "$*" || { _err "Usage:_exit EXITCODE MESSAGE"; } RV=$1 [ "${RV//[[:digit:]]/}" ] && { _err "\$1 must be a digit number."; RV=255; } || shift echo "$*" >&2 case ${MY_SELF##*/} in ash*|bash*|sh*) return $RV;; *) exit $RV;; esac } MY_SELF=`realpath "$0"` MY_DIR=${MY_SELF%/*} cd "$MY_DIR" || _exit 3 "Could not change into '$MY_DIR'/ ." cd crossfire_cvs || _exit 3 "Could not change into crossfire_cvs/ ." trap "pidof cvs && kill -2 `pidof cvs`" INT for d in CVSROOT CFJavaEditor arch client iso_arch \ alternate_images cfclient_sdl crossfire jxclient \ maps maps-bigworld sounds do mkdir $VERB -p $d done MODULES=`ls -1` test "$MODULES" || _exit 3 "No cvs modules available." for module in $MODULES do c=0 while :; do cvs $CVS_OPTS -d:pserver:anonymous@crossfire.cvs.sourceforge.net:/cvsroot/crossfire co -P $module RV=$? test $RV = 0 && break 1 echo Returnvalue $? echo c=$((c+1)) test $c -ge ${MAX_RETRIES:-10} && break 1 sleep 12 done sleep 12 done