No announcement yet.

a Git integration problem.

  • Time
  • Show
Clear All
new posts

  • a Git integration problem.

    When one arbitrary BC3 Beyond Text Compare Window has opened.

    When I use git external to compare, example:

    GIT_EXTERNAL_DIFF=~/bin/git/git-diff-wrapper git diff --ignore-submodules -- Com100xf.Tests/Controllers/WebLinkControllerTest.cs

    It seem like, tmp directory(git generated temprary file) is not exist, so left panel complain file is not exist.

    But if not exist bc3 process when use git, it always work OK. (it seem generated three tmp files in tmp directory, included a file named: qBZEKD_WebLinkControllerTest.cs, this files is not be generaed when previous situation.

    my git-diff-wrapper script:
    Bcompare "$2" "$5" | cat

    above situation is appear in linux version 3.37 and cygwin.

  • #2

    For Cygwin's configuration, something we have recently seen is that you must give the difftool shortcut a different name. You cannot use "bc3". This is due to Git adding support for bc3 internally, expecting to be on either Windows or Linux, and handling additional features automatically if "bc3" is used.
    Aaron P Scooter Software


    • #3
      Here is an example (Windows)

      [difftool "bcCustom"]
      cmd = \"C:/Program Files (x86)/Beyond Compare 3/bcomp.exe\" "$(cygpath -w $LOCAL)" "$REMOTE"
      tool = bcCustom
      prompt = false
      tool = bcCustom
      prompt = false
      [mergetool "bcCustom"]
      #trustExitCode = true
      cmd = \"c:/program files (x86)/beyond compare 3/bcomp.exe\" "$LOCAL" "$REMOTE" "$BASE" "$MERGED"
      Aaron P Scooter Software


      • #4
        I will try, Thanks.

        But my problem is seem like irrelevant to gitconfig.

        I just use a script, it named: git-diff-wrapper, I set it to environment
        variable $GIT_EXTERNAL_DIFF. my script context in below:


        # diff is called by git with 7 parameters:
        # path old-file old-hex old-mode new-file new-hex new-mode

        opendiff "$2" "$5" | cat
        here I rename a Bcompare wrapper to name opendiff (not bc3), because,
        in linux, bc3 candidate is very behind, when use git mergetool, it autoguess always some vimdiff tools for me, and I don't want to modified .gitconfig for this propose. it seem work OK. ; ).

        anyhow, When I invoke a git diff commnad, (not git difftool command) like below:

        GIT_EXTERNAL_DIFF=~/bin/git/git-diff-wrapper git diff --ignore-submodules "$@"
        it seem have above trouble...

        my .gitconfig relative to diff or merge tool config in below:

        prompt = false
        prompt = false
        trustExitCode = true
        keepbackup = false
        Last edited by zw963; 30-May-2013, 01:21 AM.


        • #5
          Hi, I have understood your's example..

          Actually, before now, I want to modified.gitconfig to worked with my git mergetool,
          it seem like have some problem, It always point to Bcompare, But, this files in
          64 bit linux , is not worked, it need some wrapper.

          I just now change to bcCustom, make it point to my bc3 wrapper. (it use same name in linux and cygwin, it all worked Ok!! very Thanks.

          Another question.

          git config --global diff.tool bc3
          it add follow context to .gitconfig
          tool = bc3
          How can i to use this ?? I invoke git diff, it always use default diff.

          Because this, I use previous environment variable to realize this propose.

          when git diff, it use diff.
          when GIT_EXTERNAL_DIFF=~/bin/git/git-diff-wrapper git diff, it use bc3.

          How can I realize this according .gitconfig config ?
          Last edited by zw963; 30-May-2013, 02:41 AM.


          • #6
            Hi, I think it seem like should update
   help information.

            I change it to below, fix some error. for reference only

            Git for Linux

            For Git 1.7.8 and newer, edit the global config file to set:


            Create a shell script file "" with the following content:
            # diff is called by git with 7 parameters:
            # path old-file old-hex old-mode new-file new-hex new-mode
            "<path_to_bc3_executable>" "$2" "$5" | cat

            In a console window enter the command:
            $ git config --global diff.tool bcCustom
            $ git config --global difftool.trustExitCode true
            $ git config --global difftool.bcCustom.cmd '<path_to_wrapper_script> $LOCAL $REMOTE'

            Merge v3 Pro
            Add the Beyond Compare 3 directory to the Windows PATH variable. Then:
            $ git config --global merge.tool bcCustom
            $ git config --global mergetool.trustExitCode true
            $ git config --global mergetool.bcCustom.cmd '<path_to_wrapper_script> $LOCAL $REMOTE $BASE $MERGED'
            i change mergetool.bcCustom.trustExitCode true to mergetool.trustExitCode true
            because the following section is invaild.
            [mergetool "bcCustom"]
            cmd = bc3 $LOCAL $REMOTE $BASE $MERGED
            trustExitCode = true
            prompt = false
            it need change to below, make it valid.
            prompt = false
            trustExitCode = true
            Last edited by zw963; 30-May-2013, 07:52 AM.


            • #7

              The Git For Linux section covers the Linux version of BC3 running with a Linux install of Git. Cygwin could/does introduce a difference in the directions needed. We wouldn't change the Linux section, but we might add a section for Cygwin.
              Aaron P Scooter Software


              • #8

                I can not found the difference between Cygwin and Linux.

                Here, we not talk about Cygwin, But my #4 problem is still exist.

                What I means is:

                When bc3 text compare windows have exist, If I open a tab with either
                following command form:

                GIT_EXTERNAL_DIFF=~/bin/git/git-diff-wrapper git diff
                git difftool
                left panel file can not be opened always.
                it have a tips:
                red ×, File Not Found(/tmp/????.???)

                It very not convenient, when I hope have more than one git diff the same times.
                Last edited by zw963; 30-May-2013, 01:53 PM.


                • #9

                  ??? #8 problem have no way to resolve ?
                  Last edited by zw963; 06-Jun-2013, 01:14 AM.


                  • #10

                    Sorry, I had difficulty parsing the issue you are currently having. Earlier you mentioned that switching to BCCustom worked, but now it is having trouble.

                    Does it work with the first tab, but won't work if you open multiple tabs at once?

                    Are you still using Cygwin? Or are you using Git for Linux on a native Linux OS? Or Git for Windows on a Windows OS? Each will have a different set of instructions to setup.
                    Aaron P Scooter Software


                    • #11
                      Sorry for my Pool english...

                      I use Cygwin and Cygwin's Git, and I use Linux and Linux Git Too.

                      >> Does it work with the first tab, but won't work if you open multiple tabs at once?

                      as exist a bc3 git diff process, the second process (is irrelevant with use TAB or not) is
                      not worked.


                      GIT_EXTERNAL_DIFF=~/bin/git/git-diff-wrapper git diff -- project/file1 ,
                      it Worked. not close this bc3 window, run below command:
                      GIT_EXTERNAL_DIFF=~/bin/git/git-diff-wrapper git diff -- project/file2
                      it not Worked.

                      >> Each will have a different set of instructions to setup.

                      It is not relevant with gitconfig. only use git-diff-wrapper script.
                      Last edited by zw963; 20-Jun-2013, 01:36 PM.


                      • #12
                        Sorry... Is still not enough clear ??


                        • #13
                          Sorry we didn't respond to this earlier.

                          On Windows you need to use "bcomp" instead of "bcompare" in your wrapper script. bcomp is a small launcher that waits for the comparison to complete before it exits. bcompare is the main program executable, and if another copy is running it will communicate with that copy and then exit immediately.
                          Zoë P Scooter Software


                          • #14
                            No solution?

                            I'm also having this problem after upgrading my linux mint from 13 to 17 (not cygwin). I'm using BC3 which is launched from a script stored as ~/bin/bcompare and I've followed the instructions to set up bc3 for git from here:


                            i'm using:

                            Linux minto 3.13.0-37-generic #64-Ubuntu athlon i686 GNU/Linux
                            git version 1.9.1
                            bcompare 3.3.13 (build 18981)

                            I can run bcompare from a shell and bc3 opens. but when i run git difftool the left window is, as the OP states, not displayed. instead a 'file not found' error is displayed instead. any advice to track the cause of this down?


                            • #15

                              Which set of instructions did you follow in that link: Git 1.8+ or Git 1.7.x? With newer versions of git, you do not need to define 'bcompare' as part of the configuration and would not manually edit the .gitconfig file or have a reference to 'bcompare'. Instead, you run these 2 commands:

                              $ git config --global diff.tool bc3
                              $ git config --global difftool.bc3 trustExitCode true


                              The "script stored as ~/bin/compare" you mention. Are you referring to "bcomp" or another script you've customized?
                              Aaron P Scooter Software