Svn 为什么不是';不要抹杀颠覆的一个基本特征?

Svn 为什么不是';不要抹杀颠覆的一个基本特征?,svn,obliterate,Svn,Obliterate,几年来,我一直在等待Subversion提供一个“永久删除”(擦除)功能。我对转换到Subversion(来自Visual SourceSafe:p)犹豫不决,因为我认为这是一个基本特性,否则我会期望存储库以不可阻挡的速度增长。然而,出于这样或那样的原因,该功能一次又一次地被推迟。因此,我开始怀疑是否有其他一些特性或解决方法使得删除功能变得可有可无 如果要收缩SVN中央存储库,您会怎么做 例1:我喜欢它,几周后我意识到它不适合我的需要。我不想让它永远存储和备份那么多数据 示例2:存储库中有10个

几年来,我一直在等待Subversion提供一个“永久删除”(擦除)功能。我对转换到Subversion(来自Visual SourceSafe:p)犹豫不决,因为我认为这是一个基本特性,否则我会期望存储库以不可阻挡的速度增长。然而,出于这样或那样的原因,该功能一次又一次地被推迟。因此,我开始怀疑是否有其他一些特性或解决方法使得删除功能变得可有可无

如果要收缩SVN中央存储库,您会怎么做

例1:我喜欢它,几周后我意识到它不适合我的需要。我不想让它永远存储和备份那么多数据

示例2:存储库中有10个大型第三方库的10个版本,但我只使用最新版本

示例3:我意外地签入了敏感信息(如所建议的)


示例4:我无意中签入了一些从未打算放入存储库的大文件。

我所不做的-不使用subversion。对不起


他们(开发人员)显然不同意您对这一关键特性的评估。没有阻止我目前工作的公司使用它;)出于这个确切的原因,我个人排除了subversion。

它违反了源代码管理的含义。
源代码管理就是要能够恢复以前的状态。如果你永久删除一个文件,你将无法删除


OTOH我不知道VSS,所以我可能误解了“永久删除”反对它的明显原因是,开发人员认为,总的来说,它会让SVN变得更糟——当你不小心删除了一些东西,而你的/trunk丢失时,你能够删掉不需要的东西所感受到的快乐会大大低于你的愤怒


FogBugz有着完全相同的行为,在他们的案例中,我相信这完全是出于设计,保护用户免受自己的伤害。

删除违反了您想要的版本控制原则。要么你不会节省任何空间,要么以前的标签会被破坏。如果删除了任何文件,您将无法返回到真实的以前版本


至于您对存储库增长的评论。。。随着时间的推移,任何存储库都会随着更改的大小而线性增长。这就是源代码控制系统的全部要点。如果您不需要跟踪以前的版本,那么为什么不在某个地方保留一个共享文件夹呢?

因为从存储库中删除数据打破了源代码管理的基本前提,即可以复制源代码树中以前的所有状态和更改。如果你想从版本控制中删除一些东西,你很可能是“做错了”,就像他们说的那样。

源代码管理的整个要点就是拥有一个完整的存储库外观历史记录。
deletate
命令破坏了源代码管理的这一目的,并且在所有版本控制系统中都是一个错误


SVN有廉价的复制和廉价的分支,不需要文件的完整副本——只需要更改的位。它的中央存储库在规模上通常是非常易于管理的,因此不需要这种功能。

我使用各种版本控制系统大约15年了,从未需要过这样的功能

我想知道您想要该功能的原因是什么:

  • 磁盘空间?考虑到光盘空间的价格,很难相信
  • 是否向版本控制提交了密码?那会教你的。去更改密码
  • 存储库的速度?听起来不是这样,但如果我考虑一个完全不同的系统,假设性能更好。

通过转储和加载,可以减小SVN存储库的大小。基本上,如果您说您永远不想恢复到超过几年的内容,那么可以转储存储库,根据时间进行筛选,然后重新加载转储。由于文件大小的原因想要删除单个文件,这可能表明该文件最初并不真正属于源代码管理系统。

有一些脚本可以帮助您删除数据。关注更多信息


这很难做到,因为版本控制的本质是不丢失数据,而不是永久删除数据。但是,如果你每年修剪一次或类似的东西,它是可以做到的。

在问题单上有相当多的关于svn deletate的讨论,大部分都在2008年左右结束。人们似乎普遍认为这是一种很好的功能,尽管它的使用应该很少

想要它有两个主要原因

首先,检查机密信息可能是一个问题。根据存储库的机密性和公开程度,将其保留在那里、删除不一定是一种选择

第二,签入大量不应该签入的内容会大大增加存储库的大小。如今,磁盘空间通常很便宜,但它并不是无限的,文件空间也有其他影响因素。如果需要通过网络连接发送存储库,那么额外的时间可能很重要,也可能不重要。能够刻录包含整个存储库的CD-ROM或DVD-ROM确实有好处

因此,这是一个有用的功能,目前可以通过转储、过滤和重新加载存储库来完成。根据我看到的报告,这很容易出错,速度可能很慢,并且需要关闭存储库

显然,对于Subversion团队来说,它不是一个高优先级的特性,因为在相当长的一段时间里,它需要有人来完成设计并实现它。毕竟,这应该很少做,而且有一个解决办法。霍维夫