我如何说服我的团队放弃sourceafe并转移到SVN?

时间:2008-09-22 15:24:47

标签: visual-studio svn version-control visual-sourcesafe

我的开发团队在非常基础的层面上使用源安全。我们正在进入一些更高级和更长的开发周期,我不禁想到,为了管理变更而不使用分支和合并将很快咬住我们。

为了说服你的团队转向像SVN这样的更好的解决方案,你认为哪些论据最有用?

您使用哪些程序来弥合功能差距,以便团队不会错过ide sources的安全集成?

或者我应该接受sourcesafe并尝试将更好的做法塞进其中?

34 个答案:

答案 0 :(得分:54)

可靠性

  • 使用大型数据库时,SVN更可靠
  • SVN仍然受到积极支持
  • 原子提交 - 在VSS中,当您获得最新版本而另一个用户正在执行签入时,您可能会出现一个不一致的状态,强迫您重复“获取最新版本”更好的情况,但有时不幸的时候您可能会被遗忘编译但不起作用的代码库。由于原子提交,这在SVN中不会发生。

功能

  • SVN分支/合并更好
  • SVN内置了对远程访问的支持
  • SVN更易于配置(外部差异/合并工具的集成)
  • SVN更具扩展性(挂钩)

提高生产力

  • SVN“更新”是lot faster compared to SS“获取最新版本”
  • SVN命令行更简单,更清晰 - 这对自动构建或测试工具很有用

相同级别的IDE集成

  • 直到最近,VSS的VS集成要好得多,但是AnkhSVN 2.0已经不再适用了。

打开

SVN是开放的,有很多使用SVN或与之合作的各种工具。一些例子包括:

  • 与许多错误跟踪器或产品周期管理产品集成
  • shell集成
  • 整合到各种产品中
  • 各种管理和分析工具
  • 来源可用,您可以根据需要进行调整,在需要时解决问题(或聘请某人为您做)

费用

  • 您无需支付任何许可或维护费用

答案 1 :(得分:52)

首先,教他们如何以有效的方式使用SourceSafe。

如果他们足够聪明,他们将开始喜欢使用版本控制系统的优势,如果是这样,他们很快就会达到SourceSafe的极限。这就是他们能够更好地倾听你的论点以转换到更好的VCS,可能是CVCS还是DVCS,具体取决于团队准备实现的目标。

如果你试图以错误的方式使用SourceSafe时强迫他们使用另一个VCS,比如保存源代码的zip文件(不要笑,这就是两年前他们在我公司的行为),他们会完全不愿意任何论证,尽可能好。

答案 2 :(得分:22)

找一些借口在C#代码中开始使用非ASCII字符(中文和日文非常适合这种情况)。

SourceSafe不喜欢Unicode(即使Visual Studio确实如此),因此如果您选择正确的Unicode文本并检查文件是否已退出,则整个文件将显示为损坏的乱码。这样做的好处在于,因为SS使用“diff”版本控制系统,这实际上会破坏文件一直回到原始签入版本,并且无法自动修复。

当这种情况发生一次时(正如我在处理必须支持日语的应用程序时所做的那样),你可能会发现它是支持放弃SourceSafe的决定性论据。

答案 3 :(得分:16)

我们曾经使用两个功能来销售管理层和SVN上的团队而不是VSS。

1)分支的能力。使用VSS时,如果计划发布一个版本,则整个存储库都会被锁定,直到该版本实际发布为止。这包括测试和修复周期。因此,开发人员无法提交除发布到VSS存储库的修复程序以外的任何。这导致每次发布后立即进行长时间的集成。通过在SVN中使用发布分支,不再需要锁定整个存储库。

2)能够立即回滚整个更改。因为SVN记录了在单个原子提交中更改的所有文件,所以恢复有问题的更改是微不足道的。在VSS中,开发人员必须遍历整个存储库并查找几乎同时更改的每个文件,并将每个更改单独还原到每个文件。使用SVN,这与查找相关提交并点击TortoiseSVN中的“从此提交中恢复更改”按钮一样简单。

作为旁注,我们使用TortoiseSVN,每个人喜欢文件覆盖图标,以查看已经发生的变化。

答案 4 :(得分:13)

无论你做什么,都要慢慢行动!不要在第1天开始和他们谈论关于分支的问题 - 它会把它们关掉。我用那个评论对VSS用户刻板印象,但这就是我在那里看到的。

对于开发人员:将其作为VSS的替代品销售,以更好,更快地运行。在第1天使用VisualSVN,因此它们具有超浅的学习曲线。除了更快,更稳定之外,卖掉它们是相同的,并且2个人可以编辑同一个文件,并且他们不会遇到一些人因为一堆文件上的锁而生病的问题。

对于管理员:销售它们比VSS更稳定,更易于管理。向他们展示VisualSVN server

