这些是从一开始就应该明确的关键 Subversion 概念。使用 Subversion的官方版本控制一书中有一个版本控制基础章节,其中包含一个简要概述,但我将在这里用我自己的话来解释它们:
主要概念
存储库
它是存储所有重要数据(包括文件和版本历史)的中央数据库。
您不直接与存储库文件交互,就像您不编辑 MySQL 数据文件一样。更具体地说,您不会在那里复制源代码。相反,您使用 Subversion 客户端来执行特定的 Subversion 工作。出于这个原因,您永远不会通过其文件系统路径来引用存储库。相反,您使用 URI:
file:///C:/Data/Subversion/foo
svn://svn.example.com/foo
http://svn.example.com/foo
https://svn.example.com/foo
URI 前缀取决于您配置的工具。
您只有一个给定项目的存储库,因为 Subversion 是一个集中的版本控制系统。
工作副本
它是本地目录树,您可以在其中查看文件并使用它们。
您可以像使用版本控制之前一样使用工作副本文件:启动编辑器/IDE、进行更改、编译/运行。唯一的区别是您的文件链接到存储库中的特定修订。因此,您需要采取一些额外的步骤:
您必须创建一次工作副本,以便将其链接到适当的存储库。这叫做签出。
您必须将更改发送到存储库,以便将它们保存在公共历史记录中并可供其他人使用:这称为commit。
您可能想要获取其他同事所做的任何更改:这称为update。
您通过文件系统路径引用工作副本:
您可以根据需要拥有任意数量的工作副本,即使它们指向同一个地方。
其他概念
树干
它是一个包含您的代码副本的子目录,您已经决定它代表您的主要开发线。例如:
这只是一个约定(该目录不是 Subversion 的特殊目录),但被推荐并广泛使用。
分支
它是一个包含代码副本的子目录,并且您已决定它代表代码中的一个分支(未完成的任务、自定义、您仍然维护的旧版本......)。例如:
这只是一个约定(该目录不是 Subversion 的特殊目录),但被推荐并广泛使用。
标签
它是一个包含代码副本的子目录,并且您已经确定它代表给定版本。你永远不会给它写信。例如:
这只是一个约定(该目录不是 Subversion 的特殊目录),但被推荐并广泛使用。
财产
Subversion 允许存储有关修订、文件和文件夹的附加信息。每条数据都是一个属性。该信息特定于 Subversion,不存在于外部,因此您需要特定的工具来读取和写入它们。
项目
这不是 Subversion 术语。这只是一种常见的方式来引用与您正在做的特定工作相关的所有内容。