From cd2fbf1809d39911a32ead7c3f972294c817e6ee Mon Sep 17 00:00:00 2001 From: "Fred T. Hamster" Date: Fri, 10 Nov 2017 09:08:03 -0500 Subject: [PATCH] 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. --- scripts/rev_control/version_control.sh | 61 +++++++++++++++++++++----- 1 file changed, 49 insertions(+), 12 deletions(-) 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. -- 2.34.1