单个开发人员的源代码控制系统

单个开发人员的源代码控制系统

Source control system for single developer

对于一个非常小的团队(一个开发人员),推荐的源代码控制系统是什么?
价格无所谓。 客户将支付:-)
我正在使用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年(包括在CVS中合并大约2年-这很糟糕,但是可行),并且与SVN合并大约2年。

我个人并不觉得困难-另一方面-在CVS中合并分支后,任何合并都很容易:)。

我每周合并一次大型存储库(实际上是两个存储库),很少遇到难以解决的冲突(大多数冲突都是使用diff软件自动解决的)。

但是,如果您保留一些简单的规则,那么在几个开发人员进行项目的情况下,合并根本就不会成为问题:

  • 经常合并更改,
  • 避免同时在各个分支机构积极发展。

2011年7月新增

许多开发人员建议使用分布式版本控制,例如Git或Mercurial。

从单个开发人员的角度来看,DVCS与SVN相比仅具有一些重要的优势:

  • DVCS可以更快。
  • 您可以提交到本地存储库而无需访问中央存储库。
  • DVCS非常热门,可以使用/学习(如果有人为您的学习付费)。

而且,对于单个开发人员,我认为合并不是问题。

Joel Spolsky撰写了有关Mercurial的教程,绝对值得一读。

因此,尽管DVCS具有许多优点,但如果合并或速度不成问题,我还是会选择SVN。

或尝试使用Mercurial,根据此问题以及此SO问题,Windows会更好地支持(2011年7月)。

2014年7月新增

在大约一年的时间里,我将Git(主要是Git Bash)用于我的宠物项目(即解决Euler问题),而每个Euler问题的本地分支机构确实是一个不错的功能-就像被描述为DVCS的优势一样。

今天,Windows上的Git工具要比2年前或更多年前好得多。
您可以使用远程仓库(例如GitHub或ProjectLocker等)来保持
无需额外的工作/金钱就可以从工作站上复制项目的副本。

但是,我仅使用GUI客户端查看差异(有时选择要提交的文件),
因此最好不要害怕命令行-真的很好。

因此,从今天开始,我将继续使用Git。


我也推荐Mercurial。它的命令集与Subversion中的命令集非常相似,因此学习曲线并不那么陡峭。如前所述,它设计为在本地运行,但在计算机之间共享/合并更改也很容易,甚至可以将其推送到远程服务器进行备份。

它提供了TortoiseHG等出色的工具,并且具有适用于NetBeans和Eclipse的良好插件。它也是用Python编写的,可以在Win32上本地运行。

如果您不想自己设置服务器(例如用于备份),则可以使用免费的托管服务提供商。 The Mercurial Wiki上有完整列表。


我肯定会推荐git

对于大型和小型团队都适用。唯一的缺点是本机Windows支持差。尽管在Cygwin中对我来说效果很好。还存在一个本机Windows端口。

它的一些好处:

  • 对非线性工作流程的出色支持。它的分支和合并要比Subversion好得多。
  • 浏览存储库的好工具
  • 很好地处理大型项目。
  • 如果不更改存储库的加密签名,则无法修改历史记录
  • 非单片设计使其易于编写脚本。

有人发现它的学习曲线很陡。但是一旦您了解了它,就可以使用它进行几乎所有您想做的事情。


进行subversion和tortoiseSVN,您无需在服务器上进行设置。

  • 成本为零
  • Subversion文档很棒而且阅读很有趣
  • tortoiseSVN是一个非常方便的客户端


颠覆的进入门槛很低。

TortoiseSVN是一个免费客户端,已集成到您的资源管理器中-即在鼠标右键菜单中。

该存储库可以只是PC或网络驱动器上某个目录。备份仅意味着压缩此目录

有一些用于Subversion的Visual Studio插件,AnkSvn是我使用过的插件,它是免费的并且集成良好(即,在移动和删除文件等方面很聪明)

对于一个开发人员来说,Subversion是一个不错的选择。

更新:

从这篇文章开始,我一直在使用Mercurial。它是分布式SVN。"分布式"方面可能对单一开发人员没有直接的帮助,但是合并方面更好,并且速度更快。还有一个免费且优质的Windows资源管理器扩展客户端-Tortoise Hg。

因此,总而言之,如果您是那种可以同时在多个分支机构工作(执行峰值操作)的人,或者您一次要在多台PC上工作并且想要完全脱机访问这两者的签到历史的人,那么Mercurial。如果您只是想要简单的跟踪以及一个行之有效且易于理解的解决方案,则可以使用Subversion。


