X-Git-Url: https://feistymeow.org/gitweb/?a=blobdiff_plain;f=scripts%2Frev_control%2Fversion_control.sh;h=9bf195c1b9221c6fff9d364966372f07b49bb097;hb=f7a703e55707f14f6506bd450de6995ff427eac1;hp=f76f3301a093d2b3068fe1176cabcf6ca82ce366;hpb=d4f36724048884d87a46f422aeaf7a45d5e09f11;p=feisty_meow.git diff --git a/scripts/rev_control/version_control.sh b/scripts/rev_control/version_control.sh index f76f3301..9bf195c1 100644 --- a/scripts/rev_control/version_control.sh +++ b/scripts/rev_control/version_control.sh @@ -3,6 +3,9 @@ # these are helper functions for doing localized revision control. # this script should be sourced into other scripts that use it. +# the maximum depth that the recursive functions will try to go below the starting directory. +export MAX_DEPTH=5 + #hmmm: re-address this code, since it doesn't make a lot of sense to me right now... # one unpleasantry to take care of first; cygwin barfs aggressively if the TMP directory # is a DOS path, but we need it to be a DOS path for our GFFS testing, so that blows. @@ -13,7 +16,7 @@ if [[ "$TMP" =~ .:.* ]]; then export TMP=/tmp/rev_control_$USER fi if [ ! -d "$TMP" ]; then - mkdir $TMP + mkdir -p $TMP fi if [ ! -d "$TMP" ]; then echo "Could not create the temporary directory TMP in: $TMP" @@ -109,8 +112,10 @@ function do_checkin() return 1 fi pushd "$directory" &>/dev/null - retval=0 # normally successful. - if [ -d "CVS" ]; then + local retval=0 # normally successful. + if [ -f ".no-checkin" ]; then + echo "Not checking in because found .no-checkin sentinel file." + elif [ -d "CVS" ]; then cvs ci . retval=$? elif [ -d ".svn" ]; then @@ -138,7 +143,7 @@ function do_diff { local directory="$1"; shift pushd "$directory" &>/dev/null - retval=0 # normally successful. + local retval=0 # normally successful. # only update if we see a repository living there. if [ -d ".svn" ]; then @@ -157,12 +162,18 @@ function do_report_new { local directory="$1"; shift pushd "$directory" &>/dev/null - retval=0 # normally successful. + local retval=0 # normally successful. # only update if we see a repository living there. - if [ -d ".svn" ]; then + if [ -f ".no-checkin" ]; then + echo "Not reporting mods because found .no-checkin sentinel file." + elif [ -d ".svn" ]; then # this action so far only makes sense and is needed for svn. bash $FEISTY_MEOW_SCRIPTS/rev_control/svnapply.sh \? echo + retval=$? + elif [ -d ".git" ]; then + git status -u + retval=$? fi popd &>/dev/null @@ -190,12 +201,12 @@ function checkin_list() function squash_first_few_crs() { i=0 - while read line; do + while read input_text; do i=$((i+1)) if [ $i -le 5 ]; then - echo -n "$line " + echo -n "$input_text " else - echo $line + echo $input_text fi done if [ $i -le 3 ]; then @@ -208,8 +219,7 @@ function squash_first_few_crs() function do_update() { directory="$1"; shift - # plan on success for now. - retval=0 + local retval=0 # plan on success for now. pushd "$directory" &>/dev/null if [ -d "CVS" ]; then cvs update . | squash_first_few_crs @@ -259,8 +269,8 @@ function generate_rev_ctrl_filelist() local dirhere="$( \cd "$(\dirname "$dir")" && /bin/pwd )" local tempfile=$(mktemp /tmp/zz_rev_checkin.XXXXXX) echo >$tempfile - find $dirhere -follow -maxdepth 5 -type d -iname ".svn" -exec echo {}/.. ';' >>$tempfile 2>/dev/null - find $dirhere -follow -maxdepth 5 -type d -iname ".git" -exec echo {}/.. ';' >>$tempfile 2>/dev/null + find $dirhere -follow -maxdepth $MAX_DEPTH -type d -iname ".svn" -exec echo {}/.. ';' >>$tempfile 2>/dev/null + find $dirhere -follow -maxdepth $MAX_DEPTH -type d -iname ".git" -exec echo {}/.. ';' >>$tempfile 2>/dev/null # CVS is not well behaved like git and (now) svn, and we seldom use it anymore. popd &>/dev/null local sortfile=$(mktemp /tmp/zz_rev_checkin_sort.XXXXXX)