SVN文件夹结构

3
扩展此问题:SVN项目文件夹结构 除了各种项目外,我还有一个模块集合,其中包含所有项目使用的独立功能。
我该如何组织文件夹,以便为一个选定的项目和给定版本的模块应用标签?
如果使用以下设置,我将不得不独立地标记Modules和Project_1。这意味着我必须跟踪哪个版本的模块和项目在哪个发行版中配对...
/ Modules
- trunk
- tags
- TAG_Project_1_release_0_1
- branches
/ Project_1
- trunk
- tags
- TAG_release_0_1
- branches
使用设置2将导致标记模块和所有项目。
/ trunk
- Modules
- Project_1
- Project_2
/ tags
- TAG_OF_TRUNK_Project_1_Release_01
/ branches
- Modules
- Project_1
- Project_2
我的要求是仅包含Project_1和Modules而不包括Project_2的一个标签,因此我想它必须是设置2。
有人可以指导我如何实现这一点吗?
1个回答

1

标记是廉价的,在存储库中几乎不占用空间。我不会担心在某个标记文件夹中有额外的项目,但你总是可以在标记后删除额外的项目。

话虽如此,我实际上更喜欢第一种方法,因为你在那里有更多的自由。自由是有代价的,但这里的代价很小。

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

因此,任何两种选项都是安全的,关于标记后更改内容的问题。标记文件夹不会被更改,只有你实际上进行更改的文件夹会被更改。

编辑2:你可以考虑第三个选项:

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 属性更改为新的适当文件夹。标记与分支相同,但你需要“修正”每个外部的版本。

我不担心成本,我担心哪些模块标签属于哪个项目标签。例如:如果我使用Revision_02的模块标记Project_1,接下来我更新模块到Revision_03,因为Project_2需要一些额外的功能。那么在标记项目_1时,您也会标记模块以记住其修订版本吗?如果有人在标记项目时忘记标记模块,上帝保佑我... - LalaBox
@LalaBox 我更新了答案,并添加了第三个选项。 - Dialecticus
这个 Solutions --> externals 选项值得一试,但我还没有使用过它们。所以我会在测试环境中实施这个方案,并在之后更新结果。到目前为止,感谢 @Dialecticus! - LalaBox
在SVN中实现了一个示例:正常工作! - LalaBox
我现在为每个用户都有一个“可工作”的解决方案,其中外部指向模块和project_X分支。此外,我还有一个Project_X_trunk,其中外部指向Modules和project_x trunks。在将项目和模块分支合并到每个主干后,我可以一次性标记“主干解决方案”。太棒了! - LalaBox

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