65.9K
CodeProject 正在变化。 阅读更多。
Home

版本控制:朋友还是敌人?

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2008年5月8日

CPOL

7分钟阅读

viewsIcon

21611

了解如何将后者转变为前者,以及务实的软件配置管理方法如何显著改善您的开发工作。

您可能认为版本控制是后者(敌人)的原因……

虽然接触过各种软件开发公司,但人们对版本控制的看法仍然令人惊讶。您要么爱它,要么恨它。那些爱它的人显然很高兴。对于那些恨它的人来说,诸如“这只是又增加了一层复杂性,何必呢?”之类的评论可能最能描述这种态度。

这令人惊讶,因为如果您在一个与客户紧密合作的小公司工作,您会希望尽快响应反馈。在这种情况下,没有SCM工具(或使用过时的工具)进行工作必然会导致挫败感。如果“Tom,你刚才没有动过这个文件吧?我的修改不见了!”这样的抱怨听起来很熟悉,那么解决潜在因素对于避免质量问题和昂贵的返工至关重要。

PureCM 应对您的复杂性挑战

作为开发人员,您必须使用该工具。就这么简单。如果一个工具安装不方便,上手不简单,您就不会使用它。这就是为什么 PureCM 使用轻量级客户端/服务器架构,无需任何额外基础设施。它自带安全且性能优化的数据库,无需额外费用,如果您愿意,可以将服务器和客户端部署在同一台机器上。您可以在 Visual Studio 中执行日常操作,如检出和签入,或使用跨平台 GUI 进行高级选项。这种设置让您可以在数小时而非数天甚至数周内开始工作。

VS_plugin_600.png

为了便于合并,PureCM 包含强大的可视化工具,可在签入已完成的更改时解决冲突。三步向导会引导您完成整个过程,您可以选择要执行的操作和要合并的更改(即“拣选”更改)。

cherrypicking1_600.png cherrypicking2_600.png cherrypicking3_600.png

如果您需要分析分支之间的差异,请使用“流比较器”以图形方式呈现它们。从流级别(即分支)开始,查看哪些文件夹和文件已添加、删除或更改,然后向下钻取到逐行显示单个文件差异。这只需双击您想要更详细查看的文件或文件夹即可。

stream_comparer_600.png

使用任务管理您的团队协作

每个开发团队的工作方式都略有不同,您会希望根据您的需求,甚至根据不同的项目类型来组织开发生命周期。这就是 PureCM 设计得尽可能灵活的原因,它为您提供了跟踪开发所需的所有透明度。这怎么可能?通过专注于最小的公分母:任务。如果您习惯使用 Source Safe 或 CVS 等工具,您需要改变对 SCM 的看法。停止关注单个文件更改,转而关注任务。

这种转变具有重大影响:开发人员所做的更改突然与特定的客户需求相关,无论是错误、增强功能还是一般性问题。在 PureCM 中,一个 `changeset` 是构成特定问题解决方案的文件集合。PureCM 允许您识别特定 `changeset` 在何处、何时以及由谁合并。

merge_tracking_600.png

由于 `changeset` 是一组有意义的文件更改,它们也是代码审查中非常强大的概念。只需选择一个特定的 `changeset` 进行审查;接受它,或者在您拒绝它时回滚 `changeset`。在签入之前在本地测试更改是另一个使用 `changeset` 使开发人员更容易进行质量改进实践的示例。

如您所见,专注于任务意味着的不仅仅是在向数据库提交更改时使用原子提交。它是一种贯穿整个开发生命周期,从而贯穿整个 PureCM 的理念。在这种情况下,执行诸如将更改合并到另一个版本,甚至是另一个相关产品之类的操作,而不会丢失 `changeset` 历史记录,变得非常容易。原子提交保证了数据库的完整性,但并不能改善您的软件开发过程。

在需要时回滚到上次稳定版本

即使在最好的团队中,错误也时有发生。因此,您需要能够回滚到上次稳定版本。由于您可以轻松地在 PureCM 中识别 `changeset`,只需回滚它们(或返回到上次成功的构建),然后开始解决问题。考虑到您正在处理一组有意义的更改,这使您更容易理解出了什么问题。

为了防止此类事情发生,开发人员可以随时在 PureCM 服务器上检查点他们的工作,而无需实际将他们的代码提交到代码线。通过这种方式,可以在本地开发和测试一个有意义的 `changeset`,而不会干扰您稳定的代码库。

管理并行开发

根据您希望并行工作的程度,可以区分两个级别。首先,您允许开发人员同时从特定分支检出相同的文件,最终在签入更改时解决由此产生的冲突。其次,您使用分支来防止在代码冻结期间(例如在测试期间)开发停止。

为了管理第一级,请使用 PureCM 基于策略的安全性来控制是否允许多次检出或是否要锁定已检出的文件。这些策略可以按文件类型指定,例如,允许对文本文件进行多次检出,但锁定二进制文件。

policy_admin.png

当您考虑使用分支进行并行开发时,您需要一个能提供所需灵活性的工具。为此,PureCM 使用“流”(streams)的概念来表示代码行。因此,流可以用来表示分支和标签。这是可能的,因为流不是文件副本,而是对代码特定版本的引用。然后由您决定是想阻止对流的更改(即将其用作标签),还是将其用作分支。流的策略也可以按用户组设置,例如,只允许高级开发人员对发布流进行写访问。这种轻量级的方法允许极其灵活地处理分支,可以应用诸如按目的分支(开发、质量保证、发布)或按任务分支等最佳实践。

将流与 `changeset` 视图结合使用,合并变得更加清晰。开始将 `changeset` (例如一个 bug 修复) 从客户发布流推送到您的开发流。或者从临时开发流推送到您的主开发流。为此,您只需选择要合并的 `changeset`(s) 并定义目标流。PureCM 的“快速合并”会自动为您完成合并。如果发生合并冲突,工具会自动弹出图形解决工具。

resolve_600.png

结论——或关于结交朋友

如果您在阅读本文之前认为版本控制是您的敌人,我希望它能稍微动摇您的信念。当然,没有个人契合和密切接触就没有友谊。在软件开发工具的世界里,试用是实现这一目标的最佳方式。因此,请免费下载 PureCM 并试用其所有功能,可供2个用户使用。

但在您做任何其他事情之前,请与我们分享您的想法和经验。您如何看待 SCM?您认为它最重要的优点和缺点是什么?您目前有哪些经验?

关于 PureCM

PureCM 是一款软件配置管理 (SCM) 解决方案,可控制和跟踪数字资产的更改。PureCM 通过采用领先的基于流的分支和合并概念,促进并加速团队环境中的开发。PureCM 具备集成的 Issue Management 功能,可根据任何开发和变更管理流程进行定制。PureCM 在任务导向型环境中表现出色,通过结合本地工作区和客户端/服务器架构,优化了生产力和安全性。

PureCM 客户端和服务器均支持多种平台,如 Windows、Linux 和 Mac。PureCM 提供与 Visual Studio® 的原生集成,易于使用和部署,因此特别适合当今动态的环境。

© . All rights reserved.