Answers:
存储空间很便宜,因此对于为什么应该或不应该签入文件,这并不是一个令人信服的论点。
相反,您可以诉诸SCM。SCM跟踪的每个文件都表示需要管理团队正在执行的并行,分布式更改。在两个团队成员尝试更改同一文件之前,这些都不是很明显。解决这些更改是SCM真正的目的,可以防止意外覆盖另一位开发人员的工作,并希望可以自动化这些更改的合并过程。
合并二进制文件通常是一个真正的挑战,因为通用合并工具没有明智的方法来猜测合并的二进制文件应如何工作。除非经过专门设计以识别特定文件类型,否则它对文件中的索引或偏移指针的工作方式知之甚少。
这意味着由开发人员手动合并二进制文件,然后告诉SCM该文件已被如此合并。由于是开发人员执行的,因此合并可能不会真正涵盖之前签入的所有更改,并且由于文件是二进制文件,因此没有自动的方法来验证合并。
对于真正代表项目来源的二进制格式(例如艺术品),这是一个不幸的步骤,但却是必需的步骤。但是,构建输出不是源。无需合并它们,因为可以合并源,并且可以重新生成生成的构建输出。跟踪和管理这些更改是100%的浪费。它浪费了SCM的资源,虽然不是很多,但也浪费了开发人员克服虚假合并失败的时间。开发人员时间非常昂贵,任何浪费时间的都是癌症。
另一方面,在特定情况下,应该将构建输出存档。可能已经无限期地保留了已经交付或部署的项目的任何版本。由于客户将拥有确切的版本,因此拥有客户遇到问题的实际版本的逐字节副本可以使支持该客户变得容易得多。
该备份可能不应该与源代码位于同一存储库中,因为它们通常遵循不同的时间表,并且具有基本不同的结构。
使用SCM的主要优点之一是您可以从过去的任何时间重建系统。因此,将最终版本存储在SCM中是没有意义的,因为您只需签出修订号并进行构建即可。
您提到依赖项...应该设置您的SCM,以便您可以对新计算机(具有开发环境)进行干净签出,按构建,然后就可以构建系统而无需安装其他任何东西。因此,在您的SCM中保留二进制依赖性是一个好主意。图书馆很少变化,因此不会占用太多空间。
几乎没有人这样做。