X-Git-Url: https://feistymeow.org/gitweb/?a=blobdiff_plain;f=scripts%2Frev_control%2Fversion_control.sh;h=b6ab0217f6f3c7f1001723841c27e4e0cbad9417;hb=366ada5b8fb59769ababfd39a68e3b51d46cf2d8;hp=b42df56850feecbc263313dd3faae1fd61131ff4;hpb=73d9a64c814f223b7829642e06c1818efc0aa0bd;p=feisty_meow.git diff --git a/scripts/rev_control/version_control.sh b/scripts/rev_control/version_control.sh index b42df568..b6ab0217 100644 --- a/scripts/rev_control/version_control.sh +++ b/scripts/rev_control/version_control.sh @@ -3,8 +3,12 @@ # 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 XSEDE testing, so that blows. +# is a DOS path, but we need it to be a DOS path for our GFFS testing, so that blows. # to get past this, TMP gets changed below to a hopefully generic and safe place. if [[ "$TMP" =~ .:.* ]]; then @@ -12,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" @@ -102,7 +106,6 @@ function compute_modifier() function do_checkin() { local directory="$1"; shift -echo "do_checkin sees directory '$directory'" do_update "$directory" if [ $? -ne 0 ]; then echo "Repository update failed; this should be fixed before check-in." @@ -190,12 +193,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 @@ -256,11 +259,11 @@ function generate_rev_ctrl_filelist() { local dir="$1"; shift pushd "$dir" &>/dev/null - local dirhere="$(\pwd)" + local dirhere="$( \cd "$(\dirname "$dir")" && /bin/pwd )" local tempfile=$(mktemp /tmp/zz_rev_checkin.XXXXXX) echo >$tempfile - find $dirhere -maxdepth 5 -type d -iname ".svn" -exec echo {}/.. ';' >>$tempfile - find $dirhere -maxdepth 5 -type d -iname ".git" -exec echo {}/.. ';' >>$tempfile + 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) @@ -276,10 +279,7 @@ function perform_revctrl_action_on_file() local tempfile="$1"; shift local action="$1"; shift -# dirs=($(cat $tempfile)) - while read -u 3 dirname; do -# for dirname in "${dirs[@]}"; do if [ -z "$dirname" ]; then continue; fi pushd "$dirname" &>/dev/null echo "[$(pwd)]"