我正在使用 Adobe Premiere Pro 2018 进行视频编辑。我想用 git 来设置它,这样我就可以对项目文件进行版本控制。
项目文件 (.prproj) 是 XML 的 gzip。
当我执行 git diff 时,是否可以配置 git 来比较项目文件中的 XML?
我正在使用 Adobe Premiere Pro 2018 进行视频编辑。我想用 git 来设置它,这样我就可以对项目文件进行版本控制。
项目文件 (.prproj) 是 XML 的 gzip。
当我执行 git diff 时,是否可以配置 git 来比较项目文件中的 XML?
是的,您可以使用“textconv”过滤器,git 将使用它在显示时将文件转换为可区分的格式。看:
简而言之,您首先需要通过 git config 定义过滤器(始终未跟踪):
然后通过 .gitattributes (跟踪)或 .git/info/attributes (未跟踪)将其分配给 .prproj 文件:
(需要该
diff
属性才能完全启用差异,即告诉 git 该文件应被视为文本而不是二进制文件。)您还可以使用此方法制作更高级的转换器,例如,另外规范化和美化 XML(如果程序将所有内容都写成一行)。
但是,textconv 过滤器仅供显示。在 Git 中存储压缩文件仍然存在版本之间没有相似性的缺点,因此如果文件也很大,则会导致存储库随着每个版本而相应增长。(将其与文本文件进行比较,文本文件在版本之间通常非常相似,因此即使是很长的提交历史也可以非常有效地进行增量压缩。)
您可能想要使用“涂抹/清洁”过滤器,它们以类似的方式工作,但它们的结果是永久性的——也就是说,git 在内部存储一个“清洁”版本,并在结帐时将其转换回(涂抹)。配置看起来像:
属性文件看起来像:
这使您可以利用 Git 的增量压缩,但也有缺点,即每个克隆都必须在其 git 配置中配置过滤器(它不能自动分发)。如果有人在没有过滤器的情况下克隆了 repo,他们将需要
git checkout --renormalize
.同样,您可以扩展“干净”过滤器以美化 XML (xml_pp) 并使其以视觉上更好的方式进行区分。