《配置管理最佳实践》——第1章 源代码管理 1.1为什么源代码管理如此重要

简介: 源代码管理之所以如此重要是因为既要保证资产是安全的,又要允许通过受控、可靠的配置库对其进行访问。源代码管理提供了管理源代码和把工件组装成系统的工具和方法。在配置管理术语中,我们称其为配置项(CI, Configuration Item)。

本节书摘来自异步社区《配置管理最佳实践》一书中的第1章,第1.1节,作者: 【美】Bob Aiello , Leslie Sachs著,更多章节内容可以访问云栖社区“异步社区”公众号查看

第I部分 配置管理核心实践

第1章 源代码管理

源代码管理是保护组装成系统的所有工件(artifact)的学科。源代码管理是配置管理的核心职能(function),直接影响着团队的生产力和产品质量。不幸的是,很多公司并没有意识到建立高效源代码管理机制的重要性,缺乏实施源代码管理的能力,缺少源代码管理工具和流程。这一章将讨论如何正确地进行源代码管理。我曾经负责过多家分布全球的大公司的源代码管理工作。源代码管理必须确保产品发布的源代码永远都不能丢失。源代码需要通过一种灵活和创新的方式进行管理。每个公司的情况都是不同的,所以常常需要针对不同的开发团队采用不同的源代码管理方法。但是不同的开发团队之间也是有共性的,我们更要关注那些共性,关注那些满足团队最本质需求的方面。源代码管理通常为配置管理的其他方面提供了基础支持,尤其是在构建工程、发布管理和部署方面。

这一章总体介绍了源代码管理的很多方面,包括目标、原则和基本概念。大部分配置管理的相关职能都是以源代码库为基础的,包括构建工程、发布管理和部署,这些知识可以帮助你从整体结构上理解本章内容。本章首先列举了我和同事的几个实例,然后讲述了如何实行源代码管理,包括赢得管理层的支持。接下来,从基线以及创建配置管理时间机器1(CM time machine)来讲一些源代码管理的核心概念。和源代码密切相关的是缺陷和需求跟踪,这通常会与源代码管理工具和流程集成到一起。接着讨论了通过对源代码管理进行分布式开发。无论是一个大团队还是小团队,都应该考虑采用合适的工具来支持开发团队的工作。在这里我列出了几个常规的指导原则,主要涉及如何选择正确的源代码管理工具、如何通过API来扩展它,以及一些不要过度工程化源代码管理方案的提示。即便质量是“免费的”,但是想做好配置管理的工作仍然需要资金的支持,尤其是考虑到一些培训的需求。与其紧密相关的是定义一个满足团队需求的配置管理工具使用模型。我们也会讨论在实施源代码管理和建立源代码管理过程中可能遇到的风险。最后,我分享了如何对待一些配置管理工具的高级用户。

1.1 为什么源代码管理如此重要

源代码管理之所以如此重要是因为既要保证资产是安全的,又要允许通过受控、可靠的配置库对其进行访问。源代码管理提供了管理源代码和把工件组装成系统的工具和方法。在配置管理术语中,我们称其为配置项(CI, Configuration Item)。所有开发团队都需要识别和控制配置项。源代码管理是公司开始实施软件配置管理的开端。良好的源代码管理可以让你一边处理长期的开发任务,一边快速发布紧急补丁。敏捷和精益的源代码管理非常重要,它为很多其他依赖有效源代码管理的工作奠定了基础。另外一个需要考虑的问题是,如果没有实行有效的(可重复的)源代码管理过程,很多糟糕的事情就会发生,包括开发中的重大中断、不必要的缺陷和大量的重复工作所浪费的时间。
当糟糕的事情发生的时候

当糟糕的事情发生的时候,我的手机铃声就会响起。于是我总结了一条,当一切进展顺利的时候,是没有人会打给我的;经常是当人们遇到问题需要帮助的时候,就会打给我;而通常是在重大问题造成源代码丢失或者其他问题的时候,就会立刻打给我。这本身可能就是我工作最好的一部分,因为它可以让我看到自己的工作在软件开发中有着显著的积极影响。这里首先需要了解的是为什么糟糕的事情会发生。源代码经常会因为下面的原因而丢失:

  • 源代码管理工具和流程缺失
  • 采用了不可靠的工具
  • 用户没有经过培训,所以即便是最好的工具也不能帮助他们
  • 聊胜于无的发布和部署过程
  • 复杂的分支导致用户犯错
  • 沟通不畅和团队合作很差
  • 灵活部分太多导致复杂性
  • 源代码管理工具缺少有效的行政管理过程的支持

