Check via shell-script if git repository's master branch is behind origin

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP












0















I'm currently writing a bash script to remind me to rebase git repos when the local master branch is found to be behind origin/master.



So far I have come up with the following, but $? always returns 1 (I suspect this is because even an empty diff still loads less.



#!/bin/bash

REPO_PATH=$1
cd $REPO_PATH

# flow once inside repo

git fetch
git diff master origin/master
&> /dev/null

if [ "" = $? ]
then
echo "Empty"
# logic to follow
else

git pull
&> /dev/null
echo "Don't forget to rebase!!!"
echo $REPO_PATH
fi

# check for changes to master
# If master is behind origin/master
# then pull master and notify me to rebase

# run this at the start of the day (this script should be run from my start_work
# script and should also be periodically run throughout the day. [maybe every
# time I'm about to run coverage/push?])


Anybody have any ideas?










share|improve this question




























    0















    I'm currently writing a bash script to remind me to rebase git repos when the local master branch is found to be behind origin/master.



    So far I have come up with the following, but $? always returns 1 (I suspect this is because even an empty diff still loads less.



    #!/bin/bash

    REPO_PATH=$1
    cd $REPO_PATH

    # flow once inside repo

    git fetch
    git diff master origin/master
    &> /dev/null

    if [ "" = $? ]
    then
    echo "Empty"
    # logic to follow
    else

    git pull
    &> /dev/null
    echo "Don't forget to rebase!!!"
    echo $REPO_PATH
    fi

    # check for changes to master
    # If master is behind origin/master
    # then pull master and notify me to rebase

    # run this at the start of the day (this script should be run from my start_work
    # script and should also be periodically run throughout the day. [maybe every
    # time I'm about to run coverage/push?])


    Anybody have any ideas?










    share|improve this question


























      0












      0








      0


      0






      I'm currently writing a bash script to remind me to rebase git repos when the local master branch is found to be behind origin/master.



      So far I have come up with the following, but $? always returns 1 (I suspect this is because even an empty diff still loads less.



      #!/bin/bash

      REPO_PATH=$1
      cd $REPO_PATH

      # flow once inside repo

      git fetch
      git diff master origin/master
      &> /dev/null

      if [ "" = $? ]
      then
      echo "Empty"
      # logic to follow
      else

      git pull
      &> /dev/null
      echo "Don't forget to rebase!!!"
      echo $REPO_PATH
      fi

      # check for changes to master
      # If master is behind origin/master
      # then pull master and notify me to rebase

      # run this at the start of the day (this script should be run from my start_work
      # script and should also be periodically run throughout the day. [maybe every
      # time I'm about to run coverage/push?])


      Anybody have any ideas?










      share|improve this question
















      I'm currently writing a bash script to remind me to rebase git repos when the local master branch is found to be behind origin/master.



      So far I have come up with the following, but $? always returns 1 (I suspect this is because even an empty diff still loads less.



      #!/bin/bash

      REPO_PATH=$1
      cd $REPO_PATH

      # flow once inside repo

      git fetch
      git diff master origin/master
      &> /dev/null

      if [ "" = $? ]
      then
      echo "Empty"
      # logic to follow
      else

      git pull
      &> /dev/null
      echo "Don't forget to rebase!!!"
      echo $REPO_PATH
      fi

      # check for changes to master
      # If master is behind origin/master
      # then pull master and notify me to rebase

      # run this at the start of the day (this script should be run from my start_work
      # script and should also be periodically run throughout the day. [maybe every
      # time I'm about to run coverage/push?])


      Anybody have any ideas?







      bash shell-script shell git






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Feb 28 at 6:13









      Rui F Ribeiro

      41.8k1483142




      41.8k1483142










      asked Feb 28 at 2:34









      David KiarieDavid Kiarie

      32




      32




















          2 Answers
          2






          active

          oldest

          votes


















          1














          You should use git-merge-base’s --is-ancestor test:



          if git merge-base --is-ancestor origin/master master; then
          echo Empty
          else
          echo "Don't forget to rebase!"
          fi





          share|improve this answer























          • This worked for me. Thank you!

            – David Kiarie
            Feb 28 at 16:30


















          0














          Instead of looking at the exit status, you could look at the actual output



          eg



          git fetch &> /dev/null
          diffs=$(git diff master origin/master)

          if [ -z "$diffs" ]
          then
          echo "Empty"





          share|improve this answer
























            Your Answer








            StackExchange.ready(function()
            var channelOptions =
            tags: "".split(" "),
            id: "106"
            ;
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function()
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled)
            StackExchange.using("snippets", function()
            createEditor();
            );

            else
            createEditor();

            );

            function createEditor()
            StackExchange.prepareEditor(
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: false,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: null,
            bindNavPrevention: true,
            postfix: "",
            imageUploader:
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            ,
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            );



            );













            draft saved

            draft discarded


















            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f503473%2fcheck-via-shell-script-if-git-repositorys-master-branch-is-behind-origin%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown

























            2 Answers
            2






            active

            oldest

            votes








            2 Answers
            2






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            1














            You should use git-merge-base’s --is-ancestor test:



            if git merge-base --is-ancestor origin/master master; then
            echo Empty
            else
            echo "Don't forget to rebase!"
            fi





            share|improve this answer























            • This worked for me. Thank you!

              – David Kiarie
              Feb 28 at 16:30















            1














            You should use git-merge-base’s --is-ancestor test:



            if git merge-base --is-ancestor origin/master master; then
            echo Empty
            else
            echo "Don't forget to rebase!"
            fi





            share|improve this answer























            • This worked for me. Thank you!

              – David Kiarie
              Feb 28 at 16:30













            1












            1








            1







            You should use git-merge-base’s --is-ancestor test:



            if git merge-base --is-ancestor origin/master master; then
            echo Empty
            else
            echo "Don't forget to rebase!"
            fi





            share|improve this answer













            You should use git-merge-base’s --is-ancestor test:



            if git merge-base --is-ancestor origin/master master; then
            echo Empty
            else
            echo "Don't forget to rebase!"
            fi






            share|improve this answer












            share|improve this answer



            share|improve this answer










            answered Feb 28 at 12:54









            Stephen KittStephen Kitt

            178k24403481




            178k24403481












            • This worked for me. Thank you!

              – David Kiarie
              Feb 28 at 16:30

















            • This worked for me. Thank you!

              – David Kiarie
              Feb 28 at 16:30
















            This worked for me. Thank you!

            – David Kiarie
            Feb 28 at 16:30





            This worked for me. Thank you!

            – David Kiarie
            Feb 28 at 16:30













            0














            Instead of looking at the exit status, you could look at the actual output



            eg



            git fetch &> /dev/null
            diffs=$(git diff master origin/master)

            if [ -z "$diffs" ]
            then
            echo "Empty"





            share|improve this answer





























              0














              Instead of looking at the exit status, you could look at the actual output



              eg



              git fetch &> /dev/null
              diffs=$(git diff master origin/master)

              if [ -z "$diffs" ]
              then
              echo "Empty"





              share|improve this answer



























                0












                0








                0







                Instead of looking at the exit status, you could look at the actual output



                eg



                git fetch &> /dev/null
                diffs=$(git diff master origin/master)

                if [ -z "$diffs" ]
                then
                echo "Empty"





                share|improve this answer















                Instead of looking at the exit status, you could look at the actual output



                eg



                git fetch &> /dev/null
                diffs=$(git diff master origin/master)

                if [ -z "$diffs" ]
                then
                echo "Empty"






                share|improve this answer














                share|improve this answer



                share|improve this answer








                edited Feb 28 at 2:51

























                answered Feb 28 at 2:44









                Stephen HarrisStephen Harris

                26.9k35181




                26.9k35181



























                    draft saved

                    draft discarded
















































                    Thanks for contributing an answer to Unix & Linux Stack Exchange!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid


                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.

                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function ()
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f503473%2fcheck-via-shell-script-if-git-repositorys-master-branch-is-behind-origin%23new-answer', 'question_page');

                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown






                    Popular posts from this blog

                    How to check contact read email or not when send email to Individual?

                    Displaying single band from multi-band raster using QGIS

                    How many registers does an x86_64 CPU actually have?