2012-05-01 63 views
0

我们正在构建一个产品系列。该系列中的每个产品都建立在共同的“基础设施”组件上。因此,我们有各种应用程序团队,他们正在开发家族f中的产品A,产品B和基础架构组件。SVN系列产品版本

通常情况下,产品A,B .. X和基础设施将有自己的发布周期,彼此独立。所以我们的版本策略是2倍。产品/基础架构独立版本化,然后部署系列版本。

不是所有的产品都会同时创建。因此,几个示例部署是: -

Family1.0 [基础设施-1.0,产物A-1.0]

Family1.0.1 [基础设施-1.0,产物A-1.1]

Family1.2 [基础设施-1.1,产物A-2.0]

Family2.0 [基础设施-1.2,产物A-2.0,产物B-1.0]

因此,我已经建立这样的SVN目录结构

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

我的问题是如何使下列可能

/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 

因此,家庭tag1.0应该是指产品的标签1.0和基础设施tag1.0。

+1

也许你的问题无关使用svn本身,但使用部署和依赖管理软件 – zerkms

+0

我们使用svn来管理依赖和svn来管理部署快照 – Jimm

回答

1

你应该可以使用svn:externals properety(here),但不是链接到其他人的仓库,而是指定你的仓库。

因此产品A将有一个外部设置为http://myrepourl.com/infrastructure/tags/tag1.0

而且产品是再能有一个外部设置为http://myrepourl.com/infrastructure/tags/tag1.1

这是我能想到的完成多重依赖关系的唯一方式,除非它以某种方式在您的配置文件(或检查出正确基础结构的版本化脚本)中。

0

如果你想要所有的项目的快照,那么你分支根到标签文件夹

你去从:

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

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