合并 (版本控制)

✍ dations ◷ 2025-09-15 04:03:57 #版本控制系统,版本控制,形态管理

在版本控制中,合并(英语: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实现了修补包交换.

相关

  • 烈祖烈祖,中国皇帝的庙号。
  • 澳大利亚交通由于澳洲大陆地广人稀,交通运输在澳大利亚经济基础设施中占有重要地位。澳洲铁路网规模很大,共33819公里铁轨(其中2540公里电气化):3719公里宽轨,15422公里标准轨道,14506公里窄
  • 闽台片泉漳片,即狭义的闽南语,也称为泉漳话、漳泉话、闽台片 、泉漳闽南语,是闽语支最大以及最强势的一支的一簇方言分片,在福建南部地区和台湾一带及海外闽南裔华人社区都有一定的影
  • 佩恩县佩恩县(Payne County, Oklahoma)是美国奥克拉荷马州中北部的一个县。面积1,806平方公里。根据美国2000年人口普查,共有人口68,190人。县治斯蒂尔沃特(Stillwater)。成立于1890年
  • 朝鲜甘酒甘酒(朝鲜语:감주)是朝鲜族一种传统米酒,由发酵的麹饼酿制而成,是酒酿的一种。发酵时处于60度左右的容器中数小时,由于其发酵过程并不完全,酒精含量比较低。
  • 拉莱耶拉莱耶(英语:R'lyeh)是美国小说家霍华德·菲利普·洛夫克拉夫特在克苏鲁神话中虚构的一个已毁灭城市,最早出自洛夫克拉夫特于1926年发表的小说《克苏鲁的呼唤》。一般读为Roo-le
  • 欧文·查特威克威廉·欧文·查特威克,OM,KBE,FBA,FRSE(英语:William Owen Chadwick,1916年5月20日-2015年7月17日),英国国教会牧师、基督宗教历史学家及大学行政人员,1956年至1983年任剑桥大学塞尔文
  • 摩洛哥 (电影)《摩洛哥》(英语:Morocco)是一部于1930年上映的美国爱情电影,由约瑟夫·冯·斯坦伯格(英语:Josef von Sternberg)导演,加里·库珀、玛琳·黛德丽和阿道夫·门吉欧(英语:Adolphe Menjou
  • 黄子佼黄子佼(英语:Mickey,1972年3月30日-),台湾男艺人、知名节目主持人,绰号“佼佼”,世界新闻专科学校五专部广播电视科毕业。1988年8月,黄子佼报名参加中华电视台《青春大对抗》卫冕而出
  • 周玉周玉可以指: