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

时间:2012-10-11 04:16:52

标签: svn terminology

在我尝试学习如何使用svn:externals时,我很难理解这些术语的不同之处。他们有什么不同?

  • 工作副本结帐

      

    有时构建由多个不同的签出组成的工作副本是有用的。 (source

  • 属性

      

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

  • 存储库

      

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

         

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

  • 项目

      

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

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

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

3 个答案:

答案 0 :(得分:6)

  • 工作副本(名词) - 目录树,其中包含一些存储库
  • 结帐(动词) - 从repo到文件夹获取初始内容的操作,后面变为工作副本
  • 属性(名词) - repository-object的属性
  • 存储库(名词) - 存储版本化数据和相关元数据,用于与客户进行交互
  • 项目(名词) - (在引用的上下文中)WC和相关回购(ORed)的组合,可能具有 WCs-set的含义,形成完整的产品< / LI>

存储库是逻辑树,主干是此树的一部分

答案 1 :(得分:2)

这些是关键的Subversion概念,从一开始就应该清楚。官方Version Control with Subversion本书的Version Control Basics章节有一个简短的概述,但我会用自己的话来解释它们:

主要概念

存储库

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

您不直接与存储库文件交互,就像您不编辑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. 您可能想要获取其他同事所做的任何更改:称为更新

  4. 您可以通过文件系统路径引用工作副本:

    • C:\MyProjects\Foo\code

    即使他们指向同一个地方,您也可以拥有所需数量的工作副本。


    其他概念

    中继线

    这是一个包含代码副本的子目录,您已经确定它代表了您的主要开发线。 E.g:

    • /trunk

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

    这是一个子目录,其中包含代码的副本,并且您已经确定它代表代码中的分支(未完成的任务,自定义,您仍然维护的旧版本......)。 E.g:

    • /branches/unicode

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

    标签

    这是一个子目录,其中包含代码的副本,并且您已确定它代表给定的版本。你永远不会写信给它。 E.g:

    • /tags/2.0.0-alpha

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

    属性

    Subversion允许存储有关修订,文件和文件夹的其他信息。每个数据都是一个属性。该信息特定于Subversion,并且不存在于外部,因此您需要特定的工具来读取和写入它们。

    项目

    不是Subversion术语。这只是一种常用的方式来引用与您正在进行的特定工作相关的所有事情。

答案 2 :(得分:1)

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

<强>存储库

  

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

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

工作副本

  

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

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

<强>结帐

  

... checkout创建一个工作副本,而update则会对现有工作副本进行更改。 karoberts

     

...结帐包含.svn dirs因此它是一个工作副本,并且将具有正确的信息以提交回来(如果您有权限)。 notbenh

     

svn checkout允许您在Gerald Kaszuba

创建的目录中使用版本控制