X-Git-Url: https://feistymeow.org/gitweb/?a=blobdiff_plain;f=scripts%2Frev_control%2Fversion_control.sh;h=96a8558e8a1d7fa20864e18d5b4b58be38dfeeeb;hb=e6ce0aa508c3ad1beb167fdf20732b24f383c651;hp=737f314cb2368ede6157083be13f1165a7aae42c;hpb=af52543dd4b8ab4da7ff2476f0ce45a316eac298;p=feisty_meow.git diff --git a/scripts/rev_control/version_control.sh b/scripts/rev_control/version_control.sh index 737f314c..96a8558e 100644 --- a/scripts/rev_control/version_control.sh +++ b/scripts/rev_control/version_control.sh @@ -11,29 +11,15 @@ source "$FEISTY_MEOW_SCRIPTS/tty/terminal_titler.sh" ############## -# check git version to see if we can use autostash. -# this appears to be an ubuntu issue, where xenial did not provide it even though the -# feature appeared in git 2.6 and xenial claims it has git version 2.7.4. eventually, -# this version test can go away. -gitvertest="$(git version | sed -e 's/git version [0-9]\.//' | sed -e 's/\.[0-9][0-9]*$//' )" -if (( $gitvertest >= 11 )); then - # auto-stash is not available until 2.6 for git, but ubuntu is misreporting or using a - # differing version number somehow. we are sure autostash was missing on ubuntu xenial - # with git 2.7.4 and it's definitely present in zesty with git at 2.11. -# PULL_ADDITION='--rebase --autostash' -#although initially attractive, above set of flags seems to lose history we don't want to -#lose. -PULL_ADDITION= -fi - -############## - # 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 "$(which splitter 2>/dev/null)" ]; then - TO_SPLITTER="$(which splitter)" +if [ ! -z "$(whichable splitter)" ]; then + TO_SPLITTER="$(whichable splitter)" # calculate the number of columsn in the terminal. cols=$(get_maxcols) TO_SPLITTER+=" --maxcol $(($cols - 1))" @@ -78,7 +64,7 @@ function do_revctrl_checkin() nicedir=$(\pwd) 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. @@ -86,8 +72,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 @@ -99,8 +85,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 @@ -114,8 +100,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 @@ -173,7 +159,7 @@ function do_revctrl_diff svn diff . exit_on_error "subversion diff" elif [ -d ".git" ]; then - git diff + git --no-pager diff exit_on_error "git diff" elif [ -d "CVS" ]; then cvs diff . @@ -193,8 +179,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 @@ -277,9 +263,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 @@ -297,6 +283,23 @@ function check_branch_state() return $to_return } +# showes the branch currently active in the repository. +function show_active_branch() +{ +#hmmm: if no args, assume current dir! + + for directory in "$@"; do + echo -n "active branch for '$directory': " + pushd "$directory" &>/dev/null + +#hmmm: if git... + git rev-parse --abbrev-ref HEAD +#hmmm: else OTHERS!!! + + 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() @@ -362,7 +365,7 @@ function do_revctrl_careful_update() remote_branch_info=$(git ls-remote --heads origin $bran 2>/dev/null) if [ ! -z "$remote_branch_info" ]; then # we are pretty sure the remote branch does exist. - git pull --tags $PULL_ADDITION origin "$bran" | $TO_SPLITTER + git pull --tags origin "$bran" | $TO_SPLITTER promote_pipe_return 0 fi exit_on_error "git pull of remote branch: $bran" @@ -374,7 +377,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 $PULL_ADDITION --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 @@ -414,7 +417,7 @@ function do_revctrl_simple_update() elif [ -d ".git" ]; then if test_writeable ".git"; then $blatt_report - git pull --tags $PULL_ADDITION 2>&1 | grep -v "X11 forwarding request failed" | $TO_SPLITTER + git pull --tags 2>&1 | grep -v "X11 forwarding request failed" | $TO_SPLITTER promote_pipe_return 0 exit_on_error "git pull of origin" fi