作为正常开发过程的一部分,从VCS中永久删除版本是否有意义?

Mik*_*els 10 version-control clearcase

我们在工作场所使用ClearCase.当代码合并到主(主干)分支时,我们标准流程的一部分是完全根除开发和集成分支上的所有版本.因为这会消除与这些版本一起发布的所有签入注释,我们的源文件必须有一个冗长的序言注释,用于标识每个更改.

有几次,我指出这否定了使用版本控制系统的一个基本原因,并指出通过删除版本,无法看到谁最初在某事上工作,何时引入问题等等.新版本已经学会了不打扰输入签到评论,因为它无论如何都会被删除.

我所听到的删除旧版本的理由通常只是归结为"感觉良好"的原因.我更有经验的同事觉得删除这些旧分支会使文件的版本树"更清晰".他们声称,一旦将这些旧版本合并到我们的主干上,就没有理由保留它们.他们还担心其他开发人员会在他们的视图配置规范中意外地保留这些过时的分支.最后,他们认为删除这些分支可以节省CM服务器上的磁盘空间.

我对此有不好的感觉,或者是否有其他开发商店以这种方式成功运营?如果你还认为这是一个坏主意,你会提供哪些其他支持保留旧版本的论据?如果您已成功使用此类流程,您会观察到哪些好处?


编辑澄清:以前版本的主干始终保留.它是最初创建或修改的东西被删除的分支.

Dav*_*ley 3

您已经注意到一个大问题:随着提交注释的删除,没有自动记录代码如何成为现在的样子。也没有办法检查软件是如何变成现在这样的历史:它是一大堆,有大量的序言注释,可能准确,也可能不准确。

通常,当我遇到看起来很奇怪的代码时,我想知道它是怎么来的。由于我们使用 Subversion,我可以使用“svnblame”来查找该行出现在哪个版本中,并从那里进行检查。这通常会帮助我理解代码的用途,并告诉我更改代码可能会破坏什么。查找何时添加或删除功能通常也很有用。

虽然这可能会节省一些空间,但一个好的 VCS 会存储增量,因此不会占用那么多额外的空间(注意:我不知道 ClearCase 在这方面是否好)。与此同时,您正在使用的文件会因序言注释而膨胀,并且可能会因注释掉或有条件编译的代码而膨胀,以防以后有用。

作为曾经管理 VCS 系统的人,从系统中删除某些内容只有两个原因。一种是是否提交了不应该提交的内容,并且导致了问题(例如,它可能非常大 - 当有人不仅提交了源文件而且还提交了所有二进制文件时,有些人遇到了问题),另一种是如果这是不适当的(例如机密信息)。