祝你好运!

答案 5 :(得分:5)

首先,记录您在源控制系统中可以追溯到根本原因的所有问题。跟踪它们一个月左右。添加由于不使用它而导致错失的机会。 (如果你说“不使用颠覆的机会成本”你可能会给MBA类型的经理留下深刻的印象)。这些数字实际上是对机会成本的低估,因为如果你没有搞乱VSS,你可能一直在做的工作提供超过你的每小时票据费率。

例如,您是否遇到需要多个人访问的文件被锁定的问题? 部分(非原子)签到有问题吗? 您是否遇到过难以跟踪软件版本并重新创建存储库的问题? 在将代码副本复制到没有sourcesafe客户端的服务器上时是否有问题? 您是否在构建和测试过程自动化方面遇到问题,因为持续集成工具无法监控版本控制系统的更新? 我相信你能想到很多其他人。

如果你能算出因源安全引起的问题的大致时间/金钱成本以及颠覆所提供的东西的好处(使用通用数字,例如100美元/小时的劳动力成本或仅数小时)以及延迟交付项目的任何成本, 这样做。如果您已经收集了一个月左右的数据,则可以使用每月的subversion显示收益。

然后呈现移动到颠覆的大致时间/成本。 (大约需要8个小时来设置和迁移代码,每个开发人员需要2个小时来连接,签出和移动项目,类似的东西)风险很低,因为sourcesafe仍然可以回滚到。

如果成本超过每月福利,您可以将成本除以福利以计算恢复期。您还应该将其总计超过3年左右,以显示长期效益。再次强调,真正的机会成本不能直接计算,因为在尝试管理sourcesafe中的非分支版本时,您可能一直在增加价值。

答案 6 :(得分:5)

没有人建议再使用SourceSafe,甚至不推荐使用Microsoft。他们现在将为您提供(昂贵的)TFS许可证。 SourceSafe不可靠。

我在这里写到:Visual SourceSafe on E2。这有点像咆哮,但那是因为我不得不使用SourceSafe很长一段时间,记忆让我有点泡沫。

可靠性是咬你的最重要的因素。但是你也可以在SVN或TFS中欣赏这些功能:

TFS和SVN都有多个文件的原子提交,但Sourcesafe没有 - 如果你“同时”签入两个文件,那么它不是一个操作,它与检入其中一个文件相同,然后检入其他。您可以进入两个状态,其中一个文件已经签入,而另一个文件没有。

SourceSafe不会保留已删除文件,文件移动或重命名的历史记录。

与初始展示相反,如果您设置了正确的选项,SourceSafe确实支持同一个文件的多个同时签出。但是TFS,特别是SVN更适合这种工作方式

与SourceSafe不同,TFS和SVN都能很好地对抗互联网上的服务器(TFS只是OK,SVN非常出色),SVN可以很好地离线工作 - 例如如果你在飞机或火车上有一台笔记本电脑并且没有'网络,你仍然可以工作并与以前的修订进行比较甚至还原,因为这样做的数据是在本地保存的。

正如其他人所指出的,SourceSafe与CVS一样,是一种“死”的产品。它没有得到积极发展。 TFS和SVN将在未来的某个时间推出下一版本。

答案 7 :(得分:3)

VS的AnkhSVN插件非常好。它有一些奇怪的东西,但整体上运作良好。

