SVN术语-签出、工作副本、属性、存储库

SVN术语-签出、工作副本、属性、存储库,svn,terminology,Svn,Terminology,当我试图学习如何使用svn:externals时,我很难理解这些术语的区别。它们有何不同 工作副本和签出 有时,构建一个由多个不同签出组成的工作副本非常有用。() 属性 在Subversion中,使用svn:externals属性在组中声明外部定义。() 存储库 因此,分支和标记的创建速度非常快,并且几乎不占用存储库中的额外空间。() 例如,您可能希望不同的文件或子目录来自存储库中的不同位置,或者可能来自不同的存储库。() 项目 为项目中的文件夹设置svn:externals属性。()

当我试图学习如何使用
svn:externals
时,我很难理解这些术语的区别。它们有何不同

  • 工作副本签出

    有时,构建一个由多个不同签出组成的工作副本非常有用。()

  • 属性

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

  • 存储库

    因此,分支和标记的创建速度非常快,并且几乎不占用存储库中的额外空间。()

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

  • 项目

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

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

对不起,这一定是一个非常基本的英语问题

  • 工作副本(名词)-目录树,其中包含存储库的某些部分
  • 签出(动词)-将初始内容从repo获取到文件夹的操作,该文件夹在其之后成为工作副本
  • 属性(名词)-存储库对象的属性
  • 存储库(名词)-存储版本化数据和相关元数据,与客户端交互
  • 项目(名词)-(在引用上下文中)WC和相关回购(OR)的组合可能具有WCs集合的含义,构成完整的产品

存储库是一个逻辑树,它是这个树的一部分

我正在发布一些我自己在网上找到的描述

存储库

版本控制系统的核心是一个存储库,它是该系统数据的中央存储。存储库通常以文件系统树(文件和目录的层次结构)的形式存储信息。任意数量的客户端连接到存储库,然后读取或写入这些文件

工作副本

从字面上讲,工作副本是用户的VCS管理数据的特定版本的本地副本,用户可以在该版本上自由工作。对于其他软件来说,工作副本就像任何其他满是文件的本地目录一样,因此这些程序不必“版本控制感知”才能读取和写入数据

结账

…签出将创建一个工作副本,而“更新”将对现有工作副本进行更改。借

…签出包含.svn目录,因此它是一个工作副本,并将具有正确的信息以进行提交(如果您有权限)。借

svn checkout允许您在由生成的目录中使用版本控制


这些是关键的颠覆概念,从一开始就应该清楚。官方书籍有一章简要概述,但我将在这里用自己的话进行解释:

主要概念 存储库 它是存储所有重要数据(包括文件和版本历史)的中央数据库

您不会直接与存储库文件交互,就像您不会编辑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、进行更改、编译/运行。唯一的区别是您的文件链接到存储库中的特定版本。因此,您需要采取一些额外的步骤:

  • 您必须创建一次工作副本,以便将其链接到相应的存储库。这叫做签出

  • 您必须将更改发送到存储库,以便将其保存在公共历史记录中并可供其他人使用:这称为提交

  • 您可能希望获取其他同事所做的任何更改:这称为更新

  • 按文件系统路径引用工作副本:

    • C:\MyProjects\Foo\code
    您可以拥有所需的任意多个工作副本,即使它们指向同一个位置


    其他概念 大旅行箱 它是一个包含代码副本的子目录,您已经决定它代表您的主要开发线。例如:

    • /trunk
    它只是一种约定(目录不是Subversion的专用目录),但被推荐并广泛使用

    分支机构 它是一个包含代码副本的子目录,您已经决定它代表代码中的一个分支(未完成的任务、自定义、您仍然维护的旧版本…)。例如:

    • /branchs/unicode
      <