X-Git-Url: https://feistymeow.org/gitweb/?a=blobdiff_plain;f=scripts%2Frev_control%2Fversion_control.sh;h=be77a2f6449ff5cfbc9b35bef2da0bc6cc4f071c;hb=b9709dc381635b605588629c3c8a4584263278d0;hp=703e003ddf52269c1215b5a9db6cbe59f784cff6;hpb=78260fb9e066ca6e391494b567b2758073491edc;p=feisty_meow.git diff --git a/scripts/rev_control/version_control.sh b/scripts/rev_control/version_control.sh index 703e003d..be77a2f6 100644 --- a/scripts/rev_control/version_control.sh +++ b/scripts/rev_control/version_control.sh @@ -14,6 +14,9 @@ source "$FEISTY_MEOW_SCRIPTS/tty/terminal_titler.sh" # the maximum depth that the recursive functions will try to go below the starting directory. export MAX_DEPTH=5 +# the name of our "don't check this stuff in" file. +export NO_CHECKIN=".no-checkin" + # use our splitter tool for lengthy output if it's available. if [ ! -z "$(whichable splitter)" ]; then TO_SPLITTER="$(whichable splitter)" @@ -58,10 +61,11 @@ function do_revctrl_checkin() # make a nice echoer since we want to use it inside conditions below. local nicedir="$directory" if [ $nicedir == "." ]; then - nicedir=$(\pwd) + nicedir="$( \cd . && /bin/pwd )" +#echo "calculated nicedir as '$nicedir'" fi local blatt_report="echo -ne \nchecking in '$nicedir'... " - local tell_no_checkin="echo -ne \nskipping check-in due to presence of .no-checkin sentinel file: $nicedir" + local tell_no_checkin="echo -ne \nskipping check-in due to presence of $NO_CHECKIN sentinel file: $nicedir" pushd "$directory" &>/dev/null #hmmm: overly elaborate sections below here, but we do want precise handling for git case. @@ -69,8 +73,8 @@ function do_revctrl_checkin() if test_writeable "CVS"; then do_revctrl_simple_update "$directory" exit_on_error "updating repository; this issue should be fixed before check-in." - if [ -f ".no-checkin" ]; then -# echo -ne "\nskipping check-in due to presence of .no-checkin sentinel file: $directory" + if [ -f "$NO_CHECKIN" ]; then +# echo -ne "\nskipping check-in due to presence of $NO_CHECKIN sentinel file: $directory" $tell_no_checkin else $blatt_report @@ -82,8 +86,8 @@ function do_revctrl_checkin() if test_writeable ".svn"; then do_revctrl_simple_update "$directory" exit_on_error "updating repository; this issue should be fixed before check-in." - if [ -f ".no-checkin" ]; then -# echo -ne "\nskipping check-in due to presence of .no-checkin sentinel file: $directory" + if [ -f "$NO_CHECKIN" ]; then +# echo -ne "\nskipping check-in due to presence of $NO_CHECKIN sentinel file: $directory" $tell_no_checkin else $blatt_report @@ -97,8 +101,8 @@ function do_revctrl_checkin() # take steps to make sure the branch integrity is good and we're up to date against remote repos. do_revctrl_careful_update "$(\pwd)" - if [ -f ".no-checkin" ]; then -# echo -ne "\nskipping check-in due to presence of .no-checkin sentinel file: $directory" + if [ -f "$NO_CHECKIN" ]; then +# echo -ne "\nskipping check-in due to presence of $NO_CHECKIN sentinel file: $directory" $tell_no_checkin else $blatt_report @@ -176,8 +180,8 @@ function do_revctrl_report_new pushd "$directory" &>/dev/null # only update if we see a repository living there. - if [ -f ".no-checkin" ]; then - echo -ne "\nskipping reporting due to presence of .no-checkin sentinel file: $directory" + if [ -f "$NO_CHECKIN" ]; then + echo -ne "\nskipping reporting due to presence of $NO_CHECKIN sentinel file: $directory" 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 @@ -240,7 +244,7 @@ function all_branch_names() # git repository. function my_branch_name() { - echo "$(git branch -vv | grep '\*' | cut -d ' ' -f2)" + echo "$(git branch -vv | grep '^\*' | cut -d ' ' -f2)" } # reports the status of the branch by echoing one of these values: @@ -260,9 +264,9 @@ function check_branch_state() local to_return=120 # unknown issue. - local local_branch=$(git rev-parse @) + local local_branch=$(git rev-parse HEAD) local remote_branch=$(git rev-parse "$branch") - local merge_base=$(git merge-base @ "$branch") + local merge_base=$(git merge-base HEAD "$branch") local to_echo= if [ "$local_branch" == "$remote_branch" ]; then @@ -280,6 +284,30 @@ function check_branch_state() return $to_return } +# shows the branch currently active in the repository. +function show_active_branch() +{ +#hmmm: if no args, assume current dir!? + + for directory in "$@"; do + if [ $directory == "." ]; then + directory="$( \cd . && /bin/pwd )" +#echo "calculated directory as '$directory'" + fi + + echo -n -e "$(basename $directory) => branch " + pushd "$directory" &>/dev/null + +#hmmm: if git... + git rev-parse --abbrev-ref HEAD +#hmmm: else OTHERS!!! + + echo + + popd &>/dev/null + done +} + # only shows the branch state if it's not okay. # note that this is not the same as a conditional branch (ha ha). function show_branch_conditionally() @@ -357,7 +385,7 @@ function do_revctrl_careful_update() # now pull down any changes in our own origin in the repo, to stay in synch # with any changes from others. - git pull --tags --all | $TO_SPLITTER + git fetch --tags --all | $TO_SPLITTER #is the above really important when we did this branch already in the loop? #it does an --all, but is that effective or different? should we be doing that in above loop? promote_pipe_return 0 @@ -481,7 +509,7 @@ function generate_rev_ctrl_filelist() pushd "$dir" &>/dev/null local dirhere="$( \cd "$(\dirname "$dir")" && /bin/pwd )" local tempfile=$(mktemp /tmp/zz_checkins.XXXXXX) - echo >$tempfile + echo -n >$tempfile local additional_filter 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 @@ -515,7 +543,7 @@ function perform_revctrl_action_on_file() fi did_anything=yes pushd "$dirname" &>/dev/null - echo "[$(pwd)]" + echo -n "[$(pwd)] " # pass the current directory plus the remaining parameters from function invocation. $action . exit_on_error "performing action $action on: $(pwd)"