SVN文件夹结构

时间:2014-01-16 12:27:34

标签: svn directory-structure

扩展此问题:SVN projects folder structure

除了各种项目,我还有一个模块集合,其中包含所有项目使用的项目独立功能。

如何构建文件夹,以便我可以为给定版本的一个选定项目和模块应用TAG?

使用以下设置,我必须独立标记模块和Project_1。这意味着我必须跟踪哪个版本的模块和项目属于哪个版本...

/模块

  • 躯干
  • 标记
    • TAG_Project_1_release_0_1
  • 分支

/ PROJECT_1

  • 躯干
  • 标记
    • TAG_release_0_1
  • 分支

使用设置2将导致标记模块和所有项目。

/中继线

  • 模块
  • PROJECT_1
  • Project_2

/标签

  • TAG_OF_TRUNK_Project_1_Release_01

/分支

  • 模块
  • PROJECT_1
  • Project_2

我想要的只有一个标签包含Project_1和没有Project_2的模块,所以我想它必须以某种方式设置2。

任何人都可以推动我如何实现这个目标吗?

1 个答案:

答案 0 :(得分:1)

标记很便宜,并且在存储库中几乎不占用空间。我不担心在某个标签文件夹中有额外的项目,但您可以在标记后随时删除额外的项目。

话虽这么说,我实际上更喜欢第一种方法,因为那里有更多的自由。自由带来了价格,但这里的价格很小。

编辑:标记和分支在SVN中基本上是相同的操作。分支某个文件夹时,您正在创建该文件夹的快照副本。这个“快照”部分很重要,因为原始文件夹中的任何更改都将保留在那里,并且不会传播到分支文件夹。标签和分支之间的唯一区别是SVN客户端会警告您更改路径包含“tag”的文件夹中的内容。

因此,关于在标记之后更改内容的问题,这两个选项中的任何一个都是标签安全的。标签文件夹不会被更改,只会更改您实际进行更改的文件夹。

EDIT2:您可以考虑第三种选择:

Modules
  branches/tags/trunk
Project_1
  branches/tags/trunk
Project_2
  branches/tags/trunk
Solutions
  Solution_1
    branches/tags/trunk
      svn:externals : Modules + Project_1
  Solution_2
    branches/tags/trunk
      svn:externals : Modules + Project_1

您的工作文件夹是Solutions/Solution_1/trunkSolutions/Solution_2/trunk。这些文件夹基本上是空的,但它们包含svn:externals属性,该属性设置为适当的主干文件夹。当您想要分支或标记某些内容时,您在Modules / Project_X文件夹中创建分支,然后在Solution_X文件夹中创建一个分支,并将svn:externals属性更改为新的相应文件夹。标记与分支相同,但您将“修复”每个外部的修订。