Как я могу увидеть сгенерированный xltrail diff книги Excel в Beyond Compare? - PullRequest
0 голосов
/ 25 октября 2018

Я использую Git для Windows с расширением xltrail , чтобы обеспечить читабельный вывод при использовании git diff <Excel workbook>.Я также использую графический инструмент сравнения / слияния Beyond Compare 4 Pro , который работает при использовании git difftool и обеспечивает приятный интерфейс сравнения различий и трехстороннего слияния.

Однако, когда я запускаю git difftool <Excel workbook>, я получаю нормальный вывод git diff без приглашения открыть Beyond Compare.Как я могу заставить Git, xltrail и Beyond Compare работать вместе?

Edit # 1

Вот полный пример того, как это не работает:

$ git config diff.tool; git config difftool.bc.path; git config difftool.prompt
bc
c:/Program Files/Beyond Compare 4/bcomp.exe
false


$ cat .git/config
[core]
        repositoryformatversion = 0
        filemode = false
        bare = false
        logallrefupdates = true
        symlinks = false
        ignorecase = true
[diff "xltrail"]
        command = git-xltrail-diff.exe
[merge "xltrail"]
        name = xltrail merge driver for Excel workbooks
        driver = git-xltrail-merge.exe %P %O %A %B


$ cat ~/.gitconfig
# This is Git's per-user configuration file.

[user]
        name = Andrew Keeton
        email = AKeeton@example.com

[push]
        default = simple

[alias]
        co  = checkout
        ci  = commit
        cam = commit -am
        st  = status
        br  = branch

        # short log
        shlog = log --pretty=format:\"%C(yellow bold)%h%Creset %ad %C(cyan)|%Creset %s%C(magenta)%d%Creset %C(bold)[%an]%Creset\" --date=short --name-only
        hist  = log --pretty=format:\"%C(yellow bold)%h%Creset %ad %C(cyan)|%Creset %s%C(magenta)%d%Creset %C(bold)[%an]%Creset\" --date=short --graph

[diff]
        tool = bc

[difftool "bc"]
        path = c:/Program Files/Beyond Compare 4/bcomp.exe

[difftool]
        prompt = false


$ git st
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   workbook.xlsm
        modified:   README.md

no changes added to commit (use "git add" and/or "git commit -a")


$ git diff README.md
diff --git a/README.md b/README.md
index a052e20..3fd700d 100644
--- a/README.md
+++ b/README.md
@@ -40,6 +40,11 @@

 ## Tips

+* Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+* Curabitur a dui eu massa feugiat varius tempor eget tellus.
+* Nullam et fringilla eros.
+* Etiam euismod ipsum enim, non molestie nunc varius eu.
+
 * In Excel, press `CTRL+G` to open the *Go To* window.  This makes it easy to find the various tables and "anchors."

 ## xltrail


$ git difftool README.md
<See screenshot of README.md in Beyond Compare 4>


$ git diff workbook.xlsm
diff --xltrail a/workbook.xlsm b/workbook.xlsm
--- a/workbook.xlsm/VBA/Module/modWorksheet
+++ b/workbook.xlsm/VBA/Module/modWorksheet
@@ -14,6 +14,7 @@
     Dim dDouble1 As Double
     Dim dDouble2 As Double
     Dim dDouble3 As Double
+    Dim sString1 As String
     Dim dDouble4 As Double

     Dim iInteger1 As Integer



$ git difftool workbook.xlsm
diff --xltrail a/workbook.xlsm b/workbook.xlsm
--- a/workbook.xlsm/VBA/Module/modWorksheet
+++ b/workbook.xlsm/VBA/Module/modWorksheet
@@ -14,6 +14,7 @@
     Dim dDouble1 As Double
     Dim dDouble2 As Double
     Dim dDouble3 As Double
+    Dim sString1 As String
     Dim dDouble4 As Double

     Dim iInteger1 As Integer

СкриншотREADME.md в Beyond Compare 4

Screenshot of README.md in Beyond Compare 4

Ответы [ 2 ]

0 голосов
/ 21 января 2019

Между тем, это также работает с SourceTree , который бесплатен в отличие от BeyondCompare.

