【问题标题】:Git diff with external exiftool does not output anything带有外部 exiftool 的 Git diff 不输出任何东西
【发布时间】:2022-11-20 04:25:06
【问题描述】:

当我调用 git diff 时,我正在尝试使用 exiftool 从图像中获取一些元数据。我试图关注this,但我得到的唯一结果是

diff --git a/image.jpg b/image.jpg
index 4b0f38f..7fdca8e 100644
Binary files a/image.jpg and b/image.jpg differ

没有像他们声称的那样的 EXIF 数据,即使 exiftool image.jpg 工作并返回 EXIF 数据。

我将 *.jpg diff=exif 添加到.git 属性然后我运行了命令git config diff.exif.textconv exiftool,但是当我更改图像时,将它添加到暂存区并执行git diff --staged,这就是我得到的。

那么,这是一个错误,是文档错误还是为什么我没有得到我期望的差异?

【问题讨论】:

  • 问题似乎是您正在寻找二进制数据之间的差异。你能创建两个文本文件并运行类似的比较吗?
  • 我无法重现这个;对我来说很好用:git init test; cd test; curl http://placekitten.com/200/300 > kitten.jpg; git config diff.exif.textconv exiftool; echo '*.jpg diff=exif' > .gitattributes; git add .; git commit -m'First commit'; curl http://placekitten.com/400/300 > kitten.jpg; git add .; git diff --staged
  • @Thomas - ACK,但 OP 在提交 diff 时失败(如图所示),你也可以测试它吗?
  • @LazyBadger 我不明白。据我所知,OP 像我一样运行git diff --staged-staged 中的单个连字符显然是错字)。你想让我测试什么命令?
  • @Thomas - 2个变更集中的差异文件,我预计它会失败。但我可能是错的

标签: git diff exif


【解决方案1】:

如果你想报复一些结果,你必须使用适当的东西在里面合适的方式.

在您的情况下,如果您想拥有自定义差异工具,则必须确保该工具至少能够在 Git 之外以某种方式以所需的方式工作。仔细看了docs for CLI-interface of exif我看到了没有什么关于出于比较目的处理恰好 2 个对象:当 FILE 是目录名时,仅处理“单个文件”或“全部在目录中”。

为您的任务准备纯 exif 的命令行(<TOOL> [--OPTIONS] FILE1 FILE2 形式),只有在这种情况下,稍后才能将其转换为 diff-tool

【讨论】:

  • diff.*.textconv 提供的工具不需要接受两个文件,它只需要以某种方式将二进制文件转换为可区分的文本。
  • @Thomas - 是的,但是这个二进制文件必须是正确的处理 *.jpg diff= 的结果,不是吗?而且,因为它无论如何不同,exif FILE1 FILE2 必须做一点事,这不会发生,AFAICS
  • 运行我上面发布的复制命令,你自己看看 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-22
  • 2021-01-16
  • 2023-03-07
  • 2016-04-02
  • 2014-10-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多