跳转到内容

版本控制

0% developed
来自维基教科书,开放世界中的开放书籍

本文介绍了不同形式的版本控制。

版本控制的基本工具

[编辑 | 编辑源代码]

什么是版本控制?

[编辑 | 编辑源代码]

以下来自维基百科的引用定义了版本控制

修订控制(也称为版本控制(系统)(VCS)源代码控制(源)代码管理(SCM))是对同一信息单元的多个修订版本的管理。它最常用于工程和软件开发,以管理数字文档(如应用程序源代码、艺术资源(如蓝图或电子模型)和其他可能由团队成员合作完成的项目)的持续开发。对这些文档的更改通常通过递增关联的数字或字母代码来标识,称为“修订号”、“修订级别”或简单地称为“修订版”,并在历史上与进行更改的人员相关联。例如,修订控制的一种简单形式将初始发布的图纸分配了修订号“1”。当进行第一次更改时,修订号将递增到“2”,依此类推。

在本文字中将使用术语版本控制。

一个例子

[编辑 | 编辑源代码]

本节将构建一个简单的例子来说明版本控制的一些关键概念。

假设我们经营一家餐馆,并且我们想打印一份菜单。在营业的第一天,我们在一个名为 menu.txt 的文件中创建了以下菜单。

[Date]
Monday 5th January 2009

[Starters]
Starter of the day.

[Main]
Dish of the day.

----
FILE: menu.txt

第二天,我们添加了一些额外的项目。

[Date]
Tuseday 6th January 2009

[Starters]
Starter of the day.
Chicken Soup

[Main]
Dish of the day.
Mushroom Ommelette

----
FILE: menu.txt

在我们的文件中,我们现在只记录了我们使用的最后一份菜单。如果我们没有保存任何菜单的打印副本,我们将丢失 2009 年 1 月 5 日星期一的记录。我们可以通过将每个菜单保存在单独的文件中来避免这种情况。

[Date]
Monday 5th January 2009

[Starters]
Starter of the day.

[Main]
Dish of the day.

----
FILE: menu-20090105.txt
[Date]
Tuseday 6th January 2009

[Starters]
Starter of the day.
Chicken Soup

[Main]
Dish of the day.
Mushroom Ommelette

----
FILE: menu-20090106.txt

TODO:关于文件名说明。

版本控制的类型

[编辑 | 编辑源代码]
  • 集中式
  • 分布式

示例概述

[编辑 | 编辑源代码]
  • 场景 1:单个用户的单个文件版本控制
  • 场景 2:单个用户的多个文件版本控制
  • 场景 3:单个用户的多个文件和分支版本控制
  • 场景 4:多个用户的多个文件版本控制
  • 场景 5:多个用户的多个文件和分支版本控制
  • 场景 6:多个用户使用集中式版本控制
  • 场景 7:多个用户使用分布式版本控制

场景 1:单个用户的单个文件版本控制

[编辑 | 编辑源代码]

本场景将介绍版本控制的基本概念。它主要面向没有版本控制经验的人员。它将涵盖差异(区别)、补丁、合并、项目的修订以及有效使用版本控制的一些细微差别。

  • 示例使用餐厅菜单。
  • 最初使用 GNU Diff Utils。
  • 保留 7 天的菜单。
  • 在每一天之间创建一个补丁。
  • 向前和向后应用补丁。
  • 只保留最新的菜单和反向补丁。
  • 比较大小。
[Date]
Monday 5th January 2009

[Starters]
Starter of the day.

[Main]
Dish of the day.

[Desserts]
Creme Brulee
[Date]
Tuseday 6th January 2009

[Starters]
Starter of the day.
Chicken Soup

[Main]
Dish of the day.

[Desserts]
Ice Cream
[Date]
Wednesday 7th January 2009

[Starters]
Starter of the day.

[Main]
Dish of the day.

[Desserts]
Creme Brulee
[Date]
Thursday 8th January 2009

[Starters]
Chicken Soup
Starter of the day.

[Main]
Dish of the day.

[Desserts]
Ice Cream
menu-20090105.txt menu-20090106.txt menu-20090107.txt menu-20090108.txt
[Date]
Friday 9th January 2009

[Starters]
Starter of the day.

[Main]
Dish of the day.
Fish and Chips

[Desserts]
Apple Pie
[Date]
Saturday 10th January 2009

[Starters]
Starter of the day.
Chicken Soup

[Main]
Dish of the day.
[Date]
Sunday 11th January 2009

[Starters]
Starter of the day.
Prawn Cocktail

[Main]
Roast Lunch

[Desserts]
Ice Cream
Apple Pie
Cheese and Biscuits
menu-20090109.txt menu-20090110.txt menu-20090111.txt

GNU diffutils

[编辑 | 编辑源代码]

