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

时间:2011-03-02 12:18:13

标签: java c++ c svn version-control

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

\workspace
   \myPrj1
   \myPrj2
   \myLibBase 
   \myLibA
   \myLibB

myPrj1正在使用myLibBasemyLibAmyPrj2正在使用myLibBasemyLibB。我将有更多项目即将推出,将使用这些库。我写过,我自己写的是图书馆。当我正在处理任何项目时,我不断尝试改进项目而不仅仅是项目库:查找错误,添加功能等。

现在我如何在存储库中组织它?

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

  1. 我将始终将工作区用作项目根目录。
  2. 我将始终包含项目在snv项目文件夹中使用的库
  3. 我将永远为库提供其他snv项目
  4. 然后在存储库中,上面的示例如下所示:

    \repository    
       \myPrj1 
           \myPrj1
           \myLibBase
           \myLibA
        \myProj2
           \myProj2
           \myLibBase
           \myLibB
        \myLibBase
           \myLibBase
        \myLibA
           \myLibA
        \myLibB
           \myLibB
    

    有这样的

    ......关于项目:

    每当我签入项目的工作副本时,我总是拥有所有来源,包括同时签入的图书馆。因此,当我签出修订版时,我总是得到所有来源(包括图书馆),就像在办理登机手续时一样。

    ......关于图书馆:

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

    有人可以证实这是一个好主意吗?最佳做法?有更好的方法吗?我可以在这个主题上找到文档/教程/ ..在网上?在一本书?

2 个答案:

答案 0 :(得分:2)

似乎这就是您要找的内容:Externals

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

它基本上按照你想要的方式工作。当您因任何原因需要它们进行不同的修订时,拥有多个依赖项副本是可以的,也是必要的。

答案 1 :(得分:1)

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

  1. 您有不同版本的库,名称相同
  2. 您必须将所有版本副本编辑为相同。
  3. 这两种可能性对我来说都没有意义。

    为什么不只有每个库的一个版本副本,当您签出项目时,您还必须签出该项目需要的库?也就是说,如果你想避免签出其他项目 - 否则你可以签出整个工作区。