涉及混合内容的项目的版本控制系统

涉及混合内容的项目的版本控制系统

我的问题是:可靠的简单的版本控制系统/机制/平台/...适用于内容如下的项目有效地整体的、不透明的东西?

我从事的大多数项目都包含以下文件类型的混合:

  1. 纯文本内容(C、Java、...、数据文件、bash 脚本、...)
  2. MS Office 文档(Word、Excel、Visio 等)
  3. 矢量图形文件(SVG、EPS 等)
  4. Simulink® 模型文件(.mdl,格式类似于 JSON)
  5. 我们定制的单元测试框架(生成的 XML 文件)
  6. ...其他具有类似限制的事物

目前我们总是把所有内容放在一个大型的 Subversion 存储库中。显然,这只适用于纯文本文件。其余所有内容在作为纯文本处理时都是无法合并的。

对于其中一些,我们确实在 subversion 之上使用了“托管”版本控制系统。例如,对于 MS Word 文档,我们使用“跟踪更改”功能。这实际上已成为我们针对 MS Word 文档的版本控制系统。然后,每当需要标记/交付文档的某个版本时,我们都会在 subversion 存储库中创建文档的副本。

类似地,有管理的方式来同时开发 Simulink 模型、同时创作矢量图形等等。

但你可以想象,我对这个工作流程很不满意。像“跟踪更改”这样的功能并不能阻止两个用户同时编辑同一个文档。两者的更改无法合并,合并需要手动完成(我甚至不会提到文档损坏)。Simulink 框架也是如此;真实的并发是不可能的。

这只是一个疼痛更不用说这是完全低效的,因为需要大量手动复制和处理文件才能保持所有东西都正确版本化——将所有内容放在 Subversion 存储库中只不过是通过电子邮件发送文档的一种便捷替代方法(这只对人们方便不是管理存储库...)。

像 Sharepoint 这样的工具可以解决 MS Word 文档的问题,但它不是一个通用的解决方案;我们仍然需要处理这些其他文件类型。像 subversion 插件/钩子/等这样的工具也可以工作,但很难做到正确,而且很难保持最新状态,此外,这可能是一项重大投资,因为我们可能需要为 Simulink 模型文件等开发自定义插件……

所以我的问题是:有没有可靠的简单的版本控制系统/机制/平台/...适用于内容如下的项目有效地整体的、不透明的东西?

答案1

对于 svn,您可以使用文件锁定大型不可合并文件。这是应用于大型不可合并文件的属性。默认情况下,这些文件在签出时将只读。然后,您可以使用 svn lock 将它们设置为工作副本中的可编辑文件,并在服务器上将它们标记为已锁定。如果其他人尝试使用 svn lock 该文件,他们将收到您已锁定该文件的通知。您可以配置svn 根据文件扩展名自动应用需要锁定属性。

其他版本控制系统有其他答案解决这个问题。

相关内容