Просто убедитесь, что обновили до последней версии SourceTree, пока git-xltrail установлен и активирован.Вам даже не нужно изменять какие-либо настройки, это должно просто работать.

Подробнее см. В моем блоге здесь: https://dev.to/fzumstein/how-to-diff-excel-vba-code-in-sourcetree-git-client-36k

0 голосов
/ 02 ноября 2018

Полное решение (добавлено автором вопроса)

Создайте исполняемый скрипт xltrail-bc-diff.sh в существующей директории C:\Users\<User>\AppData\Local\Programs\Git xltrail\:

#!/bin/bash
#
# xltrail-bc-diff.sh massages the output of git-xltrail-diff.exe and passes it
# into Beyond Compare in "Text Patch" mode.
#
# Input arguments from `git diff` are:
#    $1   $2       $3      $4       $5       $6      $7
#    path old-file old-hex old-mode new-file new-hex new-mode

path="$1"
tempDiffPath=`mktemp --suffix=".diff"`

# xltrail's diff output is color-coded with no option to remove it
# (see https://github.com/ZoomerAnalytics/git-xltrail/issues/30) so we use
# sed to strip the color codes.
git-xltrail-diff.exe $@ | sed 's/\x1b\[[0-9;]*m//g' > $tempDiffPath

BCompare.exe -fv="Text Patch" $tempDiffPath

Добавьте следующее в ваш файл конфигурации git:

[diff "xltrail-bc"]
    command = xltrail-bc-diff.sh

В хранилище должен быть файл .gitattributes, созданный xltrail для связи файлов Excel с инструментами сравнения и слияния xltrail.Измените записи различий, чтобы использовать xltrail-bc:

*.xla diff=xltrail-bc
*.xlam diff=xltrail-bc
*.xls diff=xltrail-bc
*.xlsb diff=xltrail-bc
*.xlsm diff=xltrail-bc
*.xlsx diff=xltrail-bc
*.xlt diff=xltrail-bc
*.xltm diff=xltrail-bc
*.xltx diff=xltrail-bc

И теперь git diff <Excel workbook> должен открыться в Beyond Compare.


Оригинальный ответ

Во-первых,вам нужно настроить ваш git на что-то вроде этого:

git config --global diff.tool bc4
git config --global difftool.bc4.cmd "\"C:/Program Files (x86)/Beyond Compare 4/BCompare.exe\" \"\$LOCAL\" \"\$REMOTE\""
git config --global difftool.prompt false

Затем вы можете проверить / отредактировать файл .git / config и убедиться, что что-то подобное:

[diff]
tool = bc4

Если этого недостаточно, пожалуйста, отправьте файл .git / config .

Edit, для дальнейших нужд.Кажется, что в принципе невозможно подключить xtrail и Beyond Compare таким образом.Я с успехом воспроизвел вашу проблему.Хотя, возможно, что-то можно сделать в файле .gitattributes, но безуспешно.

Итак ... единственное возможное, сложное решение - это создать свой собственный скрипт diff и подключить всеинструменты вместе.

Со своей стороны, я пытался использовать скрипт GNU / Bash (вы можете получить поддержку установки Git Bash на Windows), но вы можете создать .bat.

Во-первых, вам нужно обновить файл конфигурации .git / config , чтобы указать путь к новому файлу скрипта, например:

[diff "myComplexDiff"]
    command = C:/Users/XXX/Documents/complexGitDiff.sh

Затем вам нужно связатьРасширение файла с помощью этого diff, обновляя ваш .gitattributes файл, что-то вроде (для любого необходимого расширения):

*.xls diff=myComplexDiff

А затем скрипт, который может выглядеть следующим образомэто:

#!/bin/bash -x
# Sample of information given by git
# b851185776b7826a6cc82d3aa6a8d53fa47e0c26 100644 simpleTest.xls 0000000000000000000000000000000000000000 100644
fileName="$1"
tmpFile="/tmp/"$( date +'%s')"$fileName.diff"
git-xltrail-diff.exe $@ >"$tmpFile"
c:\\Program\ Files\\Beyond\ Compare\ 4\\bcomp.exe "$fileName" "$tmpFile"

На самом деле я не нашел нужной опции для Beyond Compare, чтобы принять вывод diff из git-xltrail-diff.exe, но это единственное, что осталось сделать.

...