2011-01-27 73 views
0

稍微有点背景第一:如何以及我应该使用哪个工具进行源代码管理?

我已经使用了Team Foundation Server几个月,并且知道如何使用它。我一直在Codeplex上为我的项目使用它。他们需要TFS,这是在我的Visual Studio安装,所以基本上我从来不知道什么都花了得到它的工作,因为它无缝地在Visual Studio中工作,我不得不做检查和退房的东西...

但现在我想看看有什么其他替代品可用,先装水银的命令行(这是我从来没有使用过),然后寻找一个GUI的替代,并安装TortoiseHg,随后从在其网站上的文档的指令。然后它说要安装一个3路Diff工具...我搜索了它,然后找到了TortoiseSVN;我认为它一定是一些插件或东西,所以我搜索了与我的情况有关的问题,当我偶然发现这个SO Question,并被许多工具迷住了不同的工作。

现在:

  • 有人可以解释所有的工具都是源代码控制。我是否必须为每个不同的任务安装不同的工具。对于他们来说没有任何单一的软件包。基本上,我们在源控制中执行的任务是什么。我只知道CheckIn,Check Out和检查来自Codeplex网站的差异。 我还应该知道什么

  • 是否如Git,到位桶等每一个网站使用他们的源代码控制不同的龟(XXX)。

  • 是源控制和版本控制不同的术语

请帮助..

+1

就像一个方面说明 - CodePlex上不需要TFS,你可以使用SVN为好。 – BrokenGlass 2011-01-27 01:14:58

+0

我知道..它给了我选择TFS和其他一些选项..我知道TFS,所以我把它... – 2011-01-27 01:16:14

回答

5

这是一个巨大的话题,将不可能提供一个包罗万象的答案。但是这里有几个想法,假设你正在寻找更多的是Software Configuration Management的解决方案,而不是一个简单的Revision Control System类型的方法:

发布管理:

除了并发控制(办理登机手续,入住出门等),您的SCM可以/也应该提供历史记录,标签,分支和其他版本管理类型功能。也就是说,它应该总是提供一个单一的真实来源,以说明哪些源文件在哪些发行版,服务包等中。为了实现这一点,您的构建环境需要很好地集成到您的SCM中。

WIP管理:

一个良好的供应链管理系统,将让你的工作正在进行中比较到最新的版本检查。它还应该允许您恢复您的WIP,暂时搁置,或者逐个文件地合并另一个人的更改。

文档&培训

不要小看它是多么重要的是使用一个工具,如果需要,可以给你一吨的帮助,书籍,文档,社区支持,甚至付费支持。另外选择一个“流行”的工具可能意味着一些新的开发者有一件事要学习。

持续集成:

自动的构建是任何认真组织必须的,你应该选择一个SCM,可以在你的编译系统(如哈德森,CruiseControl的,竹等)接入

安全

单片机系统应该有一个内置的认证系统,也可以使用外部认证提供商,因为许多组织随着时间的推移而变化。另外,它应该能够支持在防火墙之外工作的开发人员,最好是支持http。

IDE和构建工具集成

为了使所有这些东西更容易您的SCM必须能够无缝地连接到您的开发系统和你使用的任何命令行工具。几乎所有非Microsoft IDE都支持所有SCM工具,这一事实变得更加简单。

源浏览

是我见过最SCM工具有一批非常优质的第三方浏览器,如鱼眼的。所以我把这作为一个区分因素。

那么使用哪个工具?

如果你的组织在你的公司内相当完善,那么选择Subversion。它非常流行,与每个IDE/OS/Build工具集成在一起,与ToroiseSVN一起工作,支持所有平台,支持多种协议,多个UI,强大的命令行,庞大的社区,免费且坚实耐用。它也有一个很好的免费book

如果你有一个高度分布式开发组和/或希望收到来自许多不同的人的开源贡献,去使用Git的分布式功能。

除了这两个,为自己节省大量的时间和麻烦,忘掉一切....真的。我意识到我正在opinion持,但你有点要求提出意见。

1

如果我是劝东西给你,这将是

使用水银(又名hg),并从 开始在命令行中学习它。这 这样,你将学习所有的基本概念, 可能只使用GUI覆盖等 如TortoiseHG时有些从 隐藏你。所有与当前良好的 简单的教程,也许 广为人知hginit覆盖 一些简单的使用场景。

这将是“我还应该知道什么”部分的答案,至少是一开始。然后你可以自己探索,有一个有限的,但有点坚实的基础。或者,至少,您可以提出更简明的问题以了解更多信息,或者对您引用的SO问题有更多的了解。当然,你的问题比这个要宽泛得多,但我建议不要试图一下子把握一切。每个系统都有它自己的怪癖和特色,但你现在不应该为此担心。就像编程一样 - 如果你还不知道,你不应该一次尝试学习多种语言。

啊,而且作为点睛之笔:龟(XXX)是不完全是一个版本控制系统,换一个外壳,集成的Windows客户端系统XXX那只是一个典型的名称。就我而言,“乌龟”部分是指“壳”。


PS。 “Mercurial”的建议是由于我个人的口味,当然也是由于学习Hg会让你从其他系统很容易掌握大部分想法(如果你需要的话)。

1

从我个人的经验,我会建议在寻找新一代的“源代码控制系统”被称为分布式版本控制系统。这些都是像Git这样的系统(我认为Mercurial,但我没有用过),它在本地有效地存储完整版本的控制系统,当你提交到远程仓库时(推入git条款),你推送你的本地版本控制系统到服务器上的主版本控制系统。

而且Git的设计,使分支变得轻而易举。在像Subversion这样的系统中,分支不是那么容易,但是使用Git Branching是推荐的修改操作。我已经使用了Git,Subversion(SVN)和SourceSafe(迄今为止最糟糕的三种源代码控制系统!),这是Git比较传统的源代码管理系统的主要优势。

例如,如果你是修复bug或添加在使用SVN代码库功能的标准做法是

  1. 退房你会在工作的分支。
  2. 制作任何错误修复并测试它们。
  3. 签入更改。

使用Git或类似的系统你会

  1. 科主分支机构本地(即开发,制造设备1.1版本等)。
  2. 让你的本地分支的版本的任何错误修复和测试(即你为1.1版本的JIRA-123-bug修复分支)。
  3. 将分支合并回您创建的主分支的本地副本,并确保一切正常。
  4. 然后将您对主分支的本地副本所做的更改推送到中央Git存储库。

这样做的好处是,如果您必须返回并修复错误修复程序,您仍然拥有该分支的本地副本。

有关更多信息,请参阅文章A Successful Git Branching Model

相关问题