简体   繁体   English

SVN产品系列版本控制

[英]SVN family of products versioning

We are building a family of products. 我们正在建立一个产品系列。 Each of the product, within the family is built on common "infrastructure" component. 该系列中的每个产品都基于通用的“基础结构”组件。 So we have various application teams, which are working on Product A, Product B, and infrastructure component within the family f. 因此,我们拥有各种应用程序团队,它们正在处理f系列中的产品A,产品B和基础结构组件。

Typically, product A, B.. X and infrastructure would have their own release cycles, independent of each other. 通常,产品A,B..X和基础结构将具有各自独立的发布周期。 So our versioning strategy is 2 fold. 因此,我们的版本控制策略是2倍。 Products/infrastructure are versioned independently and then a deployed family is versioned. 对产品/基础架构进行独立版本控制,然后对已部署的系列进行版本控制。

Not all the products would be created at the same time. 并非所有产品都会同时创建。 Hence,few example deployments are:- 因此,很少有以下示例部署:

Family1.0 [infrastructure-1.0, product A-1.0] Family1.0 [Infrastructure-1.0,产品A-1.0]

Family1.0.1 [infrastructure-1.0, product A-1.1] Family1.0.1 [Infrastructure-1.0,产品A-1.1]

Family1.2 [infrastructure-1.1, product A-2.0] Family1.2 [Infrastructure-1.1,产品A-2.0]

Family2.0 [infrastructure-1.2, product A-2.0, product B-1.0] Family2.0 [基础架构1.2,产品A-2.0,产品B-1.0]

Hence, i have created a SVN directory structure such as 因此,我创建了一个SVN目录结构,例如

family
    /tags
/product A
    /tags
    /trunk
/product B
    /tags
    /trunk
/infrastructure
    /tags
    /trunk

My Question is how can i make the following possible 我的问题是我如何使以下成为可能

/family
    /tags
        /tag1.0 <-- should refer to infrastructure tag 1.0 and product A tag1.0
/product A
    /tags
        /tag1.0
/infrastructure
    /tags
        /tag1.0

Hence, family tag1.0 should refer to product A tag 1.0 and infrastructure tag1.0. 因此,系列tag1.0应该引用产品A标签1.0和基础结构tag1.0。

You should be able to use svn:externals properety ( here ) but instead of linking to someone else repository you specify your repository. 您应该能够使用svn:externals属性( 在此处 ),而不是链接到其他存储库,而是指定存储库。

So product A would have an external set to http://myrepourl.com/infrastructure/tags/tag1.0 因此,产品A的外部设置为http://myrepourl.com/infrastructure/tags/tag1.0

And product be could then have an external set to http://myrepourl.com/infrastructure/tags/tag1.1 . 然后,产品be可以具有一个外部设置为http://myrepourl.com/infrastructure/tags/tag1.1

This is the only way I could think to accomplish the multiple dependencies unless it was somehow in your configuration files (or a versioned script that would check out the correct infrastructure). 这是我认为完成多个依赖关系的唯一方法,除非它在您的配置文件(或将检查正确基础结构的版本化脚本)中以某种方式存在。

If you want a snapshot of all the projects then you branch the root into the tags folder 如果要获取所有项目的快照,则将根分支到标签文件夹中

you go from: 您来自:

/tags
/trunk
    /family           
    /product_A
    /product_B
    /infrastructure

to

/tags
    /tag1.0               ; Snapshot of trunk with all the projects
        /family           
        /product_A
        /product_B
        /infrastructure
/trunk
    /family           
    /product_A
    /product_B
    /infrastructure

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM