Svn 每个应用程序工作副本是否应该有自己的库项目工作副本?

Svn 每个应用程序工作副本是否应该有自己的库项目工作副本?,svn,version-control,Svn,Version Control,让我们假设一些叫做图形、声音、IO等的共享库项目,以及使用这些项目的多个应用程序。 最好的做法是,共享项目一个WC,每个应用程序一个WC?或者每个应用程序都有一个WC和一个不同的库WC 即,以下各项之间的差异: src | |---libs | | | |---graphics | |---sound | |---io | |---project1 |---project2 以及: 我可以看到每种情况的优点,但我认为现实生活中的经验在这里会非常有用。如果这些库被复制到整个代码库

让我们假设一些叫做图形、声音、IO等的共享库项目,以及使用这些项目的多个应用程序。 最好的做法是,共享项目一个WC,每个应用程序一个WC?或者每个应用程序都有一个WC和一个不同的库WC

即,以下各项之间的差异:

src
|
|---libs
|   |
|   |---graphics
|   |---sound
|   |---io
|
|---project1
|---project2
以及:


我可以看到每种情况的优点,但我认为现实生活中的经验在这里会非常有用。

如果这些库被复制到整个代码库中,它们是以什么方式“共享”的


您认为在应用程序目录下使用LIB有什么好处?

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


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

我建议将库作为自己的项目

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


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

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

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

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

要在项目内部使用它们,您应该使用svn:externals将io、图形等链接到特定的项目,这样可以防止将源代码复制到每个项目,并且您有一个单一的点可以修复bug和进行增强等。

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


然后,可以使用依赖关系管理器将JAR作为构建过程的一部分下载到WC中。

它们是独立的项目,svn:externals是计划。。。我想问的是,每个应用程序是应该获取自己的外部依赖项副本,还是应该共享它们。你是说在工作副本级别?是的,每个项目都应该使用自己的。因此,这些项目彼此独立,可以单独构建。如果希望共享依赖项,则必须定义可以找到依赖项的位置,这可能会导致一些问题。另一方面,如果你做了某种类型的构建系统,你应该确保单独构建。因此,您确定所有内容都已正确构建。在SVN中共享。建议每个应用的工作副本,以防您在多个应用上工作并对共享项目进行本地更改。优势主要是如果我们使用了共享库的不同分支-库处于动态开发中,不是非常稳定。库处于动态开发中,所以可能不值得。大多数开发人员至少会使用一个库来修复bug。
graphics
  +-- trunk
  +-- tags
  +-- branches


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

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

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

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