对于一个非常小的团队(一个开发人员),推荐的源控制系统是什么?
价格没关系.客户会支付:-)
我正在使用C++中的VS 2008以及之后的C#和WPF使用Vista32.为此设置一个额外的(物理)服务器似乎有点矫枉过正.
任何意见?
我会使用Subversion(实际上我使用它)[ 更新:2014年7月 - 我使用Git - 请参阅答案的结尾].SVN是:
自由,
足够好(见下面的缺点),
简单,
适用于Windows(以及Linux),
很多人都使用它,所以很容易得到帮助,
可以与大多数IDE集成,即Visual Studio(即ankhsvn或VisualSVN - 更多信息)或Eclipse(即Subclipse - 这里有人问过这个).
我强烈建议单独的机器来源控制服务器.最好是在云端的某个地方.好处:
如果开发框死亡,则不会丢失源控件存储库.
您不必担心再维护一个盒子.
有些公司托管SVN存储库.
以下是各种操作系统的SVN(客户端和服务器)包的链接.
SVN的缺点我在Windows机器上使用SVN大约5年,发现SVN有一些缺点:).
SVN(或其客户端 - TortoiseSVN)有一个很大的缺点 - 除非你有SSD驱动器,否则在大型(数千个文件)存储库上会很慢(在更新或提交时).
很多人抱怨SVN的融合程度如何.
我合并了大约4年(包括大约2年的CVS - 这很糟糕,但可行)和SVN大约2年.
而且我个人并不觉得这很难 - 另一方面 - 在CVS中合并分支后,任何合并都很容易:).
我每周一次合并大型存储库(实际上是两个存储库),很少有冲突很难解决(大多数冲突都是使用我使用的diff软件自动解决的).
但是,如果您保留一些简单的规则,在少数开发人员的项目合并应该不是问题:
经常合并更改,
避免同时在各个分支中积极发展.
许多开发人员推荐像Git或Mercurial这样的分布式版本控制.
从单一开发人员的角度来看,DVCS相对于SVN只有一些重要优势:
DVCS可以更快.
您可以提交到本地存储库而无需访问中央存储库.
DVCS很热门,很喜欢使用/学习(如果有人为你的学习付费).
在单个开发人员的情况下,我认为合并不是问题.
Joel Spolsky撰写了关于Mercurial的教程,该教程绝对值得一读.
因此,尽管DVCS具有许多优点,但如果合并或速度不是问题,我会继续使用SVN.
或者尝试Mercurial,根据这个和这个 SO问题,在Windows上得到更好的支持(2011年7月).
大约一年,我使用Git(主要是Git Bash)作为我的宠物项目(即解决欧拉问题),每个欧拉问题的本地分支都是非常好的功能 - 正如它被描述为DVCS的优势一样.
今天,Windows上的Git工具比2年或更久以前好多了.您可以使用远程仓库(如GitHub或ProjectLocker以及许多其他人)将您的项目副本远离工作站,而无需额外的努力/资金.
但是我只使用GUI客户端查看差异(有时候选择要提交的文件),所以最好不要害怕命令行 - 这真的很好.
所以到今天我会和Git一起去.
我也会推荐Mercurial.它的命令集很像Subversion中的命令集,因此学习曲线并不那么陡峭.如前所述,它设计为在本地运行,但也可以轻松地跨计算机共享/合并更改,甚至只需将其推送到远程服务器进行备份.
它提供了优秀的工具,如TortoiseHG,它具有良好的NetBeans和Eclipse插件.它也在Win32上本机运行,因为它是用Python编写的.
如果您不想自己设置服务器(例如备份),可以使用免费托管服务提供商; Mercurial Wiki上有一个全面的列表.
我肯定会推荐git
适用于大型和小型团队.唯一的缺点是本机窗口支持不佳.虽然它在Cygwin中对我来说很好.还存在一个本机Windows端口.
它的一些好处:
非常支持非线性工作流程.它的分支和合并远比Subversion好.
导航存储库的好工具
处理好大项目.
如果不更改存储库的加密签名,则无法修改历史记录
凭借其非单片设计,它易于编写脚本.
有些人发现它有一个陡峭的学习曲线.但是一旦你理解了它,你几乎可以做任何你想要的东西.
去subversion和tortoiseSVN,你不需要在服务器上设置它.
成本为零
颠覆文档非常有趣且易于阅读
tortoiseSVN是一个非常方便的客户端
Sourcegear的Vault是一个很好的选择,它在SqlServer上运行,它已存在多年.我不会使用任何版本的VSS(Visual Source Safe).
Subversion的进入门槛非常低.
TortoiseSVN是一个免费的客户端,并集成到您的资源管理器中 - 即在鼠标右键单击菜单中.
存储库可以只是PC或网络驱动器上的某个目录.备份只意味着压缩这个目录
Visual Studio for Subversion有一些插件,AnkSvn就是我使用的插件,它是免费的并且可以很好地集成(即它可以很聪明地移动和删除文件等)
Subversion是一个开发人员的不错选择.
更新:
自从这篇文章以来,我一直在使用Mercurial.它是分布式SVN."分布式"方面可能对单个开发人员没有直接用处,但是它在合并时更好并且更快一些.还有一个免费且良好的Windows资源管理器扩展客户端 - Tortoise Hg.
总而言之,如果你是那种同时在多个分支机构工作的人(做尖峰等),或者如果你同时在多台PC上工作,并希望完全离线访问两者的签到历史,那么Mercurial.如果您只是想要简单的跟踪和经过充分验证且易于理解的解决方案,那么Subversion.
我很惊讶没人提到Perforce.它可供2人免费使用,速度极快,并与VS集成.此外,源服务器默认也具有绑定.
除了源代码控制之外,完成循环并设置符号服务器和源服务器是非常值得的,这样您就可以对所发送的任何内容进行简单的调试(例如,不再需要搜索与二进制文件匹配的pdbs或源代码) .自2005年以来,源和符号服务器都完全免费并且在VS中受支持.
我使用Mercurial.它在我的Vista开发系统上运行独立运行,不需要其他依赖项.我使用命令行,但也有TortoiseHG与Explorer集成.
两条评论:
还有其他工具可能更好地与VS集成.我认为Subversion有很好的VS插件.
单独服务器的好处是它可以很好地备份你的所有工作,以防你的硬盘死在你身上等等.所以折扣有一个.
编辑: @Slartibartfast - 如果你只想在一台机器上运行源代码控制,像git或Mercurial这样的分布式源代码控制工具是理想的,因为它们被设计为在没有服务器开销的情况下在机器上运行完整的存储库.事实上,您从未将您的存储库连接到任何其他人来推送和拉动更改并不意味着该工具不正确.
您可以使用SourceGear中的Vault,这是Visual Studio源安全的替换工具.IDE集成在Visual Studio中.
该工具对单个用户免费.
更多信息:http: //www.sourcegear.com/vault/index.html
您的问题有两种可能的解决方案:集中式VCS或分布式VCS(DVCS).
像Subversion这样的集中式VCS可以满足您提交和浏览日志的功能.它还使您能够将存储库安全地存储到另一台计算机,这应该是您的主要目标之一,因为硬盘驱动器故障始终是可能的.但是,使用Subversion时,历史记录仍然只驻留在中心位置,使其易受攻击,并且您声明您不希望拥有其他服务器.
分布式版本控制系统(DVCS)(如Mercurial和Git)使您可以在存储库上执行更复杂的操作.使用这两种工具,整个存储库都驻留在同一台计算机上,这使得备份和使用存储库与另一台计算机(如笔记本电脑)变得更加容易.虽然Mercurial最初可能看起来很复杂,但是你使用subversion的操作与Mercurial几乎相同.因此,如果您已经了解Subversion并且稍后可以轻松使用Mercurial的更高级功能,则无需额外开销.
您应该能够为Mercurial存储库找到在线存储库服务,这样您就可以在需要的时候进行轻松备份并在某一天进行协作.
我的推荐是Mercurial with TortoiseHg.