Svn 库文件和媒体文件是否应存储在存储库中?

Svn 库文件和媒体文件是否应存储在存储库中?,svn,version-control,Svn,Version Control,我使用的是SVN,但这个问题与任何版本控制系统有关 在开发使用不断更改的媒体文件(图像、视频、xml文件等)的应用程序时,几乎每个应用程序版本(或修订版)都使用一组与这些文件的以前(或将来)版本不兼容的唯一媒体文件。当此应用程序使用与以前或将来版本不兼容的第三方库的某些版本时。将所有这些二进制文件存储在存储库(例如SVN)中是否是一种常见做法 我想是的 优点: 如果项目很大,并且其中的一些功能被破坏,或者出现了一个bug,那么您可以随时进行“更新到修订版”,并找到bug出现的地方。把它修好 签

我使用的是SVN,但这个问题与任何版本控制系统有关

在开发使用不断更改的媒体文件(图像、视频、xml文件等)的应用程序时,几乎每个应用程序版本(或修订版)都使用一组与这些文件的以前(或将来)版本不兼容的唯一媒体文件。当此应用程序使用与以前或将来版本不兼容的第三方库的某些版本时。将所有这些二进制文件存储在存储库(例如SVN)中是否是一种常见做法

我想是的

优点:

  • 如果项目很大,并且其中的一些功能被破坏,或者出现了一个bug,那么您可以随时进行“更新到修订版”,并找到bug出现的地方。把它修好
  • 签出和构建应用程序很容易,因为您在工作副本中拥有构建应用程序所需的一切
缺点:

  • SVN服务器将需要大量的硬盘空间来存储所有版本。有人说它会变得迟钝
  • SVN更新很慢

仅在存储库中存储源代码文件还有其他好处吗?

这可能不适用于图像、视频和XML文件,但我们将第三方库存储在单独的SVN存储库中,所有内容都在主干中。它工作得很好

开发人员可以将其签出到本地机器,或者在编译时通过网络获取所需的文件。我们已经修改了VisualStudio项目文件,以指向一个本地环境变量,该变量将SDK中的二进制文件链接到它们所在的位置

假设文件位于名为OURSDK的本地工作副本中,则环境变量为:

>set OURSDK
OURSDK=C:\Source\OURSDK

我们修改了C++和C++项目文件,使用这些宏代替相对路径:

AdditionalIncludeDirectories=""$(OURSDK)\log4cxx\src\main\include"$(OURSDK)\xerces-c\include";"$(OURSDK)\TSE-RegExp\Include""
我们以这种方式维护了产品的三个版本,而与第三方库的链接几乎从来都不是问题。唯一的一个小问题是,回购协议实际上是“只写”的,即图书馆进入并停留在那里,因此随着时间的推移,它慢慢变大。完全值得。:)