`

Workflows of SCM

    博客分类:
  • Misc
阅读更多

版本控制的概念从最初的手工加版本号(比如,为旧的文件加上 .orig 后缀)以及 RCS 开始,主要体现于各自本地进行版本控制。到后来 CVS 模式流行起来,出现了中央仓库的概念。而今天大行其道的分布式版本控制系统,似乎又把主角带回了各自的本地主机那里。然而于以往各自独立的主机不一样,作为各个分布式节点的主机,在相互独立的同时,又互相有紧密的联系,甚至会出现一个特别重要的节点,充当一个“伪中央仓库”的角色。

我在 Git and Subversion 这篇 Blog 里面曾经比较过 Git 和 Subversion 各自的优缺点。这里我列举一下现在存在的几个流行的版本控制的工作模式(资料来源于 bazaar 的文档,也就是说 bazaar 同时支持一下的所有工作方式)。

中央仓库模式

这就是 CVS 和 Subversion 所使用的模式。有一个单一的中央仓库,所有人从同一个仓库取出代码,并把自己的代码提交到那里。

中央仓库 + 本地提交

正如我在 Git and Subversion 中提到过的那样,中央仓库模式的一个缺点就是你的提交会影响到别人的工作,如果你提交了一些不能工作的代码,你的同伴也许会很恼火。但是有时候一些复杂的工作不能一次完成,在 CVS 或者 Subversion 里面常见的解决办法是新开一个 branch ,在那里进行你的工作,完成之后再 merge 回来。不过这样的办法对于小模块来说确实太复杂了,相比起来,本地提交是一种更轻量级的解决方案(可惜 CVS 和 Subversion 都不支持本地提交)。

分布式仓库 + 主仓库

这有些类似于前一种模式,只是侧重点不一样。前一种模式中主要是直接提交到中央仓库,在特定的时候才使用本地提交;而这种模式则主要是在自己本地的仓库里进行开发,当一个模块功能完成以后才网主仓库里面 merge 。

分布式仓库 + gatekeeper

这种模式下各个开发人员没有直接提交到主仓库的权限,gatekeeper 负责追踪各个开发人员(或者模块,甚至是下一级的比较小的一个 gatekeeper)的状态,并在合适的时候主动从他们那里 pull 。gatekeeper 可以自己充当主仓库的角色,或者另外有一个只有 gatekeeper 才能提交的主仓库,gatekeeper 在把 pull 过来的代码 review 并通过测试以后再加入到主仓库中。Linux 内核就是采用的这种方式,内核的各个子系统在完成一个开发阶段之后,便会通知 Linus ,他的代码仓库充当内核的主仓库(事实上,这并不是通过什么机制来强制规定的,从本质上来看,他的仓库和其他开发人员的仓库是同等地位的,只是人们都信任他,把他的仓库当做 Linux Kernel 的“官方仓库”而已),他将 pull 过来的代码 review 之后 merge 到自己的仓库之中。

这么多种管理模式?哪种适合你的项目呢?如果你所在的项目正在使用一种错误的让你感到相当痛苦的管理模式,那么不妨试试说服你的 Manager 让他变通一下。

分享到:
评论

相关推荐

    A collection of Actions and Reusable Workflows for Python Packag

    A collection of Actions and Reusable Workflows for Python Packaging CI/CD

    前端开源库-node-workflows

    在IT行业中,前端开发是构建Web应用程序不可或缺的一部分,而“node-workflows”是针对这个领域的一个开源库,专为Node.js环境设计,用于处理工作流管理。本文将深入探讨这个库的核心概念、功能以及如何在实际项目中...

    What's next for AI agentic workflows ft. Andrew Ng of AI Fund

    What's next for AI agentic workflows ft. Andrew Ng of AI Fund

    SharePoint.2010.Workflows.实战

    SharePoint 2010 Workflows 是一个强大的工作流平台,它允许用户创建和管理复杂的业务流程,以自动化和优化组织中的各种工作流程。在这个实战教程中,我们将深入探讨SharePoint 2010的工作流功能,理解其核心概念,...

    alfred3可用的一些精选workflows

    超级好用 macos必装的效率神器 alfred,这些是常用的workflows插件

    ServiceNow-Building-Powerful-Workflows PDF

    This course is for IT professionals, ServiceNow administrators, and developers who would like to gain greater control of ServiceNow and its architecture to design and create automated workflows.

    [SharePoint.2010.Workflows.实战].(SharePoint.2010.Workflows.in.Action) 下载.rar

    首先,SharePoint 2010中的工作流分为多种类型,包括基于SharePoint Designer的自定义工作流、OOTB(Out Of The Box)工作流以及基于Visual Studio的开发工作流。书籍可能涵盖了这些工作流的创建、配置和定制方法,...

    ComfyUI_Workflows.zip

    ComfyUI_Workflows

    Introducing Microsoft Flow Automating Workflows Between Apps and Services epub

    Introducing Microsoft Flow Automating Workflows Between Apps and Services 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 查看此书详细信息请在美国亚马逊官网搜索此书

    Checkpointing Workflows for Fail-Stop Errors.docx

    ### Checkpointing Workflows for Fail-Stop Errors #### 关键知识点概述 本报告由Yves Robert教授撰写,主要内容是关于如何在可能发生失败停止错误(fail-stop errors)的并行计算平台上,有效地调度工作流应用程序...

    前端开源库-winston-workflows

    **前端开源库-Winston-Workflows** 在前端开发中,我们常常遇到各种复杂的数据处理和逻辑控制需求,这时,一个强大的工作流管理工具就显得尤为重要。`Winston-Workflows`是一个专为前端开发者设计的开源库,它提供...

    SharePoint.2010.Workflows.in.Action

    《SharePoint 2010 工作流在行动》一书由 Phil Wicklund 编写,由 Manning 出版社出版,旨在深入探讨 SharePoint 2010 的工作流功能,为读者提供全面的实践指导。SharePoint 2010 是 Microsoft 开发的一个集成平台,...

    Alfred-Workflows:Alfred-Workflows

    而Alfred Workflows是Alfred的核心特性之一,允许用户通过自定义工作流程来自动化和优化日常任务。这些工作流程是由一系列步骤组成的,每个步骤可以是一个动作,比如运行脚本、发送键盘事件或者打开URL。 在...

    PyPI 官网下载 | workflows-0.34.tar.gz

    《PyPI官网下载的工作流库:workflows-0.34.tar.gz详解》 在Python的世界里,PyPI(Python Package Index)是开发者们获取和分享软件包的主要平台。今天我们要探讨的是PyPI上的一款名为"workflows"的库,其最新版本...

    Mastering Git(PACKT,2016)

    Git is one of the most popular types of Source Code Management (SCM) and Distributed Version Control System (DVCS). Despite the powerful and versatile nature of the tool enveloping strong support for ...

    PyPI 官网下载 | argo_workflows_fvdnabee-3.6.0-py3-none-any.whl

    标题中的"PyPI 官网下载 | argo_workflows_fvdnabee-3.6.0-py3-none-any.whl"指的是一个在Python Package Index(PyPI)上发布的软件包,名为`argo_workflows_fvdnabee`,版本号为3.6.0。PyPI是Python社区广泛使用的...

    Python库 | workflows-2.4-py2.py3-none-any.whl

    在给定的压缩包文件"workflows-2.4-py2.py3-none-any.whl"中,我们看到的是一个名为"workflows"的Python库的特定版本,版本号为2.4。这个库是为Python 2和Python 3编写的,这意味着它兼容两种主要的Python解释器版本...

    Python库 | dna_workflows-0.0.12.tar.gz

    《Python库:深入理解dna_workflows-0.0.12》 在IT行业中,Python以其简洁、易读的语法和强大的库支持成为了许多开发者首选的编程语言,尤其是在科学计算、数据分析以及生物信息学等领域。今天我们将聚焦于一个特定...

    ServiceNow Building Powerful Workflows azw3

    ServiceNow Building Powerful Workflows 英文azw3 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除

Global site tag (gtag.js) - Google Analytics