【问题标题】:How to prohibit modifications to all files in a revision control system如何禁止修改版本控制系统中的所有文件
【发布时间】:2016-04-04 07:43:05
【问题描述】:

对于测试数据的存档,我需要一个只允许添加文件的版本控制系统。禁止修改、重命名和任何其他更改。

这将使使用当前测试数据测试任何代码修订版并重现与以前相同的结果成为可能。

我们目前正在使用 Subversion 作为源代码。但是,测试数据可能是数百个文件,大约有 200 GB 的数据。我怀疑 Subversion 可以处理它。我不想把测试数据和代码放在同一个 Subversion 存档中,它只有几个 MBytes。

此外,Subversion 似乎不是解决这种简单问题的正确工具。

如何在我的 subversion 存储库中使用仅添加规则创建目录?

我注意到,结帐后测试数据的大小翻了一番,因为有一个 .svn 目录,其中包含每个文件的副本。我可以避免这种硬盘空间的浪费吗?只想使用数据但不想添加任何内容的人不需要它。他可以只删除 .svn,但结帐时仍需要大量磁盘空间。

【问题讨论】:

    标签: svn testing automated-tests integration-testing repository-design


    【解决方案1】:

    要回答您问题的第二部分,您可以执行 svn 导出以仅获取一份数据副本。您将无法提交到该文件夹​​,因为它不是工作副本。我有一个超过 200 GB 的存储库。到目前为止没有问题。

    【讨论】:

      【解决方案2】:

      Subversion 是适合这种情况的工具,处理 200GB 数据或事件多 TBytes 数据应该没有问题。请注意,除了“如何禁止修改”之外,您并没有真正在问题中说明任何“问题”,因此不清楚您问的是什么问题。

      要禁止修改但允许添加(我真的不明白您为什么要问这个问题,只是因为您使用了可以控制修改本身的成熟且功能完整的版本控制),请使用 path-based authorization 并将其组合带有pre-commit hook script。自己编写钩子脚本或使用Python编写的svnperms钩子脚本。

      别忘了阅读文档:SVNBook 1.8

      【讨论】:

      • 我通过创建一个包含 18G 测试数据的存储库来测试 svn。仓库明显检测到重复数据,只有11G。如果我进行结帐,我会得到 36G,因为树包含一个 .svn 目录,其中包含所有文件的副本。 du -hs * 18G original-test-data/11G repository/ 36G test-data-after-checkout/
      • @MarkusHeitz 在这种情况下按照@ojblass 的建议运行svn export
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-15
      • 1970-01-01
      • 2011-05-24
      • 2012-03-04
      • 2014-11-17
      相关资源
      最近更新 更多