我应该如何以及使用哪种工具进行源代码管理?

She*_*Pro 0 c# version-control tortoisesvn visual-studio

一点背景知识:

我已经使用Team Foundation Server大约几个月了,并且知道如何使用它.我一直在将它用于Codeplex上的项目.他们需要TFS并且它在我的Visual Studio安装中,所以基本上我从来不知道如何使它工作,因为它在Visual Studio中无缝工作,我只需要检查和检查东西......

但现在我想看看其他替代品是否可用并首先安装了Mercurial命令行(我从未使用过),然后搜索了GUI替代品并安装了TortoiseHg并遵循其网站上的文档说明.然后它说要安装一个3路Diff工具......我搜索了它然后找到了TortoiseSVN; 我认为它必须是一些插件或其他东西所以当我偶然发现这个SO问题时,我搜索了与我的情况有关的问题, 并且被很多工具用于不同的工作而着迷.

现在:

  • 有人可以解释所有用于源代码控制的工具.我是否必须为每个不同的任务安装不同的工具.是不是所有人都有任何一个包.基本上我们在Source Controlling中执行的任务是什么.我只知道签入,签出和检查Codeplex网站的差异.我还应该知道什么.

  • 像Git,BitBucket等每个网站都使用不同的Tortoise(xxx)进行源代码控制.

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

请帮忙..

HDa*_*ave 5

这是一个很大的话题,不可能提供一个包罗万象的答案.尽管如此,这里有一些想法,假设您正在寻找更多的软件配置管理解决方案而不是简单的修订控制系统类型方法:

发布管理:

除了并发控制(签入,签出等),您的SCM还可以/应该提供历史记录,标记,分支和其他版本管理类型功能.也就是说,它应始终提供单一的事实来源,了解哪些源文件何时进入哪个版本,服务包等.为了做到这一点,您的构建环境需要很好地集成到您的SCM中.

WIP管理:

一个好的SCM系统将允许您将正在进行的工作与最新的已检入版本进行比较.它还应该让您恢复您的WIP,暂时搁置它,或者逐个文件地合并另一个的更改.

文档和培训

不要低估使用可以为您提供大量帮助,书籍,文档,社区支持甚至是必要时付费支持的工具的重要性.选择"流行"工具也意味着一些新开发人员可以少学一点.

持续集成:

自动构建是任何严肃组织必须的,您应该选择可以由构建系统访问的SCM(例如Hudson,CruiseControl,Bamboo等)

安全

SCM系统应具有内置的身份验证系统,并且能够使用外部身份验证提供程序,因为许多组织会随着时间的推移而发生变化.此外,它应该能够支持在防火墙之外工作的开发人员,最好是支持http.

IDE和构建工具集成

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

来源浏览

我见过的大多数SCM工具都有很多高质量的第三方浏览器,比如Fisheye.因此,我将此视为差异化因素.

那么使用哪种工具?

如果您的组织完全包含在您的公司中,那么请选择Subversion.它非常受欢迎,与每个IDE/OS/Build工具集成,与ToroiseSVN一起工作,支持所有平台,支持多种协议,多个UI,强大的命令行,庞大的社区,免费,并且坚如磐石.它还有一本优秀的免费.

如果您有一个高度分布的开发组和/或期望从许多不同的人那里获得开源贡献,那么请使用Git的分布式功能.

除了这两个,节省大量的时间和麻烦,忘记其他一切......真的.我意识到自己很自以为是,但你有点要求提出意见.