Sourcegear的Vault是一个不错的选择,它可以在SqlServer上运行,并且已经存在很多年了。我不会使用任何版本的VSS(Visual Source Safe)。


我很惊讶没有人提到Perforce。它免费供2人使用,速度非常快,并且与VS集成。默认情况下,源服务器也具有绑定。

除了源代码控制,确实值得完成循环并设置符号服务器和源服务器,以便您可以轻松调试已交付的产品(例如,不再搜索与二进制文件匹配的pdbs或源代码) 。自2005年以来,源服务器和符号服务器都是完全免费的,并且在VS中得到支持。


我用水银。它可以在我的Vista开发系统上独立运行,无需其他依赖项。我使用命令行,但也有TortoiseHG与Explorer集成。

两条评论:

  • 还有其他工具可能会更好地与VS集成。我认为Subversion有不错的VS插件。
  • 单独的服务器的好处是,如果您的HDD在您身上死了,它可以很好地备份您的所有工作,因此,如果有一个,则可以打折。
  • 编辑:@Slartibartfast-如果您只想在一台计算机上运行源代码控制,则git或Mercurial之类的分布式源代码控制工具非常理想,因为它们旨在在计算机上运行完整的存储库而没有服务器的开销。您从未将存储库连接到任何其他人来推动和拉动更改的事实并不意味着该工具将不正确。


    您可以使用SourceGear的Vault,这是Visual Studio源代码安全的替代工具。
    IDE集成在Visual Studio中。

    该工具对单个用户免费。

    详细信息:http://www.sourcegear.com/vault/index.html


    有两种可能的解决方案:集中式VCS或分布式VCS(DVCS)。

    像Subversion这样的集中式VCS可以满足您提交和浏览日志的功能。它还使您能够安全地将存储库存储到另一台计算机,这应该是您的主要目标之一,因为总是可能发生硬盘故障。但是,使用Subversion时,历史记录仍仅驻留在中央位置,这使其容易受到攻击,并且您声明不希望拥有其他服务器。

    诸如Mercurial和Git之类的分布式版本控制系统(DVCS)使您可以在存储库上执行更复杂的操作。使用这两个工具,整个存储库都位于同一台计算机上,这使得备份和将存储库与另一台计算机一起使用变得更加容易。笔记本电脑。尽管Mercurial乍一看似乎很复杂,但您使用Subversion进行的操作与Mercurial几乎相同。因此,如果您已经了解Subversion,就没有额外的开销开始使用了,以后您可以轻松使用Mercurial的更高级的功能。

    您应该能够找到Mercurial存储库的在线存储库服务,使您可以轻松进行备份,并有一天需要时进行协作。

    我的建议是Mercurial与TortoiseHg。


    源代码控制系统不在乎是否只有一名开发人员:)

    我建议您使用以前使用过且喜欢的源代码控制系统。

    如果您喜欢vs 2008集成的源代码控制系统,尽管我没有经验来设置它,但我还是会选择TFS,但这并不难。

    另一种可能性是使用svn(您会在Google上找到一些服务器)并使用Tortoisesvn,该工具已集成到Windows Shell中并且很好用。


    许多帖子主张将存储库放在服务器上,因为它提供了冗余。我认为这对单个用户没有太大帮助。使用单独的服务器计算机会增加很多复杂性,但并不会带来太多的冗余:如果丢失服务器计算机,则开发计算机上仍会保留当前资源,但是您可能会丢失所有历史记录。如果定期备份服务器,则将存储库放在服务器上确实有意义。对存储库使用外部托管服务可以提供存储冗余,但是您受外部服务的支配,并且需要Internet连接才能访问存储库。如果您使用外部主机,请经常备份您控制的存储库!

    我会先推荐使用基于本地文件的存储库的TortoiseSVN。只要确保定期将本地存储库备份到第二台计算机或外部介质(例如CD-ROM)即可。


    我建议两件事:

    首先,另一台服务器-如果您的计算机死了,会发生什么?房子烧毁了吗?从冗余的角度来看,将其安装在另一台计算机上是一个好主意。

    第二个是:

    如果您非常熟悉视觉源的安全性,请考虑使用SourceGearVault。它非常好,非常快,并且极大地改进了VSS的"克隆"(即,从用户POV的方式进行同样的操作,而不是在后台进行)。需要SQL服务器和Windows(这是.NET + SQL服务器)。 1位用户免费。

    对于您中的不是,那么我建议您执行以下两项操作之一:

    首先,获取VisualSVN。很好,可以很好地与VS2008一起使用。
    其次,如果必须在本地运行,请获取VisualSVN服务器(免费!)。确保您有一个好的备份计划。可以在XP / 2003/2008 / Vista等操作系统上运行。它只是Apache + SVN的引擎盖,因此,它可以节省您的设置时间-我花了5分钟来安装和运行它。

    或者,我更喜欢这个:

    去像Unfuddle,Dreamhost等地方,并为SVN托管。它是私有的,速度很快,最重要的是-它是OFFSITE。我的dreamhsot帐户拥有500GB的存储空间和每月1-2TB的传输费,每月大约需要$ 6!还有其他人可以进行SVN托管+错误跟踪等。环顾四周。

    但是,是的-SVN是schizzzznit。您可以创建本地存储库,但是我喜欢拥有远程备份服务器。

    TFS总计,对于1个开发人员(或<5 IMO)来说完全是致命的


    Bazaar是一个很好的版本控制系统。我喜欢将其用于Linux配置,因为您无需创建单独的存储库。


    我意识到成本不是问题,但是一个不错的免费解决方案,它不需要签入和签出,而是通过执行此操作将代码托管在Dropbox中,您将立即获得版本控制和备份,这是单个文件的主要功能开发人员系统会提供。


    前一段时间,我写了一篇关于如何仅与一名开发人员一起使用SVN的博客文章。
    我称它为单一服务源代码控制


    我使用Springloops-开发人员的版本控制工具

  • SVN / Git版本控制
  • 自动部署到服务器
  • 创建存储库
  • 邀请人
  • 导入文件
  • 大力支持
  • 因此,请尝试使用Springloops


    我建议使用Subversion,因为它是针对单个开发人员的,并且我假设您没有进行复杂的合并和大量的日志/历史记录检查。

    似乎很多人都在使用http://svnrepository.com/进行托管。它与Trac甚至Git一起提供,如果您以后需要的话。


    我现在已经和Bazaar合作了几个星期,真的很喜欢。我是一名Linux开发人员,所以对Tortois的了解并不多,但是如果您喜欢它,您应该知道有一个Tortoisbzr


    这里有一些很好的答案。

    我想再次重申建议使用一台单独的计算机来托管源代码控制服务器,尽管它不必是专用计算机。它可能是您的Windows Home Server盒子,或者是您已经在运行的其他服务器。也可以是托管在其他服务器上的虚拟机。无论如何,只要将其与编写代码的机器分开即可。

    我还想建议您对服务器有一个良好的备份纪律。至少每晚一次;如果可以的话,每小时一次。备份到专用设备(例如外部硬盘驱动器)或其他异地(表弟家的服务器位于另一州)或云中(Amazon S3)。请记住,您的源代码是您的关键资产;搞定此事!


    好吧,一开始,您不需要分发一个:)
    我不确定这个物理部分是什么意思,因为您可以将svn服务器放在自己的计算机上而不会遇到什么麻烦。

    另一方面,NetBeans具有本地历史记录模块,该模块记录文件的所有本地更改。如果Visual Studio具有类似的功能,那么对于您来说也许就足够了。


    放手我会使用git,我相信git magic暗示或描述了一个开发人员想要使用git的许多原因


    我建议使用颠覆。许多人建议您使用单独的服务器作为服务器,以防开发机死机。 SVN服务器死机后会怎样?答案是,无论您选择在哪里运行服务器,都要确保始终进行频繁的备份,并且可能每天自动备份到一些辅助的,最好是不在现场的计算机。


    我也将Perforce用于自己的个人资料,主要是因为我们在工作中使用它。也有emacs绑定,因此您可以从emacs内部进行同步,签入或签出内容等。


    我最近将我的工作室从Subversion移到了Perforce,并在此处的博客上做了一些事后记笔记。希望它有用。


    我不明白为什么您的一位开发人员会在源代码管理问题上进行任何更改。我将遵循相同的系统(实际上,我在个人项目中也这样做)。在这些情况下,我使用wush.net(svn和trac)。它的设置非常快捷,不需要您自己做也不知道任何服务器问题。我建议您使用这样的东西。


    推荐阅读