如何解决 bbdiff 未用作我的 git difftool(在 macOS 上)的问题?

问题描述 投票:0回答:1

阅读完使用 .gitconfig 配置 diff 工具后,我将我的

~/.gitconfig
设置为包含以下内容:

[diff]
    tool = bbdiff
[difftool "bbdiff"]
    cmd = /usr/local/bin/bbdiff --wait --resume "$LOCAL" "$REMOTE"

但是当我运行

git difftool
git difftool somefile.ext
时,我只是将差异转储到标准输出(彩色)。我如何找出 bbdiff 没有被调用的原因?

注意,我使用的是 macOS 10.15.6 及其默认 zsh 和 git 版本 2.28.0。

更新:(评论中问题的答案)

回复zrzka的第二条评论:

✗ git config -l | fgrep diff
diff.tool=bbdiff
difftool.bbdiff.cmd=/usr/local/bin/bbdiff --wait --resume $LOCAL $REMOTE

回应zrzka的第三条评论:

✗ git difftool --tool-help
'git difftool --tool=<tool>' may be set to one of the following:
        opendiff
        vimdiff
        vimdiff2
        vimdiff3

    user-defined:
        bbdiff.cmd /usr/local/bin/bbdiff --wait --resume $LOCAL $REMOTE

The following tools are valid, but not currently available:
        araxis
        ...

更新#2:

以防万一它是相关的,我不知道为什么我在 iTerm (或终端)中运行的所有 git 命令都通过管道传输

less
git branch
git diff
都会在一页后停止,并且
h
会显示“较少命令摘要”。但
git difftool
并未通过
less
进行管道传输。

更新#3:

根据zrzka评论的建议,我创建了

/usr/local/bin/foo

✗ cat /usr/local/bin/foo
#!/usr/bin/env bash
echo "Foo $@"
✗ ll /usr/local/bin/foo
-rwxr-xr-x  1 dspitzer  admin    34B Aug 13 13:09 /usr/local/bin/foo

我在我的

.gitconfig
中配置了它:

✗ cat ~/.gitconfig
[user]
    name = Daryl Spitzer
    email = [email protected]
[pager]
    diff = false
[diff]
    tool = foo
[difftool]
    prompt = false
[difftool "foo"]
    cmd = /usr/local/bin/foo "$LOCAL" "$REMOTE"

但是

git difftool
只是输出到标准输出。

问: git 在某处有日志吗?

git macos bbedit
1个回答
0
投票

我发现这篇文章似乎大部分都有效。 https://twitter.com/markjgardner/status/1544706759859879936

所以现在我有:

[diff]
    tool = bbdiff
    guitool = bbdiff
[difftool "bbdiff"]
    path=/usr/local/bin
    cmd=bbdiff --wait --resume $LOCAL $REMOTE

请注意,我以前有过这个:

[difftool]
    prompt = false
    trustExitCode = true

除了

[difftool "Kaleidoscope"]
部分,所以我必须移动
prompt
trustExist[difftool "Kaleidoscope"]
部分。

整个部分现在看起来像这样:

[diff]
    tool = bbdiff
    guitool = bbdiff
[difftool "bbdiff"]
    path=/usr/local/bin
    cmd=bbdiff --wait --resume $LOCAL $REMOTE
[difftool "Kaleidoscope"]
    cmd = ksdiff --partial-changeset --relative-path \"$MERGED\" -- \"$LOCAL\" \"$REMOTE\"
    prompt = false
    trustExitCode = true

有趣的是,尽管 X 帖子说“在一个 Mac 窗口中而不是一次在一个文件中”,我仍然看到 BBEdit 一次打开一个窗口。可能这只是我错误的 BBEdit 设置。

© www.soinside.com 2019 - 2024. All rights reserved.