【问题标题】:git difftool: how to compare zip filesgit difftool:如何比较 zip 文件
【发布时间】:2016-08-10 01:06:56
【问题描述】:

我正在尝试使用“git difftool”比较二进制文件。该文件也是暂存的,但似乎这并不重要。所以我正在使用类似下面的东西:

git difftool --staged /path/to/file

我的 .gitconfig 配置如下:

[difftool "bc3"]
    path = C:/Program Files (x86)/Beyond Compare 3/BComp.com
    cmd = BComp.com \"$LOCAL\" \"$REMOTE\" -lefttitle="Remote" -righttitle="$BASE" -lro
[diff]
    tool = bc3
[difftool]
    prompt = false

因此,当我运行 git difftool 时,它会按预期打开 Beyond Compare,但是,我收到一个错误,即基本二进制文件不存在。修改后的本地副本已正确加载到工具中。

我注意到 *.bcpkg(Beyond Compare 设置文件,基本上是一个 zip 文件)以及常规 *.zip 文件。但似乎对 *.exe 文件工作正常。我注意到的是 git difftool 不应该返回,除非 Beyond Compare 关闭,因为如果它返回它创建的临时文件将被删除。但如果是 zip 文件,它总是会立即返回。

顺便说一下,所有其他文件类型的差异对我来说都很好。我使用的是 Windows 7(64 位),如您所见,我配置了 Beyond Compare 3。

【问题讨论】:

  • 据我了解,Git 不能很好地处理二进制文件的差异。这就是为什么许多人不使用 Git 对二进制文件进行版本控制的原因。我看不出你的问题有什么出人意料的地方。
  • 太令人失望了...我可以提取“基础”文件和存储库之外的暂存文件以使用我的工具手动比较它们吗?
  • 如果“基础”文件是纯文本、源代码等而不是二进制文件,那么应该可以。
  • 所以要清楚你的意思是,如果文件是文本文件,我可以提取基本文件(与最后提交状态匹配的文件)和/或暂存区域中的文件,回购之外的某个地方。并通过任何方式比较它们。但同样的机制不适用于二进制文件?
  • @TimBiegeleisen 确实 Git 不能很好地处理二进制差异,但是 OP 正在配置一个外部工具来处理这些差异,这很好。

标签: git git-diff beyondcompare3


【解决方案1】:

这在 Beyond Compare 4 中已修复。Beyond Compare 4 支持从 git 区分 zip 文件。

Beyond Compare 3 不支持从 git 区分 zip 文件。它将失败并显示错误消息:Folder Not Available: C:\Users\username\AppData\Local\Temp\42Ycl9_filename.zip

如果您想评估 Beyond Compare 4 以测试 zip 文件差异,请运行安装程序并选择 创建便携式安装 并安装到桌面上的文件夹中。这不需要管理员权限。然后运行 ​​git config --global difftool.bc3.path "c:/users/username/desktop/Beyond Compare 4/bcomp.exe" 让 git 使用便携式安装。完成测试后,只需删除桌面上的文件夹即可删除版本 4 便携式安装。

要在评估第 4 版试用版后升级您的许可证,请在 Scooter Software 网站上填写 upgrade form

【讨论】:

  • 这不正确...我可以使用 TortoiseSVN 很好地区分 zip 文件,我已经以相同的方式连接了 Beyond Compare。此外,如果您仔细观察,我使用的是 BComp.com 而不是 BComp.exe,它在关闭比较选项卡之前不会返回。即使在 Beyond Compare 已有实例已经在运行的情况下也是如此。
  • 刚刚意识到你是 Scooter Software 的一名员工,所以很可能我是错的:p
  • 我和一位同事讨论过这个问题,行为可能已经从 BC3 更改为 BC4。我今天会做一些调查并更新我的帖子。
  • 嗯,就是这样,尝试使用 BC4 有效。非常感谢。 BC3 的任何解决方法?
  • BC3 没有好的解决方法。如果您使用的是版本 3,则必须将 zip 文件的两个修订版签出到临时文件夹,然后在 git 之外启动比较。
【解决方案2】:

FWIW,this article 展示了如何配置 git 以在运行标准差异之前解压缩具有选定扩展名的文件。也许有帮助。

【讨论】:

  • 我想知道这种技术是否实用。我认为它对于简单的情况已经足够了,但是包含许多文件的 zip 文件将很难像这样区分。一种更直观的方式来区分它们,就像 Beyond Compare 在文件夹比较视图中所做的那样。
  • @WaqasIlyas,​​哦,对,绝对。这种特殊技术适用于基本上是一个(有点冗长)文件然后压缩(用于压缩)的文件格式,例如“新”Office 格式 .docx、.xlsx 等。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-15
  • 2023-03-03
  • 2012-10-08
  • 2021-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多