版本控制

✍ dations ◷ 2025-08-26 13:54:50 #软件工程,版本控制,形态管理,版本控制系统

版本控制(英语:Version control)是维护工程蓝图的标准作法,能追踪工程蓝图从诞生一直到定案的过程。此外,版本控制也是一种软件工程技巧,借此能在软件开发的过程中,确保由不同人所编辑的同一程序文件都得到同步。

透过文档控制(documentation control),能记录任何工程项目内各个模块的改动历程,并为每次改动编上序号。

一种简单的版本控制形式如下:赋给图的初版一个版本等级“A”。当做了第一次改变后,版本等级改为“B”,以此类推。最简单的例子是,最初的版本指定为“1”,当做了改变之后,版本编号增加为“2”,以此类推。

借此,版本控制能提供项目的设计者,将设计恢复到之前任一状态的选择权,这种选择权在设计过程进入死胡同时特别重要。

理论上所有的信息记录都可以加上版本控制,在过去的实务中,除了软件开发的流程,其它的领域中很少有使用较复杂的版本控制技巧与工具(虽然可能为其带来许多好处)。目前已有人开始用版本控制软件来管理CAD电子文件,电路板设计,来补足本来由人手工运行的传统版本控制。

软件设计师常会利用版本控制来追踪、维护源码、文件以及配置文件等等的改动,并且提供控制这些改动控制权的程序。

在最简单的情况下,软件设计师可以自己保留一个程序的许多不同版本,并且为它们做适当的编号。这种简单的方法已被用在很多大型的软件项目中。该方法虽然可行,但不够有效率。除了必须同时维护很多几乎一样的源码备分外;而且极度依赖软件设计师的自我修养与开发纪律,但这却常是导致错误发生的原因。

有时候,一个程序同时存有两个以上的版本也有其必要性,例如:在一个为了部署的版本中程序错误已经被修正、但没有加入新功能;在另一个开发版本则有新的功能正在开发、也有新的错误待解决,这使得同时间需要不同的版本并修改。

此外,为了找出只存在于某一特定版本中(为了修正了某些问题、或新加功能所导致)的程序错误、或找出程序错误出现的版本,软件调试者也必须借由比对不同版本的代码以找出问题的位置。

最简单的版本控制就是保留软件不同版本的数份copy,并且适当编号。许多大型开发案都是使用这种简单技巧。虽然这种方法能用,但是很没效率。一是因为保存的数份copy几乎完全一样,也因为这种方法要高度依靠开发者的自我纪律,而常导致错误。因此,有人开发出了将部分或全部版本控制工作自动化的版本控制系统。

大部分的版本控制软件采用差分编码:只保留文件相继版本之间的差异,这个方法可以更有效的存储数个版本的文件。

大部分的软件开发案,会有好几个开发人员同时工作。如果两个人员同时要改变同一个文件,而没有管理访问权限,很可能会改写彼此的工作。

所以权限管理控制系统会在两种方法中择一解决:采用中央式系统,由中央权威管理访问权限;或是像分布式系统容许多个单位同时进行,包括同时更动同一文件。

传统上版本控制系统都是采用中央式系统:所有版本控制的工作在一个服务器进行,由中央权威管理访问权限“锁上”文件库中的文件,一次只让一个开发者工作。

2000年后,TeamWare、BitKeeper、和GNU开始用分布式版本控制系统:开发者直接在各自的本地文件库工作,并容许多个开发者同时更动同一文件,而各个文件库有另一个合并各个改变的功能。这个方式让开发者能不靠网络也能继续工作,也让开发者有充分的版本控制能力,而不需经中央权威许可。分布式系统仍然可以有文件上锁功能。

分布式系统Linux内核的发明人林纳斯·托瓦兹就是分布式版本控制系统的支持者,他开发了目前被开源社区广泛使用的分布式版本控制系统Git。

文件上锁功能能对高难度的合并(例如大幅更改大文件或文件群的许多部分)提供一些保护,但其他开发者仍然可以绕过版本控制系统改变文件(这本身就是很大的问题)。所以文件上锁功能带来的功效与副作用一直饱受争议。

有些进步的版本控制工具提供更多功能,例如:

维基百科用的MediaWiki也有版本控制的功能。

注:多数不提供中文语言界面包(一部分本身即基于命令行接口),一部分对中文没有有很好的支持,处理中文时有乱码。但一般选用支持UNICODE的软件时,CJK便不成问题。

相关

  • 酒精中毒酒精中毒,轻度称“酒醉”,是人血液酒精浓度达到一定浓度后发生的一种生理现象。较为常见的症状包括语言含混、多幸福感、平衡失控、肌肉失调、皮肤转红、眼部充血、呕吐、举止
  • 1,1,1-三羟甲基丙烷1,1,1-三羟甲基丙烷,分子式为C6H14O3。白色片状结晶。易溶于水、低级醇、丙三醇、二甲基甲酰胺,部分溶于乙酸乙酯、丙酮,微溶于乙醚、氯仿、四氯化碳,不溶于脂肪烃、芳烃和氯代
  • 宗室岳琪宗室岳琪(1829年-1891年),爱新觉罗氏,字小琴,清朝皇族、政治人物,同进士出身。同治四年(1865年),登进士。光绪年间,特授改补馆职翰林。光绪九年,任张家口监督。光绪十四年,任少詹事,后升任
  • 杨诲之杨诲之(790年代-9世纪),唐朝人。杨凭子,柳宗元妻弟。有兄弟杨浑之。唐德宗贞元十八年(802年)九月,杨凭任湖南观察使,驻军部潭州(今湖南长沙);唐顺宗永贞元年(805年)九月,柳宗元被贬邵州刺史
  • 法兰西斯 (萨克森-科堡-萨尔费尔德)法兰西斯(德语:,1750年7月15日—1806年12月9日),萨克森-科堡-萨尔费尔德公爵,1800年—1806年在位。法兰西斯是萨克森-科堡-萨尔费尔德公爵恩斯特·弗里德里希的长子,属于韦廷王朝的
  • 胡泳 (学者)胡泳(学者)政治学博士,北京大学新闻与传播学院教授(2007年至今)。中国大陆本地的传媒称其为“数字化时代的严复”。
  • 切萨皮克能源球场切萨皮克能源球馆(英语:Chesapeake Energy Arena)是一座位于美国俄克拉荷马州俄克拉荷马市中心的室内体育馆,由切萨皮克能源公司冠名赞助,原福特中心。体育馆现为国家篮球协会(NBA
  • 战利品战利品,是相对于一些成就的回报或纪念,通常事后拿到,以作为成功的证明,通常在体育及竞赛运动中出现。古今猎人把动物或生物杀死后留有兽皮或兽头,也是战利品的一种。一些变态心理
  • 软件2000软件2000(德语:Software 2000)是德国已结业电子游戏开发商、发行商。公司创办于1987年,创始人为安德烈亚斯·瓦尔登加和马克·瓦尔登加兄弟,坐落于石勒苏益格-荷尔斯泰因奥伊廷。
  • 费尔南多·科达·马克斯费尔南多·科达·马克斯(葡萄牙语:Fernando Codá Marques,1979年10月8日-),巴西数学家,普林斯顿大学教授。主要研究领域是微分几何、几何偏微分方程以及广义相对论。