2010-02-02 97 views
5

我目前正在开发一个包含perl,.NET,C/C++和Java组件的项目。这些组件是相互关联的,但不会绑定到相同的发布时间表。由于构建/测试环境的要求非常不同,将它们全部集中到相同的/ bin/src/lib/etc/tests层次结构中有点难以实施。组织一个使用多种语言的项目?

在处理这种性质的项目时,在源代码控制中使用什么样的组织层次结构?我目前倾向于每种语言有自己的分公司:

回购/ PROJECT1/perl的/主/ ...

回购/ PROJECT1/.NET /主/ ...

回购/ PROJECT1/Java/main/...

如果他们的DID有一个绑定的发布时间表,你的推荐层次结构将如何改变?

+1

看起来像你在正确的轨道上... – 2010-02-02 16:44:33

回答

2

我认为你已经摆在了行。如果你使用所有组件释放整个项目,而不是单独释放每个组件,那么我可以使用svn:externals来区别repo位置或完全不同的存储库,然后只通过外部将构建与组件的最新兼容标签发布相关联。 或者如果使用git,然后使用子模块做同样的事情。

/repo/project1 
    trunk/ 
    svn:external .Net /repo/project1/components/.Net 
    svn:external perl /repo/project1/components/perl 
    svn:external Java /repo/project1/components/Java 
    -- other integration code or what have you -- 
    tags/ 
    branches/ 
    components/ 
    .Net/ 
     trunk/ 
     tags/ 
     branches/ 
    Java/ 
     trunk/ 
     tags/ 
     branches/ 
    perl/ 
     trunk/ 
     tags/ 
     branches/ 

确切的结构将取决于工作流程,以及组件如何集成,但您明白了。