X-Git-Url: https://feistymeow.org/gitweb/?a=blobdiff_plain;f=scripts%2Frev_control%2Fversion_control.sh;h=e004964ae095b3030dd920a61945328e26cf3fd0;hb=821fa68f7c1099be9365a30c2d5337f9bb6183bb;hp=e96af846e291aca24d97f1ec9f125a6938615cc7;hpb=238f171fb1d2e60b3cd93f8cb2392c71e8a1df73;p=feisty_meow.git diff --git a/scripts/rev_control/version_control.sh b/scripts/rev_control/version_control.sh index e96af846..e004964a 100644 --- a/scripts/rev_control/version_control.sh +++ b/scripts/rev_control/version_control.sh @@ -102,6 +102,11 @@ function compute_modifier() function do_checkin() { local directory="$1"; shift + do_update "$directory" + if [ $? -ne 0 ]; then + echo "Repository update failed; this should be fixed before check-in." + return 1 + fi pushd "$directory" &>/dev/null retval=0 # normally successful. if [ -d "CVS" ]; then @@ -202,18 +207,24 @@ function squash_first_few_crs() function do_update() { directory="$1"; shift - + # plan on success for now. + retval=0 pushd "$directory" &>/dev/null if [ -d "CVS" ]; then cvs update . | squash_first_few_crs + retval=${PIPESTATUS[0]} elif [ -d ".svn" ]; then svn update . | squash_first_few_crs + retval=${PIPESTATUS[0]} elif [ -d ".git" ]; then git pull 2>&1 | grep -v "X11 forwarding request failed" | squash_first_few_crs + retval=${PIPESTATUS[0]} else + # this is not an error necessarily; we'll just pretend they planned this. echo no repository in $directory fi popd &>/dev/null + return $retval } # gets all the updates for a list of folders under revision control. @@ -247,12 +258,14 @@ function generate_rev_ctrl_filelist() local dirhere="$(\pwd)" local tempfile=$(mktemp /tmp/zz_rev_checkin.XXXXXX) echo >$tempfile - find $dirhere -maxdepth 4 -type d -iname ".svn" -exec echo {}/.. ';' >>$tempfile - find $dirhere -maxdepth 4 -type d -iname ".git" -exec echo {}/.. ';' >>$tempfile -#CVS is not well behaved, and we seldom use it anymore. -# find $dirhere -maxdepth 3 -type d -iname "CVS" -exec echo {}/.. ';' >>$tempfile + find $dirhere -maxdepth 5 -type d -iname ".svn" -exec echo {}/.. ';' >>$tempfile + find $dirhere -maxdepth 5 -type d -iname ".git" -exec echo {}/.. ';' >>$tempfile + # CVS is not well behaved like git and (now) svn, and we seldom use it anymore. popd &>/dev/null - echo "$tempfile" + local sortfile=$(mktemp /tmp/zz_rev_checkin_sort.XXXXXX) + sort <"$tempfile" >"$sortfile" + \rm "$tempfile" + echo "$sortfile" } # iterates across a list of directories contained in a file (first parameter). @@ -262,16 +275,17 @@ function perform_action_on_file() local tempfile="$1"; shift local action="$1"; shift - dirs=($(cat $tempfile)) +# dirs=($(cat $tempfile)) - for dirname in ${dirs[@]}; do + while read -u 3 dirname; do +# for dirname in "${dirs[@]}"; do if [ -z "$dirname" ]; then continue; fi - pushd $dirname &>/dev/null + pushd "$dirname" &>/dev/null echo "[$(pwd)]" $action . echo "=======" popd &>/dev/null - done + done 3<"$tempfile" rm $tempfile }