我曾经在大公司中处理过上边说到的每一个问题。也曾经在源代码管理问题可能会导致损失数百万美元,甚至是灾难性事件(比如飞机相撞)发生这样的公司工作过。虽然很多同事都肯定规范的源代码管理带来的价值,但事实是很多人并不这么认为。经常遇到很多经验丰富的技术专家却对源代码管理最佳实践一无所知。我曾经在一些大型金融服务公司工作,在那里负责公司级源代码管理实施。虽然作为配置管理的狂热分子推广最佳实践是我的工作,但是想得到高级管理人员的认可并支持我的工作却是一项挑战。

相关文章
|
存储 Linux
《配置管理最佳实践》——1.3 源代码管理核心概念
许多开发者认为源代码管理就是简单地从源代码管理工具中(一个代码库)签入和签出代码。就像大多数人认为的那样,多年前一些比较老的版本管理系统的确是这个样子。如今,虽然大多数配置管理代码库具备的可靠性和功能性不同,但都能支持变更,确保所有变更的安全。
3068 0
|
7月前
|
存储 前端开发 开发工具
前端开发中的Git版本控制:构建可靠的协作和代码管理
前端开发中的Git版本控制:构建可靠的协作和代码管理
88 0
|
6天前
|
运维 测试技术 持续交付
代码管理的艺术:你的团队是否还在为 Git 分支管理头疼?
本文回顾了作者从2~3人初创团队到百人技术团队的经历,分享了代码管理工具从无到SVN再到Git的演变。重点介绍了Git Flow和GitHub Flow两种常用的Git分支管理模型,分析了它们的适用场景和优缺点。Git Flow适合中大型项目,而GitHub Flow则更适合小型团队和Web应用开发。
21 0
|
7月前
|
项目管理 开发工具 git
版本控制与源代码管理:在 Visual Basic 项目中使用 Git
【4月更文挑战第27天】本文介绍了在Visual Basic项目中使用Git进行版本控制和源代码管理的重要性。Git作为一个流行的分布式版本控制系统,具备分布式架构、高效性能和强大分支管理等特点。在项目中,需先安装Git,然后初始化仓库、添加文件和提交更改。常用操作包括查看状态、日志、创建及切换分支和合并分支。团队协作时,借助远程仓库和推送拉取命令实现代码共享。虽然Git有学习曲线,但其优势在于强大的功能、灵活性和社区支持,能提升开发效率和代码质量。通过学习和实践,开发者可充分利用Git优化协作和项目管理。
81 1
|
3月前
|
SQL 缓存 测试技术
代码管理工具之GIT:重新温习一下
代码管理工具之GIT:重新温习一下
|
7月前
|
Linux 开发工具 Android开发
带你读《代码管理实践10讲》——二、新一代高效Git协同模型AGit-Flow详解
带你读《代码管理实践10讲》——二、新一代高效Git协同模型AGit-Flow详解
101 0
|
开发工具 git Windows
用GIT+tortoiseGIT 轻松玩换代码管理
用GIT+tortoiseGIT 轻松玩换代码管理
|
存储 前端开发 Linux
前端开发中的Git版本控制:构建可靠的协作和代码管理
前端开发中的Git版本控制:构建可靠的协作和代码管理
111 1
|
开发工具 git C++
通过VS2019 + Git 上传本地代码至云效代码管理 Codeup
通过VS2019 + Git 上传本地代码至云效代码管理 Codeup
1164 0
通过VS2019 + Git 上传本地代码至云效代码管理 Codeup
|
运维 程序员 项目管理
代码管理工具SVN和Git区别
Git是分布式的,SVN是集中式的,好处是跟其他同事不会有太多的冲突,自己写的代码放在自己电脑上,一段时间后再提交、合并,也可以不用联网在本地提交
483 0