适用于 Linux 的 Windows 子系统 git mergetool meld UnicodeDecodeError

Posted

技术标签:

【中文标题】适用于 Linux 的 Windows 子系统 git mergetool meld UnicodeDecodeError【英文标题】:Windows Subsystem for Linux git mergetool meld UnicodeDecodeError 【发布时间】:2019-01-09 13:59:21 【问题描述】:

我是 WSL(适用于 Linux 的 Windows 子系统)用户。 我使用 WSL 在我的主机和远程编译机 (RedHat) 之间简单地同步源代码。我找到了这样一篇文章:

https://www.deptagency.com/en-gb/story/using-meld-as-a-git-merge-tool-on-windows/

从 WSL 中触发和运行 GUI 窗口。

但是按照本文中的步骤进行操作后,我收到了这个错误消息(我已经检查过 windows EoL 是否通过):

Traceback(最近一次调用最后一次): 文件“bin/meld”,第 328 行,在结构化日志适配器中 UnicodeDecodeError:“utf-8”编解码器无法解码位置 103 中的字节 0x93:无效起始字节

你有什么想法吗?

提前致谢, BR

【问题讨论】:

这里有一个错误报告:Meld Windows shows error when git external call it (#222) · Issues · GNOME / meld · GitLab,它看起来像一个绑定错误。 【参考方案1】:

您是否尝试过当前版本的 Meld https://meldmerge.org/。我按照提供的链接https://www.deptagency.com/en-gb/story/using-meld-as-a-git-merge-tool-on-windows/ 没有任何问题。

详细步骤

从https://meldmerge.org/ 下载并在 Windows 10 上安装 meld

导航到您的 wsl 终端 创建一个脚本将内容传递给 meld

nano meld
#!/bin/bash

/mnt/c/Program\ Files\ \(x86\)/Meld/Meld.exe $@

使脚本可执行

sudo chmod +x meld

将脚本移至/usr/bin

sudo mv meld /usr/bin

然后,在~/.gitconfig 添加/编辑以下内容

[merge]
    tool = meld
[mergetool "meld"]
    cmd = meld --diff \"$BASE\" \"$LOCAL\" \"$REMOTE\" --output \"$MERGED\"

导航到有合并冲突的 git 目录

运行

git mergetool

享受吧!

【讨论】:

【参考方案2】:

我不确定它是否会回答这个问题,但我需要在 WSL2 中运行 meld。尝试过apt install meld,但因为它是 Windows,所以它不运行 GTK 应用程序。所以我所做的就是简单地在 Windows 版本的 Meld 之间使用符号链接:

ln -s /mnt/c/Program\ Files\ \(x86\)/Meld/Meld.exe /usr/local/bin/meld

瞧!

【讨论】:

效果很好。正是我在 Win10 上的 WSL2 所需要的。

以上是关于适用于 Linux 的 Windows 子系统 git mergetool meld UnicodeDecodeError的主要内容,如果未能解决你的问题,请参考以下文章

适用于 Linux 的 Windows 子系统 git mergetool meld UnicodeDecodeError

适用于Linux的windows子系统

WSL(Windows Subsystem for Linux) 适用于Linux的Windows子系统

带有适用于 Linux 的 Windows 子系统的 Windows 10 上的 VSCode 中的 Typescript 构建任务

无法弄清楚如何使用适用于 Linux 和 composer 的 Windows 子系统运行 box\Spout

安装Windows Linux 子系统的方法:适用于windows 11 版本