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

时间:2008-09-05 08:01:17

标签: version-control

对于一个非常小的团队(一个开发人员),推荐的源控制系统是什么?

价格没关系。客户将支付:-)
我正在使用C ++中的VS 2008和后来的C#以及WPF开发Vista32。为此设置一个额外的(物理)服务器似乎有点矫枉过正。

有任何意见吗?

26 个答案:

答案 0 :(得分:62)

我会使用Subversion(实际上我使用它)[更新:2014年7月 - 我使用Git - 请参阅答案的结尾]。 SVN是:

  • 免费,
  • 足够好(见下面的缺点),
  • 简单,
  • 在Windows(以及Linux)上运行正常,
  • 很多人都使用它,所以很容易获得帮助,
  • 可以与大多数IDE集成,即 Visual Studio (即ankhsvnVisualSVN - more info)或 Eclipse (即Subclipse - here有人询问此事。)

我会强烈推荐单独的机器到源控制服务器。最好在某个地方在云上。优点:

  • 如果您的开发框死亡,则不会丢失源代码管理存储库。
  • 您不必担心再维护一个盒子。

有些公司host SVN repositories

Here是指向各种操作系统的SVN(客户端和服务器)包的链接。

SVN的缺点

我在Windows机器上使用SVN大约5年,发现SVN有一些缺点:)。

大型存储库的速度很慢

SVN(或其客户端 - TortoiseSVN)有一个缺点 - 除非你有SSD,否则在大型(数千个文件)存储库上会很慢(在更新或提交时)驱动。

合并可能很困难

很多人抱怨SVN的融合程度如何。

我合并了大约4年(包括大约2年的CVS - 这很糟糕,但可行)和SVN大约2年。

另一方面,我个人并不难发现 - 在CVS合并分支后合并很容易:)。

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

然而,如果您保留一些简单的规则,在少数开发人员的项目合并应该不是问题:

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

2011年7月新增

许多开发者推荐Distributed Version Control GitMercurial

单一开发人员的角度来看,DVCS相对于SVN只有一些重要优势:

  • DVCS可以更快。
  • 您可以在不访问中央存储库的情况下提交到本地存储库。
  • DVCS很热门,喜欢使用/学习(如果有人为你的学习付费)。

我不认为合并是单个开发人员的问题。

Joel Spolsky撰写了tutorial about Mercurial,这绝对值得一读。

所以,尽管DVCS有许多优点,但如果合并或速度不是问题,我会继续使用SVN。

或者尝试使用Mercurial,根据thisthis SO问题,在Windows上得到更好的支持(2011年7月)。

于2014年7月新增

大约一年我使用Git(主要是Git Bash)作为我的宠物项目(即解决Euler问题),每个欧拉问题的本地分支都是非常好的功能 - 正如它被描述为DVCS的优势一样。

今天,Windows上的Git工具比2年或更久以前好多了。 你可以使用远程仓库(比如GitHub或ProjectLocker等)来保存 远离工作站的项目副本,无需额外的努力/金钱。

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

所以到今天我会和Git一起去。

答案 1 :(得分:58)

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

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

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

答案 2 :(得分:21)

我肯定会推荐git

适用于大型和小型团队。唯一的缺点是本机窗口支持不佳。虽然它在Cygwin中对我来说很好。还存在native windows port

它的一些好处:

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

有些人发现它有一个陡峭的学习曲线。但是一旦你理解了它,你几乎可以做任何你想要的东西。

答案 3 :(得分:13)

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

  • 费用为零
  • 颠覆文档非常有趣且易于阅读
  • tortoiseSVN是一个非常方便的客户

答案 4 :(得分:12)

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

答案 5 :(得分:12)

Subversion的进入门槛非常低。

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

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

Visual Studio for Subversion有一些插件,AnkSvn是我使用过的插件,它是免费的,可以很好地集成(即移动和删除文件等都很聪明)

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

<强>更新

自从这篇文章以来,我一直在使用Mercurial。它是分布式SVN。 “分布式”方面可能对单个开发人员没有直接用处,但是它在合并时更好并且更快一些。还有一个免费且良好的Windows资源管理器扩展客户端 - Tortoise Hg

总而言之,如果您是那种同时在多个分支机构工作(做尖峰等)的人,或者如果您同时在多台PC上工作并希望完全脱机访问两者的签入历史记录,那么< EM>水银。如果您只想要简单的跟踪和经过充分验证且易于理解的解决方案,那么 Subversion

答案 6 :(得分:11)

我很惊讶没有人提到Perforce。它可供2人免费使用,速度极快,并与VS集成。此外,source server默认情况下也绑定了它。

除了源代码控制之外,完成循环并设置symbol serversource server是非常值得的,这样您就可以对所发送的任何内容进行简单调试(例如,不再需要搜索对于pdbs或与二进制文件匹配的源)。自2005年以来,源和符号服务器都完全免费并且在VS中受支持。

答案 7 :(得分:8)

您可以使用SourceGear中的Vault, 替换工具,用于Visual Studio源安全。 IDE集成在Visual Studio中。

该工具对单个用户免费。

更多信息:http://www.sourcegear.com/vault/index.html

答案 8 :(得分:8)

我使用Mercurial。它在我的Vista开发系统上运行独立运行,不需要其他依赖项。我使用命令行,但还有TortoiseHG与资源管理器集成。

两条评论:

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

答案 9 :(得分:5)

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

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

