Java 在修订控制中组织自己的外部库

Java 在修订控制中组织自己的外部库,java,c++,c,svn,version-control,Java,C++,C,Svn,Version Control,我想建立一个SVN存储库来“修订控制”我的项目。目前我的工作区是这样的,我打算保持这样: \workspace \myPrj1 \myPrj2 \myLibBase \myLibA \myLibB myPrj1正在使用myLibBase和myLibAmyPrj2正在使用myLibBase和myLibB。我将有更多的项目,将使用图书馆。我自己写过,现在也在写图书馆。当我在做任何一个项目的时候,我都在不断地尝试改进项目和库:查找bug,添加特性,等等 现在我如何在存

我想建立一个SVN存储库来“修订控制”我的项目。目前我的工作区是这样的,我打算保持这样:

\workspace
   \myPrj1
   \myPrj2
   \myLibBase 
   \myLibA
   \myLibB
myPrj1
正在使用
myLibBase
myLibA
myPrj2
正在使用
myLibBase
myLibB
。我将有更多的项目,将使用图书馆。我自己写过,现在也在写图书馆。当我在做任何一个项目的时候,我都在不断地尝试改进项目和库:查找bug,添加特性,等等

现在我如何在存储库中组织这些内容

这是我的想法,但这是最好的解决方案吗

  • 我将始终使用工作区作为项目根
  • 我将始终在snv项目文件夹中包含项目正在使用的库
  • 我将总是有额外的snv项目的图书馆
  • 然后在存储库中,上面的示例如下所示:

    \repository    
       \myPrj1 
           \myPrj1
           \myLibBase
           \myLibA
        \myProj2
           \myProj2
           \myLibBase
           \myLibB
        \myLibBase
           \myLibBase
        \myLibA
           \myLibA
        \myLibB
           \myLibB
    
    像这样吃

    ……关于项目:

    每当我签入项目的工作副本时,我总是拥有所有源代码,包括库一起签入。所以,当我签出一个修订版时,我总是得到所有源代码(包括库),就像签入时一样

    ……关于图书馆:

    另外,我可以在libraries svn项目中签入一个库的工作副本,只要我认为它是一个好的、稳定的版本。然后,当我创建一个新项目时,可以签出该版本


    有人能证实这是个好主意吗?最佳实践?有更好的方法吗?我可以找到文档/教程/吗。。关于这个话题?在网上?在一本书中?

    在存储库中拥有一个以上的库副本(比如说
    myLibBase
    )似乎没有意义-版本控制可以帮助您编辑代码的单个副本,同时跟踪所有更改。按照您的建议(如果我理解正确),您将为每个项目提供一个版本化的
    myLibBase
    ,这意味着如果您对项目中的库进行了更改,您将得到以下两个库之一:

  • 您有相同名称的库的不同版本
  • 您必须去编辑所有版本副本,使其完全相同
  • 这两种可能性对我来说都没有意义


    为什么不每个库只有一个版本副本,并且在签出项目时,还必须签出该项目所需的库?也就是说,如果您不想签出其他项目,那么您可以只签出整个工作区。

    似乎这就是您想要的:

    摘录: “有时,构建一个由多个不同签出组成的工作副本是很有用的。例如,您可能希望不同的子目录来自存储库中的不同位置,或者可能来自不同的存储库。您当然可以手动使用svn checkout来设置这样的场景,以创建您试图实现的嵌套工作副本结构。但是,如果此布局对使用您的存储库的每个人都很重要,则其他每个用户都需要执行与您相同的签出操作。”


    它基本上按照你想要的方式工作。无论出于何种原因,当您需要依赖项处于不同版本时,拥有依赖项的多个副本是可以的,也是必要的。

    我确实希望避免签出其他项目,因此我不希望在repo中看到整个工作区。根据您的其他建议,是否有办法确保您永远不会忘记签入项目所依赖的库?您可以将所有库都放在
    Libs
    文件夹中,并始终将其签出。此外,当您的项目无法编译时,您会想起:)。如果我考虑一种更“内置”的方式,我会编辑我的答案。