“GNU diffutils”包是一组完整的程序,用于处理文件组之间的差异以及合并文件。GNU diffutils 包包含以下实用程序

  • diff - 显示两个文件之间的差异
  • cmp 比较二进制文件
  • sdiff 交互式地合并两个文件
  • diff3 显示三个文件之间的差异
  • patch 将差异应用于现有文件

使用 diff (Ubuntu)

[编辑 | 编辑源代码]

使用 diff (Windows XP)

[编辑 | 编辑源代码]

我们将首先查看周一菜单和周二菜单之间的差异。

~Menus>diff menu-20090105.txt menu-20090106.txt
2c2
< Monday 5th January 2009
---
> Tuesday 6th January 2009
5a6
> Chicken Soup
11c12
< Creme Brulee
---
> Ice Cream

~Menus>

diff 显示有三个更改,2c2, 5a611c12. 更改的摘要以 <number><alpha><number> 的形式显示。

~Menus>diff menu-20090106.txt menu-20090107.txt
2c2
< Tuesday 6th January 2009
---
> Wednesday 7th January 2009
6d5
< Chicken Soup
12c11
< Ice Cream
---
> Creme Brulee

~Menus>

场景 2:单个用户的多个文件版本控制

[编辑 | 编辑源代码]

白噪声

[编辑 | 编辑源代码]

版本控制中的白噪声是指对版本控制下的文件进行更改,这些更改显示为更改,但不会更改文件的“语义”。 白噪声最常见于“重新组织”空白时,例如当用空格替换制表符时。 白噪声是一个问题,因为它通常需要审查实际上没有改变的文件的差异。

场景 3:单个用户的多个文件和分支版本控制

[编辑 | 编辑源代码]

场景 4:多个用户的多个文件版本控制

[编辑 | 编辑源代码]

场景 5:多个用户的多个文件和分支版本控制

[编辑 | 编辑源代码]

场景 6:多个用户使用集中式版本控制

[编辑 | 编辑源代码]

场景 7:多个用户使用分布式版本控制

[编辑 | 编辑源代码]

SourceAnywhere

[编辑 | 编辑源代码]

Dynamsoft SourceAnywhere 是一款基于 SQL Server 的版本控制软件,旨在替代/替代 Microsoft Visual SourceSafe (VSS)。

提供独立版和托管版: http://www.dynamsoft.com/Products/version-control-source-control-sourceanywhere.aspx

SourceAnywhere 独立版

[编辑 | 编辑源代码]

Dynamsoft SourceAnywhere 独立版是一款基于 SQL 的源代码控制软件,旨在替代/替代 Microsoft Visual SourceSafe (VSS)。 它适用于准备从 Microsoft Visual SourceSafe (VSS) 源代码控制迁移的开发人员,以提高性能、安全性、可扩展性和可靠性。

安装指南

下载 30 天试用版

SourceAnywhere 托管版

[编辑 | 编辑源代码]

SourceAnywhere 托管的在线源代码控制是一款基于 SQL 的源代码控制软件,作为 SaaS 应用程序提供,它提供 Microsoft Visual SourceSafe (VSS) 的所有主要功能,以及更多功能。 SourceAnywhere 托管的在线源代码控制托管在 Bell 数据中心,以确保您对关键任务数据的访问最可靠,并拥有无与伦比的安全性。

保护您的源代码

介绍视频

注册 免费托管计划并试用

SCM Anywhere

[编辑 | 编辑源代码]

Dynamsoft SCM Anywhere 是一款基于 SQL Server 的软件配置管理 (SCM) 工具,具有完全集成的版本控制、错误跟踪和构建自动化功能。 它适合寻求集成解决方案来管理整个软件开发生命周期的团队。

SCM Anywhere 独立版

[编辑 | 编辑源代码]

Dynamsoft SCM Anywhere 独立版是基于 SQL 的软件配置管理 (SCM) 解决方案,具有完全集成的版本控制、问题跟踪和构建自动化功能。

SCM Anywhere 独立版专为集中式和分布式开发团队设计,帮助开发团队更快地交付软件产品,并通过集中控制源代码文件、团队活动、工作项状态和错误报告来促进团队协作。

安装指南

概述视频

免费试用

SCM Anywhere 托管版

[编辑 | 编辑源代码]

SCM Anywhere 托管版是全球首款托管 SCM(软件配置管理)解决方案。 它作为 SaaS 应用程序提供,并附带完全集成的版本控制、问题跟踪、构建自动化和专业服务,以管理您的整个软件开发生命周期。 SCM Anywhere 托管版托管在 Bell 数据中心,以确保您对关键任务数据的访问最可靠,并拥有无与伦比的安全性。

保护您的源代码和数字资产

注册 免费计划并试用

参考资料

[编辑 | 编辑源代码]

使用 GNU diff 和 Patch 比较和合并文件。 David MacKenzie、Paul Eggert、Richard Stallman,网络理论有限公司

华夏公益教科书