这些是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,进行更改,编译/运行。唯一的区别是你的文件链接到存储库中的特定修订版。因此,你需要采取一些额外的步骤:
1.你必须创建工作副本,以便将其链接到适当的存储库。这称为检出。
2.你必须将更改发送到存储库,以便将其保存在公共历史记录中并可供其他人使用:这称为提交。
3.你可能希望获取其他同事所做的任何更改:这称为更新。
你通过文件系统路径引用工作副本:C:\MyProjects\Foo\code。
你可以拥有尽可能多的工作副本,即使它们指向同一个位置。
其他概念
主干
它是一个子目录,包含你的代码副本,并且你决定它代表你的主要开发线路。例如:
这只是一种约定(该目录对于Subversion并不特殊),但被推荐和广泛使用。
分支
它是一个子目录,包含你的代码副本,并且你决定它代表你的代码分叉(未完成的任务、自定义、你仍在维护的旧版本等)。例如:
这只是一种约定(该目录对于Subversion并不特殊),但被推荐和广泛使用。
标签
它是一个子目录,包含你的代码副本,并且你决定它代表一个给定的发布版本。你永远不会向它写入。例如:
这只是一种惯例(目录对于Subversion并不特殊),但值得推荐和广泛使用。
属性
Subversion允许存储有关修订、文件和文件夹的其他信息。每个数据块都是一个属性。这些信息专门用于Subversion,不存在于外部,因此需要使用特定工具来读取和编写它们。
项目
这不是Subversion术语。这只是一种通常指代与您正在进行的特定工作相关的所有内容的方式。