合并 (版本控制)

✍ dations ◷ 2025-05-20 05:00:18 #版本控制系统,版本控制,形态管理

在版本控制中,合并(英语:merging),也称为整合(integration),是指当一个文件在多个独立分支中被修改后如何合并这些修改成为一个文件的操作。

合并可以是版本控制软件自动执行,但如果有冲突(英语:conflict (version control)),就需要考虑手工合并。

合并算法是一个热点研究领域,有多种不同的算法。

三路合并(three-way merge),首先考虑对文件A、文件B以及它们的共同祖先文件C做差异分析。对于文件中的每节(sector),如果上述三个文件中有两个文件该节的内容一致,那么抛弃文件C中该节的内容,保留与文件C中不同的内容放到结果文件中。如果该节在三个文件中都不同,那么这个冲突需要手工合并。

三路合并被程序diff3(英语:diff3)实现,是基于文件锁的版本控制系统到基于合并的版本控制系统转变的核心。被CVS广泛使用.

三路合并算法的基础技术是找到被合并文件的共同祖先文件。在遇到十字交叉合并(criss-cross merge)时,不存在独一无二最小共同祖先。

Git采取了递归三路合并(Recursive three-way merge),对没有共同祖先的一对文件递归创建虚拟祖先。这一方法还可以用于有向无环图。

修补包是一个文件,包含另一个文件的改变的描述。Unix传统使用修补包传播一个文本文件的改变,这个修补包可用命令"diff -u"生成,然后用命令patch把修补包应用到一个文本文件。

但patch程序也可以把一个修补包用于与最初产生该包的文件不是完全相同的文件。这称作模糊修补包应用(fuzzy patch application)。 GNU arch采用了这种方法。但模糊修补包应用是一种不太可信的办法,在上下文太少情况下可能会误用。

编织合并(Weave merge)算法跟踪每行是被增加或是删除,产生结果信息。如果在一个版本中该行被删除,则结果文件就不包含该行。BitKeeper、GNU Bazaar、Codeville采用了此方法,对三路合并出错的情形能产生正确结果。

修补包交换(Patch commutation)改变修补包的应用顺序,形成一线性历史。效果上,当两个修补包产生于同一个环境,合并时,一个修补包被重写以便它可以在另一个修补包执行完毕后才使用。例如,修补包A在文件F的行7之后增加了行"X",修补包B在文件F的行310之后增加了行"Y",B需要重写为对文件F的行311之后增加行"Y",以便能在修补包A使用后再使用修补包B。

Darcs、Git (称作"rebasing")采用了这一方法。

"patchutils" package中的Unix程序flipdiff实现了修补包交换.

相关

  • 北上广深一线城市(First-tier City)是中国民间对城市分级体系中的最高等级城市的称谓,最初来源于房地产业。目前,普遍被公认为中国一线城市的包括首都北京、直辖市上海,以及广东省省会广
  • 身心医学人体解剖学 - 人体生理学 组织学 - 胚胎学 人体寄生虫学 - 免疫学 病理学 - 病理生理学 细胞学 - 营养学 流行病学 - 药理学 - 毒理学身心医学(英语:Psychosomatic medicine),
  • 恐怖主义指数全球恐怖主义指数(英语:Global Terrorism Index)为依据世界各国恐怖活动的程度来排定其排名。该指数结合了许多影响超过10年时间的恐怖主义行动,借由研究者和决策者提供的一系列
  • 孢子 (游戏)《孢子》(英语:Spore,港台常用英文)是一个Maxis开发的由多种游戏类型整合的电脑游戏。游戏让玩家控制一个物种,使之从单细胞开始进化到智慧生命,进而进行空间探索。特别版《孢子:银
  • 爱·Sharing 高雄梦时代跨年晚会《爱·Sharing 高雄梦时代跨年派对》,是台湾高雄市系列的跨年活动的总称之一,以每年12月31日下午6时至元旦上午1时30分于时代大道前广场的跨年晚会为主轴,是自2016年起高雄梦
  • 周应宾周应宾(?-1626年),字嘉甫,号寅所,浙江鄞县人,明朝大臣、学者。。出自明朝宁波府鄞县西乡(今宁波市海曙区)高桥新庄地方望族新庄周氏,父亲周保,隆庆五年(1571年)辛未科殿试金榜登进士第。侄
  • 塔朗泰拉塔朗泰拉、塔兰泰拉或塔兰苔拉,是一种意大利传统舞蹈。它的特色是双人快速的旋转,音乐一般是6/8拍或3/8拍。流行于拿玻里、西西里等地。舞蹈特点是节奏急促、强烈、腿部动作丰
  • LHC@homeLHC@home是一个基于BOINC平台分布式计算项目。由欧洲核子研究组织(CERN)主持40多年来,粒子物理实验及粒子物理学不断的取得进展,与此同时,每前进一步,加速器实验都面临新的技术挑
  • 柳田将洋柳田将洋(日语:柳田 将洋/やなぎだ まさひろ ,1992年7月6日-),出生于日本东京都江户川区,是日本男子排球运动员和国家排球队成员。曾参加2014年亚洲运动会,获得一枚银牌。
  • 夏襄宗夏襄宗李安全(1170年-1211年9月13日),夏崇宗孙,其父乃夏仁宗弟越王李仁友,1196年,仁友逝,安全上书要求袭越王爵位,桓宗不许,安全被降封为镇夷郡王,他极为不满,于是萌生了篡夺皇位之心。1