SVN术语-检出,工作副本,属性,代码库。

10

我正试图学习如何使用svn:externals,但是我很难理解这些术语之间的区别。它们有什么不同?

  • 工作副本检出

    有时候构建由多个不同的检出(checkouts)组成的工作副本很有用。(来源

  • 属性

    在Subversion中,您使用svn:externals 属性声明外部定义组。(来源

  • 代码库

    因此,分支和标记非常快速创建,并且在代码库中几乎不占用额外的空间。(来源

    例如,您可能希望不同的文件或子目录来自存储库的不同位置,或者来自完全不同的存储库。(来源

  • 项目

    为您的项目中的文件夹设置svn:externals属性。(来源

我猜一个工作副本是一组项目文件,而检出是项目文件或主干文件的工作副本。属性听起来像是一个文件,但它只是一个定义指令,但我不确定。我也很难理解存储库和主干之间的区别。如果我说“用户下载存储库。”,那么类似于说“用户下载主干文件。”

抱歉,这可能是一个非常基础的英语问题!


1
请参考关于 SVN 分支的 https://dev59.com/1XVD5IYBdhLWcg3wU5-H,以及关于何时应该创建分支的 https://dev59.com/gHI95IYBdhLWcg3w5iU4。 - VonC
3个回答

7
  • Working Copy(名词)-存储库的某个部分的目录树
  • Checkout(动词)-将初始内容从存储库获取到文件夹中的操作,在此之后,该文件夹成为工作副本
  • Property(名词)-存储库对象的属性
  • Repository(名词)-版本数据和相关元数据的存储库,客户端与其进行交互
  • Project(名词)-(在引用的上下文中)WC和相关repo(ORed)的组合,可能具有WC集合的含义,形成完整产品

存储库是逻辑树,其中主干是该树的一部分。


谢谢。现在我阅读那些文章变得更容易了。 - Teno

4
这些是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。
你可以拥有尽可能多的工作副本,即使它们指向同一个位置。

其他概念

主干

它是一个子目录,包含你的代码副本,并且你决定它代表你的主要开发线路。例如:

  • /trunk

这只是一种约定(该目录对于Subversion并不特殊),但被推荐和广泛使用。

分支

它是一个子目录,包含你的代码副本,并且你决定它代表你的代码分叉(未完成的任务、自定义、你仍在维护的旧版本等)。例如:

  • /branches/unicode

这只是一种约定(该目录对于Subversion并不特殊),但被推荐和广泛使用。

标签

它是一个子目录,包含你的代码副本,并且你决定它代表一个给定的发布版本。你永远不会向它写入。例如:

  • /tags/2.0.0-alpha

这只是一种惯例(目录对于Subversion并不特殊),但值得推荐和广泛使用。

属性

Subversion允许存储有关修订、文件和文件夹的其他信息。每个数据块都是一个属性。这些信息专门用于Subversion,不存在于外部,因此需要使用特定工具来读取和编写它们。

项目

这不是Subversion术语。这只是一种通常指代与您正在进行的特定工作相关的所有内容的方式。


1
我正在发布一些我自己在网上找到的描述。 存储库 版本控制系统的核心是存储库,它是该系统数据的中央存储。存储库通常以文件系统树的形式存储信息——文件和目录的层次结构。任何数量的客户端都可以连接到存储库,然后读取或写入这些文件。

http://svnbook.red-bean.com/en/1.7/svn.basic.version-control-basics.html

工作副本

工作副本就是用户在版本控制系统中管理的数据的本地副本,用户可以自由地在其上进行操作。对于其他软件来说,工作副本就像任何其他充满文件的本地目录一样,因此这些程序不必具备“版本控制意识”也能读取和写入该数据。

http://svnbook.red-bean.com/en/1.7/svn.basic.version-control-basics.html

结账

...结账会创建一个工作副本,而更新则会将更改带到现有的工作副本中。by karoberts

...结账包括 .svn 目录,因此它是一个工作副本,并且将具有适当的信息以进行提交(如果您有权限)。by notbenh

svn 结账允许您在由 Gerald Kaszuba 创建的目录中使用版本控制。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接