2010-11-03 24 views
0

我们假设一些名为Graphics,Sound,IO等的共享库项目以及使用这些项目的多个应用程序。 什么是最好的,共享项目一个WC和每个应用程序一个WC?或者每个应用程序都有一个WC和一个独立的图书馆WC?每个应用程序工作副本是否应有自己的库项目工作副本?

I.e.

src 
| 
|---libs 
| | 
| |---graphics 
| |---sound 
| |---io 
| 
|---project1 
|---project2 

和:之间的区别

src 
|---project1 
| | 
| |---libs 
|  | 
|  |---graphics 
|  |---sound 
|  |---io 
| 
|---project2 
| | 
| |---libs 
|  | 
|  |---graphics 
|  |---sound 
|  |---io 

我可以看到优势,在每一种情况下,但我觉得现实生活中的经验将是很有益的在这里。

回答

0

如果这些库在代码库中被复制,它们以何种方式“共享”?

你看到在应用程序目录下有libs有什么优势?

+0

在SVN中共享。建议每个应用程序的工作副本,以防您在多个应用程序上工作并对共享项目进行本地更改。优点主要在于如果我们使用了不同的共享库分支 - 这些库处于积极的开发阶段,并不是非常稳定。 – 2010-11-03 18:21:03

0

除非您有足够的理由支持所有应用程序库的不同WC,否则我会建议使用一个WC作为库 - 这样更容易维护这些库(更新,构建)。

支持不同库WCs的原因可能是特殊的稳定性要求,只有在需要时才移动到某个库的新版本。

1

我建议,使图书馆成为他们自己的项目....

graphics 
    +-- trunk 
    +-- tags 
    +-- branches 


io 
    +-- trunk 
    +-- tags 
    +-- branches 

sound 
    +-- trunk 
    +-- tags 
    +-- branches 

project1 
    +-- trunk 
    +-- tags 
    +-- branches 

project2 
    +-- trunk 
    +-- tags 
    +-- branches 

,并使用他们的项目里面,你应该使用svn:的外部链接的IO,图形等方式向特定项目它可以防止将源代码复制到每个项目,并且您有一个单点可以在其中修复bug并执行增强等。

+0

他们是单独的项目和svn:外部是计划......我问每个应用程序是否应该抓住自己的外部依赖副本或全部共享它们。 – 2010-11-03 18:20:06

+0

你的意思是在工作副本级别上?是的,每个项目都应该使用它自己的。所以这些项目是彼此独立的,可以单独构建。如果你想分享依赖关系,你必须定义一些可以找到依赖关系的地方,这可能会导致一些问题。另一方面,如果你做某种构建系统,你应该确保构建separateley。所以你确定一切都是正确的。 – khmarbaise 2010-11-04 07:29:33

0

您是否考虑过使用Maven存储库来存储二进制依赖项而不是源代码控制系统?

ivy这样的依赖管理器可以用来下载jar文件作为构建过程的一部分。

+0

这些库正在积极开发中,因此可能不值得。如果只是为了修正错误,大多数开发人员将至少在一个库上工作。 – 2010-11-04 07:52:17