说服团队努力工作是一项艰苦的工作 - 我从来没有做过这样的事情:-(当你拥有1GB的源数据库时,可能其中一个更实际的论点就是速度 - VSS 几个用户。

编辑自从我使用VSS以来已经很久了,我忘了锁定了!是的,正如这里提到的,如果你有超过少数开发人员,那么迁移到非独占/合并更改模型的能力应该会有所帮助。它可以在整个办公室中大肆宣传“有人可以检查共同的内容”!

答案 8 :(得分:3)

构建一些将VSS存储库镜像到SVN存储库的自动化

建立共识需要时间。如果VSS存储库的SVN镜像始终可用,则更容易累积转换。镜子不一定非常完美 - 它必须是可用的。现有工具用于此目的。

答案 9 :(得分:3)

首先搜索google,了解描述VSS有多糟糕的大量网页,并与同事分享。

其次,跳过subversion并直接转到适当的分布式SCM,如gitmercurial。由于合并是分布式SCM的固有部分,因此它们必须比svn等集中式系统更好地处理合并。 Subversion仍在尝试改进自身以更好地处理分支,其中分布式系统是在开始时正确构建的。

答案 10 :(得分:3)

TortoiseSvn(免费)非常适合资源管理器集成,从上下文菜单中为您提供svn的所有功能。

VisualSvn(商业)使得将svn集成到Visual Studio中同样容易,在解决方案浏览器中使用相同的状态指示以及使用所有subversion功能的上下文菜单。

这两种工具都可以很好地实现版本控制。自从我处理VSS以来,这是一个多年的轿跑车,但这些工具是使用源代码控制的一种更好的方式。

同样为every one has said about VSS being poop

Subversion对分支和合并有很好的支持......我不记得VSS在这个部门有任何能力。我确实记得当需要从VSS中释放时,团队经历了为期一周的合并的痛苦,这种痛苦在Subversion中不再存在。

答案 11 :(得分:3)

你说“为了说服你的团队转向像SVN这样的更好的解决方案,你认为哪些论据最有用?”

如果您不知道这是一个更好的解决方案,那么您为什么要提出这些论点?如果你的思想足以支持解决方案,你应该知道这些原因已经存在。

是什么让你相信你应该转向更好的事情?那些是你的论点。任何缺乏这些论点的人都会觉得这只是个人偏好的问题。

答案 12 :(得分:2)

告诉他们将源代码看作是金钱,然后将它们指向SourceSafe的众多例子,这些例子都是火上浇油的源头。这样的事情不应该发生在适当的源控制系统中。

针对SourceSafe的最佳理由是just isn't Safe其他所有内容都可能被称为“我们不需要的功能”。

答案 13 :(得分:2)

我们的关键是VSS在VPN和路上的低带宽酒店网络上的速度(即缺乏)以及试图穿过防火墙的问题,以便两个不同站点的两个团队可以快速,安全地,并可靠地使用相同的代码存储库。我们运行了两个VSS存储库并打包了“交付”,必须将它们合并到另一个站点的存储库中以保持同步。

团队抱怨了一会儿,但很快就克服了它。 TortoiseSVN本身就很棒,Visual Studio的AnkhSVN插件真的让所有人都能顺利完成转换。

回想起来,我简直不敢相信“你能查到档案SoAndSo吗?”我们发送的电子邮件,更不用说“SourceSafe已关闭。我们必须恢复存储库”电子邮件。

啧。在阅读了这些评论并撰写此回复之后,我无法相信我们会像我们一样忍受VSS。

答案 14 :(得分:2)

Web page summarising problems with VSS - 只需将人们指向该网址

即可

答案 15 :(得分:1)

答案 16 :(得分:1)

如果您使用VisualSVN,团队将不会错过VSS。能够同时处理一个文件的2个人也是一个很大的卖点。

答案 17 :(得分:1)

源安全的不可靠性(“请修复存储库......”)对我们来说已经足够了。 Andecdcdally(我从未测量过)SVN也似乎总是更快。良好的并发结账/合并。

我总是认为对开发者来说这几乎是显而易见的。 SourceSafe似乎经常破裂而死,不想替换它......

答案 18 :(得分:1)

当我在VS2005的发布时,我设法转向一个Microsofty,并问为什么SourceSafe使用起来非常糟糕。我得到的答复相当令人震惊,不仅仅是因为他说了什么,而是因为他对他所说的内容非常关注。

他告诉我,这只是一个人真正意义上的使用,即便如此,也不是很擅长这样做。

我的同事和我有点震惊,除了笑声之外我们想不出别的事情,就像微笑一样!然后他告诉我们它没有在内部使用。

因此,我们在此之后不久就转向颠覆。我们几乎决定在发布会之前去做,但这刚刚确认我们做出了正确的决定。

答案 19 :(得分:1)

我建议你继续开始为源安全使用引入最佳实践,以便进一步改进subversion。希望这将使您的实际颠覆迁移更容易,并给您时间来计划您的开发周期,分支策略等。正常。

另一件需要考虑的事情是您的开发过程。源控制管理系统只是解决方案的一部分,为了充分利用颠覆或任何其他产品,您可能希望了解它的用法如何与您的代码审查,qa和构建过程进行交互。

答案 20 :(得分:1)

我不记得任何有兴趣使用该产品的SourceSafe用户。你的同事真的喜欢吗?

我在当前客户的使用情况下遇到了与CVS类似的问题。既然“它有效”并且他们对它很满意,我无法推动它们改变。但我每天都希望他们愿意!

答案 21 :(得分:0)

关于这一主题的优秀书籍是“推动技术变革。”

http://pragprog.com/titles/trevan/driving-technical-change

答案 22 :(得分:0)

每当我在3人团队中工作并且他们开始增加数量时,进一步远离VSS似乎是一个自然的步骤。

每当我向人们展示Continuous Integration(特别是CruiseControl.NET)的好处时;这本身就足以保证从VSS转移到SVN(我发现SVN在使用CruiseControl.NET时比VSS更好)。

我建议在SVN中启动任何新项目,并在必要时迁移旧项目,而不是一步完成从一个项目到另一个项目。

你会惊讶于VSS以这种方式消失的速度。

答案 23 :(得分:0)

如果将SourceSafe放到另一个版本控制系统上,我建议使用Mercurial而不是SVN

Joel Spolsky写了一篇非常好的introduction to Mercurial,你也可以使用plug-in for Visual Studio

答案 24 :(得分:0)

在我之前的工作中,我们开始使用VSS然后转移到SVN并且从未回头。

刚刚开始新工作,他们使用VSS,幸运的是上述问题让他们考虑使用SVN。

无法将文件添加到项目中,因为有人检查了项目文件是令人愤怒的!

- 李

答案 25 :(得分:0)

我计划在接下来的几周内放弃SourceSafe,经过十多年的努力。大多数情况下,我一直在小型(<5人)团队的背景下使用它,而不必进行大量分支,因为没有要求这样做。

然而,对我来说,#1问题一直是,该死的东西很容易腐败 - 如果你有你的SS数据库(lol,数据库;随机命名文件的集合更准确地描述它)一个网络驱动器,你的局域网连接通过添加/签入操作中途发生了一些事情 - 十分之九你得到“无效句柄”,该死的东西在某种程度上被破坏了,然后你可以玩俄罗斯轮盘赌分析工具。

几个月前我意识到,在过去的十年里,我一直在为我正在开发的软件的每个版本制作本地压缩源副本,因为我不相信源代码控制系统。真是浪费时间。

所以,它会发生。我可能会使用Subversion和TortoiseSVN,因为我认为团队需要一个UI来简化过渡。

答案 26 :(得分:0)

我在一个小型开发团队中使用了SourceSafe,并负责让它继续运行。

我发现数据库很容易被破坏,并且在发生这种情况时没有太多的追索权。 “修复”功能(与大多数Microsoft修复功能一样)在98%的时间内都不起作用。

当然,当我们的数据库损坏时,我们尝试从备份存档中恢复。那是我们发现SourceSafe的另一个坏处:它的2GB存档限制。在我们意识到它们无法恢复并且无用之前,我们在我们的办公室进行了几个月的备份。

SourceSafe只是一场等待发生的灾难。

答案 27 :(得分:0)

让他们使用它,他们会切换到别的东西:)

