VSS totally relies on the clients to manage the database. If a client drops connection in the middle of a write over the network at just the wrong time, your file is trashed on the server. Not just the tip, but all the history. Hope you have a good backup. I've been through it. It's bad news.
VSS usage over VPN or other remote connections is abysmal. It's using SMB to transfer the data, and you have to retrieve the file and all of its deltas just to get the tip. Nasty.
I've seen VSS start to act up at 1GB of data. Database errors, etc. MS (somewhere in a FAQ or KB) says that 2GB is really the max safe limit. There are no good management tools (the clients run the asylum), so you don't really get any warning about this.
Anything with a server process to provide some level of transactions and integrity control is a superior solution.
The best argument would have to be the reason why you want them to switch to subversion. :)
I know absolutely nothing about VSS, but the phrase "if it ain't broken don't fix it" comes to mind. You have to show your managers that VSS is broken and needs fixing. Even better if you can show management how it would save them money.
@Adam Davis: Uhhh actually Adam, VSS is a horrible source control system. It has a long history of corrupting history and losing data. It is terrible at merging, doesn't handle multiple developers well and is very slow. Also the history is poor. Microsoft don't really support it any more, you'll note that they never used it for their own internal development and now they don't even sell it in favour of a more modern solution (VSTS). In short, if you have to choose between VSS and any other type of source control, go with the alternative.
The internet is littered with well written articles on the flaws of VSS. I would collect this as a body of evidence for moving away from VSS. Find a key requirement that VSS can't support (remote working, support on other OSs, tools integration) and use it to drive your issue. You then need to find a source control system that is a good match for your organisation's requirements - are you sure Subversion is that system? Set up a demonstration of your chosen system, and use this to prove its worth.
I implemented this change at a previous employer (first to CVS, and then to SVN), and while it was successful we had to build a lot of bits around the edge and rely on a lot of (sometimes unreliable) open source projects to get all the tools we needed. With hindsight I should have considered trying to evaluate professional tools such as Perforce, Vault or even Team System. Having evaluated these, I could have made a proper value judgement on whether CVS/SVN were worth their "free" price tag.
being able to handle branching and forking is a start.
Try using subversion for a while in parallel to vss you will most likely find many arguments to convince your boss. If you don't, your boss is right, no reason to switch.
Get them to google for 'vss problem', 'source safe corruption' or simply look at the Wiki page for it. That ought to convince them that it's probably not a long-term viable thing for you to be betting such a vital part of your business on.
How big is your team? (ie, I mean how many members, not whether or not you're salad dodgers) Once you start to get more than half a dozen quite active users, VSS is going to give you headaches.
I seriously doubt that Microsoft use it (in fact, don't they use a customised Subversion or CVS variant?) and you've got to ask yourself - if the company don't eat their own dogfood, why would you eat it?
Basic answer is that you have to make the case that switching meets the needs of the business. For example:
lower cost of development
shorter schedule (another shade of #1)
more apt for meeting process requirements (like software requirements traceability, or build reproducibility, etc).
Making the case on these things also requires something quantitative, not just "we will lower costs because this is the right way to do it!".
One thing to watch out for is that it's too easy for a developer to convince themselves that it would be beneficial to make the change without first going through the basic business filters. Once that happens, you end up with developers who are unhappy with their tools and are doubly frustrated because they think management won't listen. If you can't check off one of the things above, them you'll have no chance of persuading management of anything (unless management is incompetent, but that's for another question).
Better tools for tracking changes and viewing logs
Toolset and platform agnostic, but also integrates with many tools
I made the proposal to my manager, and it was a pretty easy sell. I've found it to be much easier to use, especially for branching (our project took 5 hours to "share and pin" in VSS, and then each operation took extra time to complete!).
I've previously written about why VSS is not a good idea. You might be able to gain some information from that. Also this article and this one contain further information.
VSS 2005 has papered over some of the cracks in 6.0, but not in a particularly convincing way. The same brain-dead foundation remains.
Even if it ain't broke, there's a potential benefit to migrating from VSS. First and most trivially, you won't have to buy new VSS licenses. Second, there are many examples of deficiencies in the VSS product (some also acknowledged by MS). The learning curve for SVN is at least as low as for VSS, and if you have devs happier with their source control system, they're more likely to use it early and often. That will translate to lots less risk for your company, and that's a good benefit.
I think the most powerful method for motivating a change away from VSS is to point out how critical an asset your source code is. Taking risks with its integrity is not a wise business choice.
Add that your programmers are the creators of this asset, and that making it easier for them to be productive means more value in your source code asset. Joel on Software often talks about how investing in his programmers is a big win for his company.
The other answers here all describe specific reasons that you can point to when making your case.
In addition to the technical points given in other answers, there may be non-technical reasons lurking that you should be prepared to respond to:
You should investigate whether your company has any sort of policy against (or misguided fear of) open source software. If the company or its lawyers don’t understand the ins and outs of which licenses “infect” proprietary code and which don’t, as well as what you can do with open source code that doesn’t affect your proprietary code, you will have a hard time getting them to switch from a proprietary to an an open source tool. (And you may have a bigger education job on your hands.)
In arguing for the switch from proprietary (e.g. VSS) to open source (e.g. subversion) you’ll also need to be prepared to defend the quality of the code and the lack of any need for a warranty or other contract rights regarding the code.
发布评论
评论(14)
VSS完全依赖客户端来管理数据库。 如果客户端在网络写入过程中在错误的时间断开连接,您的文件将在服务器上被丢弃。 不仅仅是提示,还有所有的历史。 希望你有一个好的备份。 我经历过。 这是个坏消息。
通过 VPN 或其他远程连接使用 VSS 的情况非常糟糕。 它使用 SMB 来传输数据,您必须检索文件及其所有增量才能获得提示。 可恶的。
我发现 VSS 在 1GB 数据量时开始出现问题。 数据库错误等。MS(常见问题解答或知识库中的某处)表示 2GB 实际上是最大安全限制。 没有好的管理工具(客户运行庇护所),因此您实际上不会收到任何关于此的警告。
任何带有服务器进程来提供某种级别的事务和完整性控制的东西都是一个优秀的解决方案。
VSS totally relies on the clients to manage the database. If a client drops connection in the middle of a write over the network at just the wrong time, your file is trashed on the server. Not just the tip, but all the history. Hope you have a good backup. I've been through it. It's bad news.
VSS usage over VPN or other remote connections is abysmal. It's using SMB to transfer the data, and you have to retrieve the file and all of its deltas just to get the tip. Nasty.
I've seen VSS start to act up at 1GB of data. Database errors, etc. MS (somewhere in a FAQ or KB) says that 2GB is really the max safe limit. There are no good management tools (the clients run the asylum), so you don't really get any warning about this.
Anything with a server process to provide some level of transactions and integrity control is a superior solution.
最好的论据必须是你希望他们转向颠覆的原因。 :)
我对 VSS 一无所知,但我想到了“如果它没有损坏,就不要修复它”这句话。 您必须向经理表明 VSS 已损坏并需要修复。 如果您能够向管理层展示这将如何为他们节省资金,那就更好了。
The best argument would have to be the reason why you want them to switch to subversion. :)
I know absolutely nothing about VSS, but the phrase "if it ain't broken don't fix it" comes to mind. You have to show your managers that VSS is broken and needs fixing. Even better if you can show management how it would save them money.
@Adam Davis:呃,实际上 Adam,VSS 是一个可怕的源代码控制系统。 它具有破坏历史和丢失数据的悠久历史。 它在合并方面很糟糕,不能很好地处理多个开发人员,而且速度非常慢。 而且历史也很差。 微软不再真正支持它,您会注意到他们从未将它用于自己的内部开发,现在他们甚至不出售它以支持更现代的解决方案(VSTS)。 简而言之,如果您必须在 VSS 和任何其他类型的源代码管理之间进行选择,请选择替代方案。
@Adam Davis: Uhhh actually Adam, VSS is a horrible source control system. It has a long history of corrupting history and losing data. It is terrible at merging, doesn't handle multiple developers well and is very slow. Also the history is poor. Microsoft don't really support it any more, you'll note that they never used it for their own internal development and now they don't even sell it in favour of a more modern solution (VSTS). In short, if you have to choose between VSS and any other type of source control, go with the alternative.
只需回顾一下良好的源代码控制带来的功能:
By just going over the features good source control brings:
任何证明转换的文件都会降低成本。 如果做不到这一点,多色图形和图表。 也许是一个幻灯片演示。
Any document that proves switching will lower costs. Failing that, multi-colored graphs and charts. Maybe a power-point presentation.
互联网上充斥着关于 VSS 缺陷的精彩文章。 我会收集这些作为放弃 VSS 的证据。 找到 VSS 无法支持的关键要求(远程工作、其他操作系统支持、工具集成),并用它来解决您的问题。 然后,您需要找到一个非常适合您组织的要求的源代码控制系统 - 您确定 Subversion 就是那个系统吗? 设置您选择的系统的演示,并用它来证明其价值。
我在以前的雇主那里实施了这个改变(首先是 CVS,然后是 SVN),虽然它很成功,但我们必须在边缘构建很多位并依赖很多(有时不可靠)开源项目来获得我们需要的所有工具。 事后看来,我应该考虑尝试评估专业工具,例如 Perforce、Vault 甚至 Team System。 评估完这些之后,我可以对 CVS/SVN 是否值得其“免费”价格标签做出正确的价值判断。
The internet is littered with well written articles on the flaws of VSS. I would collect this as a body of evidence for moving away from VSS. Find a key requirement that VSS can't support (remote working, support on other OSs, tools integration) and use it to drive your issue. You then need to find a source control system that is a good match for your organisation's requirements - are you sure Subversion is that system? Set up a demonstration of your chosen system, and use this to prove its worth.
I implemented this change at a previous employer (first to CVS, and then to SVN), and while it was successful we had to build a lot of bits around the edge and rely on a lot of (sometimes unreliable) open source projects to get all the tools we needed. With hindsight I should have considered trying to evaluate professional tools such as Perforce, Vault or even Team System. Having evaluated these, I could have made a proper value judgement on whether CVS/SVN were worth their "free" price tag.
能够处理分支和分叉是一个开始。
尝试与 vss 并行使用 subversion 一段时间,您很可能会发现许多论据来说服您的老板。 如果你不这样做,你的老板是对的,没有理由换。
being able to handle branching and forking is a start.
Try using subversion for a while in parallel to vss you will most likely find many arguments to convince your boss. If you don't, your boss is right, no reason to switch.
让他们在 google 上搜索“vss 问题”、“源安全损坏”,或者直接查看 Wiki 页面即可找到相关内容。 这应该会让他们相信,将业务的如此重要部分押注于您可能不是一件长期可行的事情。
你的团队有多大? (即,我的意思是有多少会员,而不是您是否是沙拉爱好者)一旦您开始拥有超过六个相当活跃的用户,VSS 就会让您头疼。
我严重怀疑微软是否使用它(事实上,他们不使用定制的 Subversion 或 CVS 变体吗?)并且你必须问自己 - 如果公司不吃他们自己的狗粮,你为什么要吃它?
Get them to google for 'vss problem', 'source safe corruption' or simply look at the Wiki page for it. That ought to convince them that it's probably not a long-term viable thing for you to be betting such a vital part of your business on.
How big is your team? (ie, I mean how many members, not whether or not you're salad dodgers) Once you start to get more than half a dozen quite active users, VSS is going to give you headaches.
I seriously doubt that Microsoft use it (in fact, don't they use a customised Subversion or CVS variant?) and you've got to ask yourself - if the company don't eat their own dogfood, why would you eat it?
基本答案是,您必须证明转换能够满足业务需求。 例如:
论证这些事情还需要定量的东西,而不仅仅是“我们将降低成本,因为这是正确的方法!”。
需要注意的一件事是,开发人员很容易说服自己,在不首先通过基本业务过滤器的情况下进行更改将是有益的。 一旦发生这种情况,开发人员就会对他们的工具不满意,并且会倍感沮丧,因为他们认为管理层不会倾听。 如果您无法检查上述其中一项,那么您将没有机会说服管理层做任何事情(除非管理层无能,但这是另一个问题)。
Basic answer is that you have to make the case that switching meets the needs of the business. For example:
Making the case on these things also requires something quantitative, not just "we will lower costs because this is the right way to do it!".
One thing to watch out for is that it's too easy for a developer to convince themselves that it would be beneficial to make the change without first going through the basic business filters. Once that happens, you end up with developers who are unhappy with their tools and are doubly frustrated because they think management won't listen. If you can't check off one of the things above, them you'll have no chance of persuading management of anything (unless management is incompetent, but that's for another question).
为何选择 Subversion 而不是 VSS?
我向经理提出了建议,这是一个非常容易销售的工具。 我发现它更容易使用,特别是对于分支(我们的项目花了 5 个小时在 VSS 中“共享和固定”,然后每个操作都需要额外的时间才能完成!)。
Why Subversion over VSS?
I made the proposal to my manager, and it was a pretty easy sell. I've found it to be much easier to use, especially for branching (our project took 5 hours to "share and pin" in VSS, and then each operation took extra time to complete!).
我之前写过关于为什么 VSS 不是一个好主意。 您也许能够从中获得一些信息。 还有这篇文章和此包含更多信息。
VSS 2005 掩盖了 6.0 中的一些缺陷,但并没有以特别令人信服的方式。 同样的脑死亡基础依然存在。
I've previously written about why VSS is not a good idea. You might be able to gain some information from that. Also this article and this one contain further information.
VSS 2005 has papered over some of the cracks in 6.0, but not in a particularly convincing way. The same brain-dead foundation remains.
即使它没有损坏,从 VSS 迁移也有潜在的好处。 首先,也是最简单的一点,您无需购买新的 VSS 许可证。 其次,VSS产品有很多缺陷的例子(有些也得到了MS的承认)。 SVN 的学习曲线至少与 VSS 一样低,如果开发人员对其源代码控制系统更满意,他们更有可能尽早并经常使用它。 这将大大降低您公司的风险,这是一个很好的好处。
Even if it ain't broke, there's a potential benefit to migrating from VSS. First and most trivially, you won't have to buy new VSS licenses. Second, there are many examples of deficiencies in the VSS product (some also acknowledged by MS). The learning curve for SVN is at least as low as for VSS, and if you have devs happier with their source control system, they're more likely to use it early and often. That will translate to lots less risk for your company, and that's a good benefit.
@Jason:VSS 坏了。
我认为推动放弃 VSS 的最有力方法是指出源代码资产的重要性。 以诚信去冒险并不是明智的商业选择。
另外,您的程序员是该资产的创建者,让他们更轻松地提高工作效率意味着您的源代码资产具有更多价值。 乔尔在《软件》杂志上经常谈到,对程序员的投资对他的公司来说是一个巨大的胜利。
这里的其他答案都描述了您在提出理由时可以指出的具体原因。
@Jason: VSS is broken.
I think the most powerful method for motivating a change away from VSS is to point out how critical an asset your source code is. Taking risks with its integrity is not a wise business choice.
Add that your programmers are the creators of this asset, and that making it easier for them to be productive means more value in your source code asset. Joel on Software often talks about how investing in his programmers is a big win for his company.
The other answers here all describe specific reasons that you can point to when making your case.
除了其他答案中给出的技术要点之外,可能还潜藏着一些非技术原因,您应该准备好应对:
您应该调查您的公司是否有任何针对开源软件(或误导性恐惧)的政策。 如果公司或其律师不了解哪些许可证会“感染”专有代码,哪些不会,以及您可以使用不影响您的专有代码的开源代码做什么,您将很难让他们从专有工具切换到开源工具。 (而且您手头可能有更重要的教育工作。)
在争论从专有(例如 VSS)到开源(例如 subversion)的转变时,您还需要准备好捍卫代码的质量和缺乏有关代码的任何保证或其他合同权利的需要。
In addition to the technical points given in other answers, there may be non-technical reasons lurking that you should be prepared to respond to:
You should investigate whether your company has any sort of policy against (or misguided fear of) open source software. If the company or its lawyers don’t understand the ins and outs of which licenses “infect” proprietary code and which don’t, as well as what you can do with open source code that doesn’t affect your proprietary code, you will have a hard time getting them to switch from a proprietary to an an open source tool. (And you may have a bigger education job on your hands.)
In arguing for the switch from proprietary (e.g. VSS) to open source (e.g. subversion) you’ll also need to be prepared to defend the quality of the code and the lack of any need for a warranty or other contract rights regarding the code.