合并 (版本控制)

✍ dations ◷ 2025-10-21 19:13:31 #版本控制系统,版本控制,形态管理

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

相关

  • ETtoday新闻云ETtoday新闻云为台湾社群新闻网站,由东森新媒体控股股份有限公司经营。该网站前身为2000年至2008年3月的《东森新闻报》。2008年4月,《东森新闻报》被转售予中华联合电讯集团(
  • 时尚时尚可以指:
  • 美国地质调查局美国地质调查局(英语:United States Geological Survey,缩写:USGS)是美国内政部辖下的科学机构,是内政部唯一一个纯粹的科学部门,有约一万名人员,总部设在弗吉尼亚州里斯顿,在科罗拉
  • 调控序列调控序列(英语:Regulatory sequence,又译调节序列)是生物体内可以促进或抑制基因表达的核酸片段。调控序列可以是DNA中一段包含启动子、增强子、沉默子,以及一些调节蛋白(如转录因
  • 仙境 (土卫六)仙境(Senkyo)是一个土卫六的表面上,大面积的黑暗区域。仙境最先由卡西尼-惠更斯号发现,并在2006年时获得命名。坐标:5°S 320°W / 5°S 320°W / -5; -320
  • 海地穆拉托人海地穆拉托人,是指父系或母系一方是白人而另一方是黑人,或双方也是混血儿的海地人。在海地他们多是中产阶级,有较高的经济和社会地位。在2013年海地人口普查中他们与海地白人占
  • I-RAMi-RAM(GC-RAMDISK)是技嘉科技于2005年6月25日推出的一款产品,使用DDR作为存储介质。i-RAM BOX原理与i-RAM相同,但设计成一台外部的5.25吋存储设备,俗称“i-RAM二代”,使用Molex 4
  • 霍华德·斯科特·华沙霍华德·斯科特·华沙(Howard Scott Warshaw,1957年7月30日-)是美国心理治疗师,前电子游戏设计师、程序员。他在1980年代为雅达利游戏机雅达利2600创作了《亚尔复仇记》、《夺宝
  • 西斯凯西斯凯共和国(南非语:Republiek van Ciskei,英语:Republic of Ciskei,科萨语:iRiphabliki ye Ciskei),通称西斯凯,是一个位于南非东南部的班图斯坦,为名义上独立的国家。西斯凯占地面
  • 香农·莱托'香农·莱托'(英语:Shannon Leto,/lɛtoʊ/,1970年3月9日-)是一名美国音乐人和词曲作家,因作为摇滚乐队30秒上火星的鼓手最为人所知。他与自己的弟弟杰瑞德·莱托,于1998年在加利福