现在,说实话,告诉他们不是很难用它,我所知道的许多开发人员拒绝切换,因为他们将subversion与unix和wierd命令相关联,向他们展示像ToirtoiseSVN或VisualSVN这样的接口,告诉他们Subversion允许他们编辑同一个文件,而不像VSS那样强制锁定。

最后但并非最不重要的是,它是开源的。它比购买Team Foundation Server的成本更低,如果你环顾四周,你会发现小型开发团队与SVN的合作非常好。

答案 28 :(得分:0)

当您提出这些论点时,请考虑您是否需要解决贵公司可能使用开源工具的任何政策。请参阅先前问题的此答案:Switching source control

答案 29 :(得分:0)

Trac也安装在Subversion之上。它是免费的,是查看存储库(时间轴,维基等)的好方法

答案 30 :(得分:0)

我们曾经使用过SourceSafe。然后,当我加入团队时,我在不同的位置,即使我们有一个相当不错的局域网,当我试图查看最新版本时花了40分钟。我说服他们转换为CVS(我们现在使用SVN),结账时间下降到几分钟。 SourceSafe太慢,无法在远程位置使用。

答案 31 :(得分:0)

我们从SourceSafe迁移到Source Gear Vault。这个源代码控制引擎非常适合用于SourceSafe的人。我们最终决定在关键时刻发生几起SourceSafe腐败事件后进行更改。因此,我的建议是将您的销售演示重点放在SourceSafes的不可靠性上。

答案 32 :(得分:0)

只有你可以放牧一堆猫。我去过那里两次,在两种情况下,在人们看到光之前,它在Source Safe中遇到了一些严重的问题。另一方面,作为经理,我只是指导团队使用SVN,我们的工作效率提高了300%(这与印度和美国的一个团队合作。我们的代码交换过去需要很长时间才能在svn之前)

答案 33 :(得分:0)

当然,使用源安全是否足以让他们想要迁移到另一个源控制系统?

我在我以前的工作中使用了SVN和CVS并且已经转移到使用Source safe的公司(我们将迁移到SVN)并且仅仅使用VSS已足以让我严重不喜欢它。尽管我以前的工作中有很多同事告诉我关于VSS的恐怖故事,但我认为自从他们使用它之后它会变得更好。我带着开放的心态进去了。

无法编辑文件,因为其他人正在/正在编辑它是荒谬的。我试图转向更多的分布式版本系统,如Bazzar,这是由cannonical制作的,但就可用工具而言还不够成熟。

源安全阻碍了开发,SVN几乎可以帮助您完成每一步。

另外使用tortoise Svn使代码审查变得更加容易。