PDF文件何时应该被跟踪到Git存储库中,何时不应该。

18
我正在开发一个LateX包 (http://www.openlilylib.org/lilyglyphs),其中包含许多小的PDF文件。目前只有几十个,但随着包和用户基础的增长,可能会有数百个(但不太可能超过1000个)。
PDF文件通常只有几KB大小,但我不知道是否要在Git仓库中跟踪它们。这些文件随时可能会更改,但可能不会太频繁。
通常不建议跟踪无法差异化的二进制文件,但我也读到过对于较小的文件和较小的总体积,这并不重要。我认为最终PDF将总计不超过几MB。
该包将可通过下载或Git仓库获取,我更喜欢后者,因为使用该包自然会导致贡献...
当前,在克隆Git仓库时,必须使用Python和LilyPond符号软件重新构建pdfs,因此风险相当高-这就是为什么我希望直接在repo中拥有pdfs的原因。
任何想法?
编辑以回应答案/评论: pdf文件是从存储库中的源代码生成的,这就是为什么我不愿意在Git中跟踪它们的原因。
但是:
  • PDF文件对使用包来说是必需的,所以用户需要拥有它们
  • 要生成pdfs,需要Python和LilyPond,而且两者都不是使用该软件包所必需的。因此,要求某人安装两个程序才能安装我的包可能是一个太大的负担。
    我不认为需要运行安装脚本的人会有问题,但软件依赖性可能太高?
  • 目前,生成pdfs的时间合理,因为只有几十个文件。但是随着文件数量的增加,这个时间可能变得不可接受。

PDF文件在更新/修正时会发生变化。这种情况不会经常发生,我认为通过跟踪源代码已经可以解决此问题。但是每当有新版本的LilyPond可用时(可能每两到四周),PDF也会发生变化。因此,尽管源代码保持不变,PDF将定期更改-这是不适合使用Git进行跟踪的明确指标。
另一方面,我们讨论的是可能只有几百个几KB的文件,因此我不知道是否值得担心这个问题。


1
这个问题没有明确的答案。 - Ben
那么PDF文件是由存储库中的源代码生成的吗?通常情况下,您不希望对构建输出进行版本控制。问题不在于它们是二进制文件,而是在同一存储库中存在两个竞争的真相来源。 - Peter Lundgren
PDF文件是由代码库的源代码生成的。这就是为什么我不愿意跟踪它们的原因。请查看我编辑后的问题以获取更多细节。 - uli_1973
3个回答

8
如果文档不会改变,就没有理由在git中跟踪其更改。没有版本修订,就不需要进行版本控制。
但如果它们随着时间的推移发生了变化,并且有人可能因为任何原因需要查看旧的文档版本,请考虑以下问题:
1. 重新创建旧版本的文档是否不可能或不可行? 2. 版本控制之外是否有任何基础数据发生了变化,或者仍处于相同状态? 3. 文档中的数据是否与源代码发布相关联?
如果这些问题的答案是肯定的,则它们可能是适合使用git进行版本控制的好选项。

嗯,这有点困难:文件会随着时间的推移而发生变化。但是如果有人需要旧版本,他可以从源代码重新创建它们。更多细节请参见我编辑后的问题。 - uli_1973

3
问题是:你想要仅使用git进行源代码管理/跟踪/同步,还是也想要将其用于分发?对于小型项目,这种方法可以简化事情,但对于大型项目,它会使存储库变得臃肿。

我想要将它用于分发(虽然也会有“二进制”版本发布),因为这是贡献的方式。我认为这个项目比较小,但我仍然不确定追踪PDF文件会产生多大的影响。 - uli_1973
1
我认为影响不会太大。但是 Git 的好处是,你可以在一个临时克隆上轻松测试添加所有文件、克隆仓库和检查它们所需的时间。我有一种感觉它会很快。 - mnagel

2

我知道这是一篇旧帖子,但我在搜索时找到了它,其他人也可能会找到。以下是我发现的一些选项

正如已经指出的那样,很多情况取决于这些源文件是否会随时间改变。

如果它们不改变(或者很少改变),您可以将它们的副本保存在您控制的服务器上或云存储选项上,并使您的安装脚本下载它们而不是生成它们。

这可能取决于用户是否安装了wget或curl,但大多数人都有,如果没有,您可以提示用户手动下载它们。

如果PDF与源频繁更改,您可以查看GIT LFS。我自己从未使用过它,但已经看到过它被使用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接