X-Git-Url: https://feistymeow.org/gitweb/?a=blobdiff_plain;f=scripts%2Frev_control%2Fversion_control.sh;h=0c7ac401b6305cc595e4e7eedea2728c0f55b9d3;hb=e66f47c936e8b86047a2dffb356a67b74b9629db;hp=d74fe1bd67c43c713249809e0bcbf0a991cb4b0a;hpb=51356b493613a783d95f8ba5f6ef7777c8e50f5a;p=feisty_meow.git diff --git a/scripts/rev_control/version_control.sh b/scripts/rev_control/version_control.sh index d74fe1bd..0c7ac401 100644 --- a/scripts/rev_control/version_control.sh +++ b/scripts/rev_control/version_control.sh @@ -11,6 +11,23 @@ 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 @@ -226,7 +243,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. @@ -362,9 +382,15 @@ function do_careful_git_update() test_or_die "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 + +# # 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 + + # new and better approach; just boil down to a getem action. + popd &>/dev/null + do_update $directory + return $? fi local this_branch="$(my_branch_name)" @@ -379,6 +405,8 @@ function do_careful_git_update() show_branch_conditionally "$this_branch" # this code is now doing what i have to do when i repair the repo. and it seems to be good so far. + # note that we allow the local branch to be merged with its remote counterpart; otherwise we would + # miss changes that happened elsewhere which should be seen in our local copy. local branch_list=$(all_branch_names) local bran for bran in $branch_list; do @@ -392,7 +420,9 @@ function do_careful_git_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 --no-ff origin "$bran" | $TO_SPLITTER + git pull --tags $PULL_ADDITION origin "$bran" | $TO_SPLITTER +# we may want to choose to do fast forward, to avoid crazy multiple merge histories +# without any changes in them. --no-ff promote_pipe_return 0 fi test_or_die "git pull of remote branch: $bran" @@ -404,7 +434,10 @@ function do_careful_git_update() # now pull down any changes in our own origin in the repo, to stay in synch # with any changes from others. - git pull --no-ff --all | $TO_SPLITTER + git pull --tags $PULL_ADDITION --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? +# --no-ff promote_pipe_return 0 test_or_die "git pulling all upstream" @@ -443,9 +476,10 @@ function do_update() elif [ -d ".git" ]; then if test_writeable ".git"; then $blatt - git pull --no-ff 2>&1 | grep -v "X11 forwarding request failed" | $TO_SPLITTER + 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 without fast forwards" + test_or_die "git pull of origin" fi else # this is not an error necessarily; we'll just pretend they planned this.