2011-03-02 61 views
3

我想设置一个SVN仓库来“修改 - 控制”我的项目。目前我的工作区是这样的,我打算把它像:在版本控制中组织我自己的外部库

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

myPrj1使用myLibBasemyLibAmyPrj2使用myLibBasemyLibB。我将会有更多的项目出现,它们将使用这些库。我自己编写并正在编写这些库。当我在任何项目上工作时,我经常试图改进不仅仅是项目而且还包括库:发现错误,添加功能等。

现在如何在存储库中组织这些?

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

  1. 我会一直使用工作区作为项目根目录。
  2. 我总是包含一个项目在SNV项目文件夹使用库
  3. 我始终拥有图书馆

然后在仓库上面的例子是这样的额外SNV项目:

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

有像这样

...有关项目:

无论何时我签入项目的工作副本,我总是拥有所有资源,包括将图书馆检入在一起。因此,当我签出修订版时,我总是会在签入时获得所有来源(包括库)。

...关于库:

此外,我可以检查,在项目SVN库库的工作拷贝,当我认为这是一个很好的和稳定的版本。当我创建一个新项目时,可以检出该版本。

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

回答

2

看来,这是你在找什么:Externals

摘录: “有时是非常有用的构建作出了一些不同检出的工作副本例如,您可能需要不同的子目录可以来自不同的仓库中,也可以来自不同的仓库,你可以通过手工使用svn checkout来创建你想要实现的嵌套工作副本结构,但是如果这个布局是每个使用存储库的人都很重要,每个其他用户都需要执行与您所做的相同的结账操作。“

它基本上以您想要的方式工作。无论出于何种原因需要它们进行不同版本修改时,都可以拥有多个依赖项副本。

1

它似乎并没有让让你的库多于一个拷贝感(比方说myLibBase)在仓库中 - 版本控制是有帮助你编辑代码的副本,同时跟踪所有变化。按照您的建议(如果我理解正确),您将为每个项目获得myLibBase的版本副本,这意味着如果您对项目中的库进行了更改,则最终会出现2:

  1. 你有不同版本的库,使用相同的名称
  2. 你必须去编辑所有版本化的副本是相同的。

这两种可能性对我来说都没有意义。

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

+0

我希望避免检查其他项目,所以我不希望整个工作区在回购中。有了您的其他建议,是否有办法确保您永远不会忘记检查项目依赖的图书馆? – AudioDroid 2011-03-02 12:47:31

+0

您可以将所有库都放在'Libs'文件夹中,并且始终将其检出。另外,当你的项目不能编译时,你会记得:)。如果我考虑采用更“内置”的方式,我会编辑我的答案。 – 2011-03-02 12:51:50

+0

:-)谢谢,我会继续等待更多的想法来现在... – AudioDroid 2011-03-02 12:53:39

相关问题