分布式版本控制系统(DVCS)(如Mercurial和Git)使您可以在存储库上执行更复杂的操作。使用这两种工具,整个存储库都驻留在同一台计算机上,这使得更容易进行备份并将存储库与另一台计算机一起使用,例如:笔记本电脑。虽然Mercurial最初可能看起来很复杂,但是你使用subversion的操作与Mercurial几乎相同。因此,如果您已经了解Subversion并且稍后可以轻松使用Mercurial的更多高级功能,则无需额外开销。

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

我的建议是Mercurial with TortoiseHg。

答案 10 :(得分:4)

源控制系统不关心是否只涉及一个开发人员:)

我建议您使用之前和之前使用的源控制系统。
如果你喜欢vs 2008的源代码控制系统集成,但是我会选择 TFS,尽管我从未有过设置它的经验,但它不应该那么难。

另一种可能性是使用svn(你会在google上找到一些服务器)并使用集成到windows shell中的Tortoisesvn并且很高兴能够使用它。

答案 11 :(得分:3)

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

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

答案 12 :(得分:2)

我建议两件事:

首先,那个其他服务器 - 如果你的机器死了怎么办?房子烧毁了吗?从冗余的角度来看,将它放在另一台机器上是一个好主意。

第二个是什么:

如果您非常熟悉visual source(un)安全,请考虑SourceGearVault。它非常好,非常快,并且是VSS的一个大大改进的“克隆”(即从用户POV以相同的方式工作,而不是引擎盖下)。需要SQL服务器和windows tho(它是.NET + SQL服务器)。 1位用户免费。

你不是,我建议你做两件事之一:

首先,获取VisualSVN。它很棒,与VS2008配合得非常好。 其次,如果你必须在本地运行它,请获取VisualSVN服务器(免费!)。确保你有一个很好的备份计划。在XP / 2003/2008 / Vista等上运行。它只是Apache + SVN,所以它只是节省你的设置 - 花了我5分钟安装并让它运行。

或者,我更喜欢这个:

去Unfuddle,Dreamhost等地方,并获得SVN托管服务。它是私人的,它很快,而且最重要的是 - 它是OFFSITE。我的梦想帐户,有500GB的存储空间和1-2TB的转移/月费用约6美元/月!还有其他人做SVN托管+ bug跟踪等。环顾四周。

但是 - 是SVN是schizzzznit.you可以创建一个本地存储库,但我喜欢有一个远程备份服务器。

对于1名开发人员(或<5 IMO)而言,TFS总是完全过度杀伤

答案 13 :(得分:2)

前段时间我做了一篇关于使用SVN只有一个开发人员的博客文章。 我叫它Single serving source control

答案 14 :(得分:2)

Bazaar是一个很好的版本控制系统。我喜欢将它用于我的linux配置,因为你不需要创建一个单独的repo。

答案 15 :(得分:2)

我意识到成本不是问题,但是一个不涉及签入和签出的免费解决方案是在Dropbox内托管代码,这样你就可以立即获得版本控制和备份是单个开发人员系统提供的主要功能。

答案 16 :(得分:1)

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

答案 17 :(得分:1)

我使用Springloops - version control tool for developers

  1. SVN / Git版本控制
  2. 自动部署到服务器
  3. 创建存储库
  4. 邀请他人
  5. 导入文件
  6. 很棒的支持
  7. 所以,试试Springloops

答案 18 :(得分:1)

我现在和Bazaar一起工作了几个星期,非常喜欢它。我是一名Linux开发者,所以对Tortois不太了解,但如果你喜欢它,你应该知道有一个Tortoisbzr

答案 19 :(得分:1)

这里有一些好的答案。

我想重新尝试使用单独的计算机来托管源控制服务器,尽管它不必是专用计算机。它可能是您的Windows Home Server框,或者您正在运行的其他服务器。或者它可能是托管在其他服务器上的虚拟机。无论如何,只需将它与编写代码的机器分开即可。

我还想建议您为服务器获得良好的备份规则。至少每晚一次;每小时,如果可以的话。备份到专用设备(如外部硬盘驱动器)或异地(在另一个州的堂兄家中的服务器)或云端(Amazon S3)。请记住,您的源代码是您的关键资产;照顾它!

答案 20 :(得分:1)

我会推荐Subversion,因为它适用于单个开发人员,我认为你没有进行复杂的合并和大量的日志/历史检查。

似乎很多人正在使用http://svnrepository.com/进行托管。如果你以后需要它,它会附带Trac甚至是Git。

答案 21 :(得分:1)

嗯,首先,你不需要分发一个:) 我不确定这个物理部分是什么意思,因为你可以把svn服务器放在你自己的机器上,没什么问题。

另一方面,NetBeans具有本地历史记录模块,用于记录文件的所有本地更改。如果Visual Studio有类似的东西,也许这样的东西就足够了。

答案 22 :(得分:0)

我最近将我的工作室从Subversion移到了Perforce,并在我的博客here上做了一些关于它的笔记,有点像是一个事后的事。希望它有用。

答案 23 :(得分:0)

我也使用Perforce作为我个人的东西,主要是因为我们在工作中使用它。它也有emacs绑定,因此您可以在emacs中同步,检查内容或其他内容。

答案 24 :(得分:0)

我建议使用subversion。许多人建议使用单独的盒子作为服务器,以防您的开发机器死亡。当SVN服务器死机时会发生什么?这里的答案是,无论您选择在哪里运行服务器,都要确保您经常进行频繁备份,可能每天都会自动备份到一些辅助的,可能非现场的机器上。

答案 25 :(得分:0)

我不明白为什么你的开发人员会改变源控制问题上的任何内容。我会遵循相同的系统(事实上我在我的个人项目上)。在这些情况下我使用wush.net(svn和trac)。设置起来很快,不要求你自己做或知道任何服务器问题。我建议你使用这样的东西。