敏捷环境中的版本控制挑战





0/5 (0投票)
敏捷宣言指出,个人和互动比流程和工具更重要。我非常同意这一点。但敏捷项目的迭代性质也给版本控制带来了一些特殊的挑战,这些挑战对于小型公司同样重要。
引言
敏捷宣言提倡四个基本价值观
- 个体和互动胜过流程和工具
- 工作的软件胜过详尽的文档
- 客户协作胜过合同谈判
- 响应变化胜过遵循计划
因此,许多受过于僵化的流程困扰的公司尝试实施更灵活的方法,因为他们希望更好地应对不断变化的客户需求。但如何才能最好地实现这一点呢?
关键成功因素
根据 Dr. Dobb’s Journal 的一项调查,大多数敏捷计划都取得了成功。在同一项研究中,受访者还被问及关键成功因素,得出了以下前三名
- 迭代开发
- 定期交付可工作的软件
- 配置管理
很明显,适当的软件配置管理(或“版本控制”)对于实现另外两个成功因素至关重要。要理解这种重要性,我们必须审视敏捷采纳在软件配置管理方面产生的具体挑战。本文特别关注使用迭代开发时的挑战。由于定期交付可工作软件而产生的挑战将是下一篇文章的主题。
实践迭代开发时的挑战
短迭代开发主要是对许多需求在开始时不完全理解这一事实的回应。如果客户能够看到并测试中间产品,他们就能更好地决定想要什么。为了获得这种灵活性,业务请求通常被分解成更小的任务,这些任务应该需要 1-2 天才能完成。这些任务被记录在一个积压工作清单中,并根据其业务价值进行排名。这确保了最重要的任务优先完成。
这个逻辑突出了一些重要的事实
- 关注任务。 能够识别、跟踪任务并在开发生命周期中推进它们。您的配置管理应该允许您将这些任务与您的代码更改关联起来,并将它们合并到不同的分支中。一个例子可能是必须从开发分支合并到一个或多个发布分支的错误修复。
- 确保您可以重构您的代码。 业务价值(而非技术考虑)驱动优先级。因此,随着项目后期阶段添加新功能,可能需要更改您的代码库。
- 允许多次检出。 根据业务价值确定优先级的任务可能意味着并行处理相同的文件。
- 如有必要,能够将未完成的任务移至以后的迭代。 允许短迭代的一个重要规则是截止日期是固定的。如果存在延迟风险,请将功能移至以后的迭代。
PureCM 如何解决这些挑战?
关注任务。 这意味着以问题(例如错误修复或新功能)而非单个文件更改来思考。在 PureCM 中,“变更集”表示完成特定任务所需的文件更改集。PureCM 中的每个操作都围绕这些变更集展开:检查它们的历史记录、回滚错误的更改、将任务从一个配置合并到另一个配置。我在上一篇关于 The Code Project 的文章中更详细地介绍了 PureCM 在处理任务方面的优势。
确保您可以重构您的代码。 PureCM 支持文件复制/移动/重命名,同时保留完整的历史记录,也跨越整个分支层次结构。重构可以在开发人员希望的任何地方进行,例如使用 PureCM 的 Eclipse 或 Visual Studio 插件。
允许多次检出。 PureCM 完全支持多次检出和可写工作区。这样,文件甚至不需要检出即可编辑。所有当前文件状态都会在服务器上实时跟踪和显示,以方便开发人员之间的沟通。

图 1:PureCM GUI 中的实时文件状态跟踪
使用 PureCM 基于策略的安全性来控制是否允许多次检出或是否要锁定文件。这些策略可以按文件类型指定,例如,允许文本文件多次检出,但锁定二进制文件。
如有必要,能够将未完成的任务移至以后的迭代。 基本上,PureCM 支持两种方法来解决这个挑战:在主线开发时搁置,以及任务分支。
搁置
搁置是一种在服务器上检查点您的代码(更改)而无需将其集成到底层代码行的方法。当所有(或许多)开发人员在同一代码行上工作时,搁置最有用,这具有简单分支模式的优点。在这种模式下,搁置允许将未完成的任务从一个迭代移动到另一个迭代,而不会造成返工。
想象一下,您的一位开发人员正在开发一个功能。但是,他赶不上下一个迭代构建。因此,开发人员可以将代码搁置在服务器上,而不是将其检入主代码行。一旦发布构建完成,他的工作就可以轻松地集成到主线中,并包含在下一个构建中。

图 2:PureCM 中的搁置对话框
PureCM 提供有关特定代码行上搁置了哪些任务的完全透明性。开发经理可以在任务所属的分支中看到每个搁置集(在 PureCM 中称为“流”)。由于分支和标签在 PureCM 中在技术上是相同的,因此搁置集可以轻松地从一个流移动到另一个流,例如,在创建新的基线之后。

图 3:2007-4 开发流的搁置变更集
任务分支
任务分支是完全将开发人员与同事隔离的最佳方法。通过这种方式,集成经理可以挑选他想要集成到特定版本中的任务,即,将任务分支合并到主代码行中。这种方法的优点是它提供了最大的灵活性,并且工作是基于已知稳定版本的代码进行的。然而,这会带来更复杂的合并成本,因为主代码行在任务分支开发期间通常已经发生了演变,尤其是在任务集成被推迟时。
因此,PureCM 通过使用强大的流概念来促进任务分支的工作。流是轻量级分支,它们从其父流继承代码。因此,当使用 PureCM 时,任务分支模式所需的频繁分支变得非常快速高效。此外,PureCM 允许挑选变更集和自动快速合并。挑选对于使用主代码行中的特定更改更新任务分支很有用,而快速合并功能则加快了开发完成后将任务分支集成回主代码行的速度。

图 4:在 PureCM 中挑选变更集
摘要
软件配置管理是敏捷实现的关键成功因素。必须仔细考虑迭代开发模式带来的新挑战,以提高成功的机会。PureCM 是一款易于使用但功能强大的工具,可以解决这些挑战。
开发人员可以专注于任务而不是文件更改,控制这些任务何时集成到主代码行中,并且如果需要,可以在以后的迭代中重构代码。这增加了他们的灵活性,而不会给他们日常开发增加额外的工作量。

PureCM 是一种软件配置管理 (SCM) 解决方案,用于控制和跟踪数字资产的更改。PureCM 通过领先的基于流的分支和合并概念,促进并加速团队环境中的开发。PureCM 具有集成的 Issue Management 功能,可以根据任何开发和变更管理流程进行定制。PureCM 在面向任务的环境中表现出色,在这些环境中,通过结合本地工作区和客户端/服务器架构,优化了生产力和安全性。
PureCM 客户端和服务器均可在多个平台上使用,例如 Windows、Linux 和 Mac。PureCM 提供与 Visual Studio® 和 Eclipse 的原生集成,易于使用和部署,因此特别适合当今的动态环境。
立即访问 PureCM!