扩展此问题:SVN projects folder structure
除了各种项目,我还有一个模块集合,其中包含所有项目使用的项目独立功能。
如何构建文件夹,以便我可以为给定版本的一个选定项目和模块应用TAG?
使用以下设置,我必须独立标记模块和Project_1。这意味着我必须跟踪哪个版本的模块和项目属于哪个版本...
/模块
/ PROJECT_1
使用设置2将导致标记模块和所有项目。
/中继线
/标签
/分支
我想要的只有一个标签包含Project_1和没有Project_2的模块,所以我想它必须以某种方式设置2。
任何人都可以推动我如何实现这个目标吗?
答案 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/trunk
和Solutions/Solution_2/trunk
。这些文件夹基本上是空的,但它们包含svn:externals
属性,该属性设置为适当的主干文件夹。当您想要分支或标记某些内容时,您在Modules / Project_X文件夹中创建分支,然后在Solution_X文件夹中创建一个分支,并将svn:externals
属性更改为新的相应文件夹。标记与分支相同,但您将“修复”每个外部的修订。