From: Fred T. Hamster Date: Fri, 10 Nov 2017 14:08:03 +0000 (-0500) Subject: back to square one X-Git-Tag: 2.140.90^2~5 X-Git-Url: https://feistymeow.org/gitweb/?a=commitdiff_plain;h=cd2fbf1809d39911a32ead7c3f972294c817e6ee;p=feisty_meow.git back to square one rebuilding the git pull process from scratch, since the simplistic approach we had enjoyed so well for so long totally doesn't work with branches, and our new fangled cobbled together version from across the internet isn't right either. need to build reliable pieces one at a time. --- diff --git a/scripts/rev_control/version_control.sh b/scripts/rev_control/version_control.sh index 61850e93..c5ff3f02 100644 --- a/scripts/rev_control/version_control.sh +++ b/scripts/rev_control/version_control.sh @@ -3,6 +3,9 @@ # these are helper functions for doing localized revision control. # this script should be sourced into other scripts that use it. +# Author: Chris Koeritz +# Author: Kevin Wentworth + source "$FEISTY_MEOW_SCRIPTS/core/launch_feisty_meow.sh" source "$FEISTY_MEOW_SCRIPTS/tty/terminal_titler.sh" @@ -269,20 +272,54 @@ function do_update() if test_writeable ".git"; then $blatt - # from very helpful page: - # https://stackoverflow.com/questions/10312521/how-to-fetch-all-git-branches - for remote in $( git branch -r | grep -v -- '->' ); do - git branch --track ${remote#origin/} $remote 2>/dev/null -#hmmm: ignoring errors from these, since they are continual. -#hmmm: if we could find a way to not try to track with a local branch when there's already one present, that would be swell. it's probably simple. - done +#let's start over clean here... + + git fetch origin + test_or_die "git fetch origin" + + git remote update + test_or_die "git remote update" + +# from: https://stackoverflow.com/questions/3258243/check-if-pull-needed-in-git +UPSTREAM="${1:-'@{u}'}" +LOCAL=$(git rev-parse @) +REMOTE=$(git rev-parse "$UPSTREAM") +BASE=$(git merge-base @ "$UPSTREAM") +var UPSTREAM LOCAL REMOTE BASE + +if [ $LOCAL = $REMOTE ]; then + echo "Up-to-date" +elif [ $LOCAL = $BASE ]; then + echo "Need to pull" +elif [ $REMOTE = $BASE ]; then + echo "Need to push" +else + echo "Diverged" +fi + +echo The rest of pull is not done yet. + + +# reslog=$(git log HEAD..origin/master --oneline) +# if [[ "${reslog}" != "" ]] ; then +# git merge origin/master + -#hmmm: well, one time it failed without the fetch. i hope that's because the fetch is actually needed and not because the whole approach is fubar. - git fetch --all 2>&1 | grep -v "X11 forwarding request failed" | $TO_SPLITTER - test_or_die "git fetch" - git pull --all 2>&1 | grep -v "X11 forwarding request failed" | $TO_SPLITTER - test_or_die "git pull" +# # from very helpful page: +# # https://stackoverflow.com/questions/10312521/how-to-fetch-all-git-branches +# for remote in $( git branch -r | grep -v -- '->' ); do +# git branch --track ${remote#origin/} $remote 2>/dev/null +##hmmm: ignoring errors from these, since they are continual. +##hmmm: if we could find a way to not try to track with a local branch when there's already one present, that would be swell. it's probably simple. +# done +# +##hmmm: well, one time it failed without the fetch. i hope that's because the fetch is actually needed and not because the whole approach is fubar. +# git fetch --all 2>&1 | grep -v "X11 forwarding request failed" | $TO_SPLITTER +# test_or_die "git fetch" +# +# git pull --all 2>&1 | grep -v "X11 forwarding request failed" | $TO_SPLITTER +# test_or_die "git pull" fi else # this is not an error necessarily; we'll just pretend they planned this.