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

Version control 作为正常开发过程的一部分,从VCS中永久删除版本有意义吗?,version-control,clearcase,Version Control,Clearcase,我们在我的工作场所使用ClearCase。当代码合并到主(主干)分支时,我们的标准过程的一部分是完全消除开发和集成分支上的所有版本。因为这会抹去这些版本附带的所有签入注释,所以我们的源文件必须有一个冗长的序言注释来标识每个更改 我曾在一些场合指出,这否定了使用版本控制系统的一个基本原因,并指出,通过删除版本,当出现问题时,不可能看到谁最初从事某项工作,等。人们在新版本中签入时已经学会了不用麻烦输入签入评论,因为它无论如何都会被删除 我听到的删除旧版本的理由通常归结为“感觉良好”的理由。我更有经验

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

我曾在一些场合指出,这否定了使用版本控制系统的一个基本原因,并指出,通过删除版本,当出现问题时,不可能看到谁最初从事某项工作,等。人们在新版本中签入时已经学会了不用麻烦输入签入评论,因为它无论如何都会被删除

我听到的删除旧版本的理由通常归结为“感觉良好”的理由。我更有经验的同事认为,删除这些旧分支会使文件的版本树“更干净”。他们声称,一旦这些旧版本被合并到我们的主干中,就没有理由保留它们。他们还担心其他开发人员会意外地将这些过时的分支保留在他们的应用程序中。最后,他们认为删除这些分支可以节省CM服务器上的磁盘空间

我对这件事有不好的感觉是对的,还是有其他开发公司以这种方式成功运作?如果你也认为这是一个坏主意,你会提供哪些支持保留旧版本的其他论据?如果您成功地使用了这种流程,您观察到了哪些好处



编辑以澄清:始终保留主干的早期版本。删除的是最初创建或修改内容的分支。

删除版本对我来说是不可理解的。听起来你的同事们试图证明ClearCase的使用是愚蠢的,而不是提供适当的文档、支持和有关其功能的培训


不幸的是,我也遇到过类似的情况。在开始未来的项目时,您应该尝试为您认为应该如何进行版本控制提供清晰明了的论据。也许,如果项目开始的过程建立得当,他们都会看到优势,并将其应用到未来的项目中

如果不保留版本,为什么要使用版本控制对我来说毫无意义

在我看来,版本控制的主要好处是能够回到过去。我发现自己一直在检查以前版本的文件,以找出更改的原因或方式


随着需求的发展,这一点尤其有用,您发现确实需要三个月前编写的代码。

删除修订信息没有任何好处。即使没有签入注释的修订信息也比没有修订信息好1000倍

保存修订信息(文件恢复之外)最有说服力的情况是,当您发现一个bug并追溯到引入该bug的签入位置时,通常最好同时查找同一用户的签入。这个bug可能比它最初出现的范围更广。如果没有修订信息,则无法执行此操作


换工作。你会活得更长。与不了解版本控制好处的程序员一起工作对您的日常健康不可能有好处。

您已经注意到一个大问题:删除提交注释后,不会自动记录代码的运行方式。也没有办法检查该软件的发展历史:它是一个大团块,有大量的开场白评论,可能准确,也可能不准确

当我经常遇到看起来很奇怪的代码时,我想知道它是如何产生的。因为我们使用Subversion,所以我可以使用“svn责备”来查找行出现在什么修订版中,并从那里进行检查。这通常会导致理解代码的目的,并给我一个线索,我可能会打破改变它。查找功能的添加或删除时间通常也很有用

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


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

否,我不认为好处大于成本。成本是显而易见的(现有答案很好地涵盖了这一点),因此我将讨论所谓的好处

  • 如果您想要一个“更干净”的源代码树,那么还有很多其他功能不涉及销毁信息。大多数源代码管理系统可以将项目置于已删除状态,对标准UI隐藏(除非启用特殊选项);基于每个项目强制执行读取权限;将项目移动到树的预定义区域(例如称为“旧东西”的地方);或者以上所有的

  • 据我所知,每个强大到足以支持自定义视图规范的SCC系统也允许管理员审核和覆盖这些设置

  • 源代码并没有那么大<在考虑压缩+增量存储之后,尤其是<>强>。仅在少数利基应用中,大型二进制f