X-Git-Url: https://feistymeow.org/gitweb/?a=blobdiff_plain;f=scripts%2Frev_control%2Fversion_control.sh;h=9b9704c286b0d82ad27c570636008e01ba91ea2d;hb=563c91d0e7636935106919ea4b1962a48c2b973b;hp=b96bcb3431fe55aa4f7bb478bc85e3300a08cd6b;hpb=15a332d7e02cf70f55d59e20b318f1f771c5d88b;p=feisty_meow.git diff --git a/scripts/rev_control/version_control.sh b/scripts/rev_control/version_control.sh index b96bcb34..9b9704c2 100644 --- a/scripts/rev_control/version_control.sh +++ b/scripts/rev_control/version_control.sh @@ -56,7 +56,7 @@ function promote_pipe_return() # 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 - echo "making weirdo temporary directory for PCDOS-style path." + log_feisty_meow_event "making weirdo temporary directory for PCDOS-style path." export TMP=/tmp/rev_control_$USER fi if [ ! -d "$TMP" ]; then @@ -65,6 +65,12 @@ fi if [ ! -d "$TMP" ]; then echo "could not create the temporary directory TMP in: $TMP" echo "this script will not work properly without an existing TMP directory." + echo +#hmmm: odd approach to solving the "sourced scripts shouldn't exit or they take down the +# original caller too" issue. + echo "hit ctrl-c to stay in this shell now, otherwise it may exit in 10 seconds..." + sleep 10 + exit 1 fi ############## @@ -81,10 +87,10 @@ function do_checkin() if [ $nicedir == "." ]; then nicedir=$(\pwd) fi - local blatt="echo -n checking in '$nicedir'... " + local blatt="echo -ne \nchecking in '$nicedir'... " do_update "$directory" - test_or_die "repository update--this should be fixed before check-in." + exit_on_error "updating repository; this issue should be fixed before check-in." pushd "$directory" &>/dev/null if [ -f ".no-checkin" ]; then @@ -93,13 +99,13 @@ function do_checkin() if test_writeable "CVS"; then $blatt cvs ci . - test_or_die "cvs checkin" + exit_on_error "cvs checkin" fi elif [ -d ".svn" ]; then if test_writeable ".svn"; then $blatt svn ci . - test_or_die "svn checkin" + exit_on_error "svn checkin" fi elif [ -d ".git" ]; then if test_writeable ".git"; then @@ -108,7 +114,7 @@ function do_checkin() # put all changed and new files in the commit. not to everyone's liking. git add --all . | $TO_SPLITTER promote_pipe_return 0 - test_or_die "git add all new files" + exit_on_error "git add all new files" # see if there are any changes in the local repository. if ! git diff-index --quiet HEAD --; then @@ -116,7 +122,7 @@ function do_checkin() #hmmm: begins to look like, you guessed it, a reusable bit that all commit actions could enjoy. git commit . retval=$? - test_or_continue "git commit" + continue_on_error "git commit" if [ $retval -ne 0 ]; then echo -e -n "Commit failed or was aborted:\nShould we continue with other check-ins? [y/N] " local line @@ -137,12 +143,12 @@ function do_checkin() # upload any changes to the upstream repo so others can see them. git push --tags origin "$(my_branch_name)" 2>&1 | grep -v "X11 forwarding request failed" | $TO_SPLITTER promote_pipe_return 0 - test_or_die "git push" + exit_on_error "git push" fi else # nothing there. it's not an error though. - echo no repository in $directory + log_feisty_meow_event "no repository in $directory" fi popd &>/dev/null @@ -163,13 +169,13 @@ function do_diff # only update if we see a repository living there. if [ -d ".svn" ]; then svn diff . - test_or_die "subversion diff" + exit_on_error "subversion diff" elif [ -d ".git" ]; then git diff - test_or_die "git diff" + exit_on_error "git diff" elif [ -d "CVS" ]; then cvs diff . - test_or_die "cvs diff" + exit_on_error "cvs diff" fi popd &>/dev/null @@ -194,10 +200,10 @@ function do_report_new 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 - test_or_die "svn diff" + exit_on_error "svn diff" elif [ -d ".git" ]; then git status -u - test_or_die "git status -u" + exit_on_error "git status -u" fi popd &>/dev/null @@ -226,16 +232,16 @@ function checkin_list() # yep, this path is absolute. just handle it directly. if [ ! -d "$outer" ]; then continue; fi do_checkin "$outer" - test_or_die "running check-in (absolute) on path: $outer" - sep 28 + exit_on_error "running check-in (absolute) on path: $outer" +# sep 28 else for inner in $list; do # add in the directory component to see if we can find the folder. local path="$inner/$outer" if [ ! -d "$path" ]; then continue; fi do_checkin "$path" - test_or_die "running check-in (relative) on path: $path" - sep 28 + exit_on_error "running check-in (relative) on path: $path" +# sep 28 done fi done @@ -243,7 +249,10 @@ function checkin_list() restore_terminal_title } -# does a careful git update on all the folders in the specified list. +# does a careful update on all the folders in the specified list; +# it looks in the REPOSITORY_LIST for those names and updates them. +# this is just like checkout_list, but it's for the puffing up action +# we need to do on git. function puff_out_list() { # make the list of directories unique. @@ -263,16 +272,16 @@ function puff_out_list() # yep, this path is absolute. just handle it directly. if [ ! -d "$outer" ]; then continue; fi do_careful_git_update "$outer" - test_or_die "running puff-out (absolute) on path: $outer" - sep 28 + exit_on_error "running puff-out (absolute) on path: $outer" +# sep 28 else for inner in $list; do # add in the directory component to see if we can find the folder. local path="$inner/$outer" if [ ! -d "$path" ]; then continue; fi do_careful_git_update "$path" - test_or_die "running puff-out (relative) on path: $path" - sep 28 + exit_on_error "running puff-out (relative) on path: $path" +# sep 28 done fi done @@ -280,26 +289,7 @@ function puff_out_list() restore_terminal_title } -#hmmm: to go below. -### takes out the first few carriage returns that are in the input. -##function squash_first_few_crs() -##{ - ##i=0 - ##while read input_text; do - ##i=$((i+1)) - ##if [ $i -le 5 ]; then - ##echo -n "$input_text " - ##else - ##echo $input_text - ##fi - ##done - ##if [ $i -le 3 ]; then - ### if we're still squashing eols, make sure we don't leave them hanging. - ##echo - ##fi -##} - -#hmmm: the below are git specific and should be named that way. +#hmmm: below functions are git specific and should be named that way. function all_branch_names() { @@ -376,12 +366,14 @@ function do_careful_git_update() { local directory="$1"; shift pushd "$directory" &>/dev/null - test_or_die "changing to directory: $directory" + exit_on_error "changing to directory: $directory" if [ ! -d ".git" ]; then - # we ignore if they're jumping into a non-useful folder, but also tell them. - echo "Directory is not a git repository: $directory" - return 0 + # not a git project, so just boil this down to a getem action. + popd &>/dev/null +echo "special case; not doing careful git update on non git repository: $directory" + do_update "$directory" + return $? fi local this_branch="$(my_branch_name)" @@ -391,7 +383,7 @@ function do_careful_git_update() # first update all our remote branches to their current state from the repos. git remote update | $TO_SPLITTER promote_pipe_return 0 - test_or_die "git remote update" + exit_on_error "git remote update" show_branch_conditionally "$this_branch" @@ -404,7 +396,7 @@ function do_careful_git_update() # echo "synchronizing remote branch: $bran" git checkout "$bran" | $TO_SPLITTER promote_pipe_return 0 - test_or_die "git switching checkout to remote branch: $bran" + exit_on_error "git switching checkout to remote branch: $bran" show_branch_conditionally "$this_branch" @@ -416,12 +408,12 @@ function do_careful_git_update() # without any changes in them. --no-ff promote_pipe_return 0 fi - test_or_die "git pull of remote branch: $bran" + exit_on_error "git pull of remote branch: $bran" done # now switch back to our branch. git checkout "$this_branch" | $TO_SPLITTER promote_pipe_return 0 - test_or_die "git checking out our current branch: $this_branch" + exit_on_error "git checking out our current branch: $this_branch" # now pull down any changes in our own origin in the repo, to stay in synch # with any changes from others. @@ -430,7 +422,7 @@ function do_careful_git_update() #it does an --all, but is that effective or different? should we be doing that in above loop? # --no-ff promote_pipe_return 0 - test_or_die "git pulling all upstream" + exit_on_error "git pulling all upstream" popd &>/dev/null } @@ -447,7 +439,7 @@ function do_update() if [ $nicedir == "." ]; then nicedir=$(\pwd) fi - local blatt="echo retrieving '$nicedir'..." + local blatt="echo -e \nretrieving '$nicedir'..." pushd "$directory" &>/dev/null if [ -d "CVS" ]; then @@ -455,14 +447,14 @@ function do_update() $blatt cvs update . | $TO_SPLITTER promote_pipe_return 0 - test_or_die "cvs update" + exit_on_error "cvs update" fi elif [ -d ".svn" ]; then if test_writeable ".svn"; then $blatt svn update . | $TO_SPLITTER promote_pipe_return 0 - test_or_die "svn update" + exit_on_error "svn update" fi elif [ -d ".git" ]; then if test_writeable ".git"; then @@ -470,11 +462,11 @@ function do_update() git pull --tags $PULL_ADDITION 2>&1 | grep -v "X11 forwarding request failed" | $TO_SPLITTER #ordinary pulls should be allowed to do fast forward: --no-ff promote_pipe_return 0 - test_or_die "git pull of origin" + exit_on_error "git pull of origin" fi else # this is not an error necessarily; we'll just pretend they planned this. - echo no repository in $directory + log_feisty_meow_event "no repository in $directory" fi popd &>/dev/null @@ -501,16 +493,16 @@ function checkout_list() # yep, this path is absolute. just handle it directly. if [ ! -d "$outer" ]; then continue; fi do_update $outer - test_or_die "running update on: $path" - sep 28 + exit_on_error "running update on: $path" +# sep 28 else for inner in $list; do # add in the directory component to see if we can find the folder. local path="$inner/$outer" if [ ! -d "$path" ]; then continue; fi do_update $path - test_or_die "running update on: $path" - sep 28 + exit_on_error "running update on: $path" +# sep 28 done fi done @@ -565,8 +557,8 @@ function perform_revctrl_action_on_file() echo "[$(pwd)]" # pass the current directory plus the remaining parameters from function invocation. $action . - test_or_die "performing action $action on: $(pwd)" - sep 28 + exit_on_error "performing action $action on: $(pwd)" +# sep 28 popd &>/dev/null done 3<"$tempfile"