本周我正在采访一家公司,我将成为唯一的初始开发者支持我正在接受工作的应用程序。因为这样的职位在细节上可能会有很大差异,所以我打算提倡一些能使工作顺利进行的具体方法。
我正在考虑提出的一件事是倾向于将现有的源代码从SourceSafe(当前居住的地方)转移到更好的版本控制产品,如Perforce。
我在SourceSafe上遇到过许多不良经历,导致永久文件锁定和代码损坏等大量问题。独自一人,我担心这些轶事听起来像“我想改变它,因为我不喜欢它。”如果我要提起这个话题,我想要一个扣篮案例。
那么,SourceSafe被视为劣质产品的经验原因是什么?
答案 0 :(得分:16)
根据经验,将您宝贵的源代码信任到一个甚至达不到Microsoft Access可靠性水平的软件是没有意义的。该产品应该在几年前被倾销。它不符合现代标准。
我将它评为任何开源产品,如CVS或SVN,我不知道我的评价低于它的任何产品,除了可能是旧版本的VSS。
答案 1 :(得分:13)
我个人经历过的最重要的事情是database corruption。它发生了,它很痛苦。除此之外,与更现代的SCM相比,它相当慢。
如果我是你,我建议至少转移到TFS。与VisualStudio的集成同样紧凑,速度更快,成语几乎相同。在我使用它的4年里,我没有遇到任何问题。 Perforce价格昂贵,而且在采访中可能不值得一试。
答案 2 :(得分:12)
答案 3 :(得分:4)
早在2002/2003年的一份工作中,我最终成了那个不得不照看我们的VSS装置的人。
我们为VSS提供了自己的专用服务器 - 真正的物理硬件 - 以最大限度地减少中断,但我们仍然遇到常见问题。
每周一次,我必须去修理破损的锁 - 这些锁是放置它们的开发人员无法释放的。
每年大约两次我不得不从一个损坏的存储库中恢复 - 似乎在1G标记附近存在某种内置限制,每当存储库增长超过1G时,事情就会很快变坏。
鉴于有更好的工具 - 具有更好的集成 - 现在可以零成本获得,从VSS(对我来说)切换是不费脑筋的。
答案 4 :(得分:4)
我同意VSS是一个可怕的软件,但除了可能的数据库损坏问题之外,你的情况似乎很难卖给人们。例如,你不能说VSS有可怕的合并支持,因为,你是唯一的开发者。出于同样的原因,你不能抱怨锁定结账。除非您的应用程序的大小非常好,否则您无法从VSS建议的建议的1 GB最大数据库大小中争论。
我个人认为,在你提出的采访中,你最好还是寻找更低级的水果来建议像迭代开发,TDD或维基文档。在企业的情况下,我已经为从VSS转移到Perforce而进行了很好的斗争,这已经足够困难了。我无法想象试图说服管理层对具有一个开发人员的应用程序进行主要的源代码控制更改。因人而异。
答案 5 :(得分:3)
SourceSafe是一种基于Windows共享的陈旧技术。存储机制(非事务性“平面文件”)是性能不佳和错误的配方。它的采用与其它SCM的内容无关,而且与“已经存在”这一事实有关。
我不能对Perforce发表评论,但我可以说VSS与Team Foundation Server相比是一个非常弱的产品,应该仅在已经有大量投资的情况下使用而且没有钱可以花了。
答案 6 :(得分:3)
Microsoft不在内部使用它。相反,他们获得了Perforce的源许可证,并且他们已经将其破解以满足他们的需求。这是有道理的,因为微软自豪地为他们的其他产品(如Windows和Office)提供食物。
答案 7 :(得分:2)
我对Sourcesafe的最后一次经历是多年前的事情,所以请耐心等待。根据我的经验,随着触及相同代码的开发人员数量不断增加,它无法很好地扩展。
没有办法让多个人处理相同的代码,然后在签到时将他们的更改合并在一起。相反,每个开发人员都必须锁定他们正在处理的文件,而其他开发人员无法在触及这些文件的任何内容上取得进展。
答案 8 :(得分:2)
因为即使在存储库中它也会使您的源不安全。
答案 9 :(得分:2)
我现在正在讨论的问题是Visual Source Safe坚持认为我的项目的文件夹结构不可能在目标工作目录中表示。它总是认为服务设置项目试图侵占服务项目并拒绝检查它。当您将项目添加到源代码管理时,它总是在源代码管理中的路径中添加另一个文件夹。版本控制应该只代表开发人员机器上已经处于工作状态的文件结构,而无需投诉。
答案 10 :(得分:1)
另见Better SCM Initiative: Version Control Systems to Avoid。
我在那里阅读的一个问题,我在答案中没有看到到目前为止,是VSS不支持删除然后重新创建的文件:要么清除文件的历史记录(并且永远不能恢复旧版本),要么可以创建与某个已删除文件具有相同名称的文件。甚至CVS(也是基于文件的)试图通过使用'Attic'区域来做到这一点。
答案 11 :(得分:1)
我可以继续下去。底线是绝对避免这个产品。我认为它可能适用于较小的项目,但开发企业级应用程序不应涉及处理持续的代码库存储库问题。