1

我想将 Microsoft Visio 2013 图表存储在我的 Git 存储库中。这些图表后来被转换为 SVG 和 PDF,用于使用 Sphinx 构建的软件文档。

不幸的是,开放文档文件是二进制文件(实际上它们是 ZIP 档案),Git 不太喜欢二进制文件。

我意识到,如果我解压缩我的vsdx文件,我会得到大量xml使用 Git 更易于管理的文件。

问题是我需要将一些脚本挂钩到 Git,以便仅将解压缩的打开文档文件存储在存储库中,但将压缩版本保留在工作目录中。这对于减少整体存储库占用空间是否可行且可取?

目标是,如果我在 Visio 图表上移动一个形状,我不想在我的存储库中几乎复制我的兆字节 vsd 文件。我想只有一行更改的 2 兆字节 XML 文件更有可能在 Git Packfiles 上被压缩。

那是对的吗?

4

1 回答 1

2

如果您担心处理大型 Visio 文件的内存问题,为什么不利用 git 的分布式特性并设置多个存储库呢?像这样。


Root Folder (Git Repo)
    .gitignore (that ignores the Visio Folder)
    Visio Folder (Also a Git Repo)

自由工作,毫无顾虑地提交您的 Visio 文件。然后,当您对更改感到满意时,只需将预期的文件移到目录下即可。提取并提交它。这可能看起来不优雅,但是如果您的 Visio 文件夹因内存问题而无法使用,您可以直接粉碎它,因为您需要的一切都在它下面的 git 存储库中。(防止大型二进制文件占用存储库空间的唯一真正方法是不提交它们。)

如果此解决方案过于粗糙,请将 Visio 文件夹设置为根文件夹的远程文件夹。让您的 Visio 文件夹包含两个单独的分支,一个包含包含您的巨型文件的提交,另一个不包含。只需从没有 Visio 文件的分支中获取。如果这仍然不能让您控制您需要设置遥控器、子文件夹等,直到您获得可以为您产生有意义的工作流程和历史记录的存储库结构。

添加本地远程


cd 'Root Folder'
git remote add visiofiles 'Visio Folder'

如果您喜欢冒险,您可以研究 git 的“干净”和“涂抹”过滤器(当您提交和签出时它们会在文件上调用——它们旨在让您使用与您的团队不同的缩进规则,但是您可能能够压缩和解压缩东西)。如果您要提取 Visio 文件以便更好地检查更改,您可能会利用 git 的 textconv 配置文本优势。Git 让您在文件上调用自定义差异,一种方法是将该文件转换为字符串并在其上运行差异。这确实需要您对 .gitconfig 和 .gitattributes 文件有点熟悉,并找到适合字符串转换的程序。

但是,您描述的问题是内存问题,因此您可用的挂钩和配置可能不是必需的。

于 2017-07-12T22:20:11.383 回答