VCS 和 SCM
版本控制系统 (VCS) 也称为源代码控制管理 (SCM),是一种管理和记录开发人员对软件代码所做更改的方法。SCM方法存储IT资源,只要保存这些状态就可以访问软件的所有版本,并提供所有不同版本之间的比较,使开发更高效、更敏捷。
在这篇文章中,我将解释为什么我们需要 VCS、提供最佳实践并推荐一些 VCS 工具。
在开发过程只涉及一个人的情况下,更新代码就不那么困难了。开发人员只需更新代码并将更改记录在文档中即可。但是,一旦开发过程涉及两个或更多人处理代码的相同部分,就会出现挑战。
在这些情况下,协作很快就成为一个真正令人头痛的问题,而不是像预期的那样加快交付速度。问题在于解决协作的方式,而不是协作本身。在使协作更加有效的过程中,版本控制系统诞生了。
2023 年容器将会发生什么
DZone 的 2023 年容器趋势报告将探讨容器的当前状态、全球容器化战略的主要趋势和进展,以及用于实现软件架构现代化的建设性内容。
SCM 方法背后的思想是防止和解决开发人员代码之间的冲突。版本控制系统不使用文件锁定方法,而是允许贡献者同时工作,对源代码的任何部分应用更改,甚至并发访问。因此,贡献者可以顺利地执行并行更改。
VCS 方法非常容易实现,只需遵循几个步骤。
选择 CVS 类型:
分布式 - 用于克隆和签出软件的每台计算机都将充当存储库
集中式 - 将每个更新集中在一台服务器上,开发人员将在其中克隆和签出源代码,然后推送他们的修订版
选择 CVS 工具。
设置工作区和远程或中央存储库。
分享存储库的链接
贡献者将从中央或远程存储库中签出并开始在本地工作。
开发人员将他们的更改共享到远程或中央存储库
为了有效地使用 VCS,我们建议您遵循以下一些最佳实践。
1. 经常承诺
开发一个功能时,需要几个步骤才能完成整个功能。通过经常提交,您可以确保一次处理一个小的更改,并且如果更改引入错误或不再需要更改,则可以更轻松地恢复。它还将帮助您以一致的方式对提交进行分组。每次提交都将包含特定的更改。
2. 添加提交消息
提交就是沟通——提交消息是向其他团队成员传达消息的一种方式。好的提交消息应该是一段简短的文本,解释所做的事情。即使不是强制性的,提交消息也非常重要。
3. 不要推动或提交未完成的工作
即使建议经常提交,但这并不意味着您应该提交不起作用的东西。
4. 决定分支机构的共同做法
在使用分支机构时制定规则并遵守它。在开发之前应商定通用实践,并且每个团队成员都应遵循该通用实践。
例如,一种常见的做法是不断更新您的分支机构。SCM 提供的最大优势之一是可以在分支上工作并一次在给定分支中应用小的更改。因此,经常更新分支将使您的集成更容易,这将导致需要处理的冲突更少。更新分支涉及检查中央或远程存储库并集成当前分支中的更改。
另一个最佳实践可能是为每次更改创建一个新分支,因为分支通常易于操作和创建,这使得管理更加容易。根据开发类型,应该清楚开发人员应该从哪里派生他们的工作分支:例如,新功能开发开始的一个主分支、另一个主分支、生产环境的映像等。
一般来说,我们建议尽可能使用分支。
5. 将源代码推送到您的存储库(仅此而已)
存储库不是您推送所有内容的地方。仅应将与您正在处理的项目相关的源代码推送到存储库上,它不是本地工作区的映像。有些文件不应推送到存储库:生成的文件、工作区配置等。
正如您所看到的,SCM 解决了许多编码限制:
如果您选择使用集中式工具,您将需要一个为所有贡献者提供服务的集中式服务器。集中式VCS工具分为两部分:安装在集中式服务器上的服务器工具和安装在开发人员工作站上的客户端工具。定义服务器后,您可以为每个软件项目创建一个存储库,并在贡献者之间共享存储库链接。贡献者只需检查存储库即可检索项目并开始他们的开发工作。
所有贡献者都将在中央存储库上分享他们的更新;保存更改的唯一方法是共享它们。
您可以选择分布式 VCS 工具。在这种情况下,您不需要定义服务器,所有工作站都可以充当存储库。开发人员工作站中的存储库将被称为本地存储库,其他存储库将被称为远程存储库。给定的软件项目可以有多个远程存储库。在实践中,通用存储库很少,通常每个环境都有一个,通常充当开发人员的远程存储库。关于这些不同的公共远程存储库的使用可能有一些附加规则。
使用分布式 VCS 时,开发人员可以离线工作和保存更改,并在恢复在线后共享到远程存储库。
SCM 工具有很多,在本节中,我们将看到三种最流行的开源 SCM 工具。
git
Git 是一个分布式版本控制系统,绝对是当今最常用的 SCM。许多开发人员可能会认为 Git 是最难的 VCS 之一,这在某种程度上是正确的:它具有更高的学习曲线,但也使分支管理变得更加容易。使用 git 在两个分支之间切换不需要开发人员更改目录,他或她只需要要求 git 更改他或她想要使用的分支的内容即可。
在 Git 中,您可以选择在何处共享更改,从而也可以更轻松地在不同环境中进行部署。Git 可以通过命令行和 GUI 来使用。有关 Git 的文档可以在此处找到。
水银
Mercurial 是另一个开源分布式版本控制系统,并且使用也非常广泛。该 VCS 用 Python 编写,并提供有用的工具。它具有分布式版本控制系统的所有优点。与 Git 等其他分布式 VCS 相比,Mercurial 的学习曲线更快。在 Mercurial 中,每个分支都有自己的目录,因此基本上在分支之间切换就意味着在目录之间切换。可以在此处找到文档。
SVN
Subversion 或 SVN 是一个集中式版本控制系统。SVN可靠、安全,也被大量开发人员使用。它是最常用的集中式 VCS。它被认为是最简单的SCM,但它的分支管理消耗了中央服务器上的大量资源。它比分布式 VCS 慢一点。官方 svn 文档可以在这里找到。
对代码进行更改后,请确保运行性能测试,以确保所做的更改不会影响网站或应用程序的工作方式。这也是敏捷工作的重要组成部分。