分散式版本控制

✍ dations ◷ 2025-08-18 11:06:59 #版本控制系统,版本控制,分布式版本控制系统

在程式设计中,分散式版本控制(英语:distributed revision control 或 distributed version control,又译为分布式版本控制),又称去中心化版本控制(decentralized version control),是一种版本控制的方式,它允许软件开发者可以共同参与一个软件开发专案,但是不必在相同的网络系统下工作。其作法是在每个开发者电脑中复制一份完整的代码库以及完整历史。因此在无法连接网络时,仍可以进行软件的分支及合并,可以加速大部分的作业,增加此情形可以进行的工作,而且系统的代码库可以在多家电脑上备份,不需靠单一位置的备份。而多个位置的代码库再透过其他机制来达到同步。

以分散式版本控制方法,作出的软件版本控制系统,称为分散式版本控制系统(distributed revision control system,缩写为DRCS,或是distributed version control system,缩写为DVCS)。著名的分散式版本控制系统有Monotone、Git等。

分散式版本控制系统(DVCS)用对等网络的作法来处理版本控制,而集中式版本控制系统则是用主从式架构的作法。分散式版本控制系统同步各软件存储库的方式是用对等网络的方式传送Patch。在代码库中没有单一的中央版本,每一个用户都有工作复本以及完整的变更历史。

和集中式版本控制系统相比,分散式版本控制系统的优点如下:

和集中式版本控制系统相比,分散式版本控制系统的缺点如下:

有些版本控制系统原来是集中式的,但也会加入一些分散式的特点。例如Subversion的许多机能可以在没有网络时执行。Visual Studio Online和Visual Studio Team Services除了集中式的版本管理外,也支援用Git进行的分散式版本控制。

也有些分散式版本控制系统设法要改善取出(checkout)时间以及储存成本的问题,例如微软开发的Git虚拟文件系统就可以在很大的代码库下运作,会提供一个虚拟档案系统,只在有需要时才会下载档案到电脑中。

分散式版本控制比较适合大型专案,有一部分由独立的工作者所开发,像是Linux核心计划,因为开发者可以独立工作,可以提交其合并修改(或是拒绝他人的合并修改)。分散式模型旳灵活性可以配合客制化的程式码产生工作流程。最常使用的是整合式工作流(英语:integrator workflow)。在集中型的模型中,开发者需要将其工作串列化,以避免不同版本之间的问题。

每一个专案都有中心存储库,一般也是官方的存储库,会用专案维护者管理。开发者会复制中心存储库的内容,建立本地存储库。开发者再定期确认中心存储库的修改内容,使本地存储库和中心存储库同步。

开发者在本地存储库建立新的分支,在分支上修改程式码。在开发完成之后,再将修改内容整合到中心存储库。

在分散式版本控制的软件中,若要修改软件,一般会用“拉取请求”(pull request)来进行,也称为“合并请求”(merge request)。贡献者请专案维护者“拉取”修改的软件内容(因此称为拉取请求),若此修改内容应该成为正式代码库的一部分,就需要合并拉取请求中提到的软件内容。

开发者在有新的软件变更时,会提出“拉取请求”,告䜣专案维护者有新的软件变更。一般而言每一个拉取请求会有对应的讨论串,可以针对软件修改的内容进行讨论(代码审查)。可以存取存储库的人都可以看到提交的拉取请求。专案维护者可以接受或是拒绝拉取请求的内容。

若拉取请求经过审查,已被核可,就会合并到存储库中。依工作流程的不同,有可能在加入这段程式的软件版本正式发行前,进行软件的测试。因此,有些专案会有一个特殊的分支,合并未测试的拉取请求。也有些专案会有自动化测试平台,执行并测试每一个拉取请求的内容,可能会用持续整合工具(例如Travis CI),再由审查者检查新的程式码测试覆盖率是否足够。

第一代的开源分散式版本控制系统有GNU arch、Monotone和Darcs(英语:Darcs),不过开源的分散式版本控制系统不太流行,一直到Git及Mercurial发布后才流行。

在2002年至2005年时,Linux内核的开发是透过BitKeeper。Git会推出的原因就是因为BitKeeper的公司收回了给Linus Torvalds及Linux核心开发者的免费软件授权。

相关

  • 血清素受体激动剂血清素受体激动剂是激活血清素受体的化合物,作用机制类似于血清素。非选择性激动剂:脱磷酸裸盖菇素和二甲基色胺(DMT)被血清素在某些植物或蘑菇发现类似物。这些化合物作用于多
  • 第一哲学沉思集《第一哲学沉思集》(副标题为其中论证上帝的存在和灵魂的不灭)是法国哲学家勒内·笛卡儿所著的一本哲学论文选集,以拉丁语首次出版于1641年。由吕纳公爵(Duc de Luynes)翻译的法
  • 厄勒海峡厄勒海峡(丹麦语:Øresund,瑞典语: Öresund)是一条分隔丹麦的西兰岛和瑞典南部斯科讷的一条海峡,最窄处仅4公里。厄勒海峡是连接波罗的海和大西洋(通过卡特加特海峡、斯卡格拉克
  • 感觉器感觉系统(英语:sensory system)是神经系统中处理感觉信息的一部分。感觉系统包括感受器、神经通路以及大脑中和感觉知觉有关的部分。通常而言感觉系统包括那些和视觉、听觉、触
  • 甲子园高校野球大会第17回全国高等学校野球选手权大会是于1931年(昭和6年)8月13日至8月21日进行的日本高校棒球赛事,在兵库县西宫市的阪神甲子园球场举办,共22队参赛,在本届的台湾参赛队伍为嘉义农
  • 新加坡回教宗教理事会新加坡回教宗教理事会(英语:Islamic Religious Council of Singapore;马来语:Majlis Ugama Islam Singapura)是新加坡政府法定机构,是为负责该国回教事务而设,随着《回教法行政法令
  • 大绥河水库大绥河水库是中国吉林省吉林市永吉县大绥河镇上游3公里达子沟村境内的一座中型水库,位于鳌龙河支流大绥河上游。多年平均径流量1478万m3。大坝为100年一遇洪水设计,千年洪水校
  • 寺町日本泊螺寺町日本泊螺(学名:),旧属三叉螺科日本泊螺属,今属粗米螺科的粗米螺属。分布于日本的本州与四国以及中国大陆的大鹏湾等地,属于暖水性种类。其一般栖息于潮下带浅水区-深水区细砂
  • 郭维森郭维森(1931年9月-2011年8月7日),中国作家,文史学家和学者。曾用笔名加林、嘉林、郭加林、郭嘉树等。1931年9月出生于江苏省镇江市,祖籍安徽省亳州。祖父郭礼征(1875年3月15日-1953
  • 鼠来宝鼠来宝(英语:),2007年出品的3D动画真人结合电影。译名《鼠来宝》为台湾代理商为迎接农历鼠年而取的谐音。三只花栗鼠艾文Alvin(花仔)、赛门Simon(阿檬)、喜多Theodore(阿肥)在片中尽情