在版本控制中组织我自己的外部库
我想设置一个SVN仓库来“修改 - 控制”我的项目。目前我的工作区是这样的,我打算把它像:在版本控制中组织我自己的外部库
\workspace
\myPrj1
\myPrj2
\myLibBase
\myLibA
\myLibB
myPrj1
使用myLibBase
和myLibA
。 myPrj2
使用myLibBase
和myLibB
。我将会有更多的项目出现,它们将使用这些库。我自己编写并正在编写这些库。当我在任何项目上工作时,我经常试图改进不仅仅是项目而且还包括库:发现错误,添加功能等。
现在如何在存储库中组织这些?
这是我的想法,但它是最好的解决方案吗?
- 我会一直使用工作区作为项目根目录。
- 我总是包含一个项目在SNV项目文件夹使用库
- 我始终拥有图书馆
然后在仓库上面的例子是这样的额外SNV项目:
\repository
\myPrj1
\myPrj1
\myLibBase
\myLibA
\myProj2
\myProj2
\myLibBase
\myLibB
\myLibBase
\myLibBase
\myLibA
\myLibA
\myLibB
\myLibB
有像这样
...有关项目:
无论何时我签入项目的工作副本,我总是拥有所有资源,包括将图书馆检入在一起。因此,当我签出修订版时,我总是会在签入时获得所有来源(包括库)。
...关于库:
此外,我可以检查,在项目SVN库库的工作拷贝,当我认为这是一个很好的和稳定的版本。当我创建一个新项目时,可以检出该版本。
有人可以证实这是一个好主意吗?最佳实践?有更好的方法吗?我可以在这个主题上找到文档/教程/ ..在网上?在书中?
看来,这是你在找什么:Externals
摘录: “有时是非常有用的构建作出了一些不同检出的工作副本例如,您可能需要不同的子目录可以来自不同的仓库中,也可以来自不同的仓库,你可以通过手工使用svn checkout来创建你想要实现的嵌套工作副本结构,但是如果这个布局是每个使用存储库的人都很重要,每个其他用户都需要执行与您所做的相同的结账操作。“
它基本上以您想要的方式工作。无论出于何种原因需要它们进行不同版本修改时,都可以拥有多个依赖项副本。
它似乎并没有让让你的库多于一个拷贝感(比方说myLibBase
)在仓库中 - 版本控制是有帮助你编辑代码的单副本,同时跟踪所有变化。按照您的建议(如果我理解正确),您将为每个项目获得myLibBase
的版本副本,这意味着如果您对项目中的库进行了更改,则最终会出现2:
- 你有不同版本的库,使用相同的名称
- 你必须去编辑所有版本化的副本是相同的。
这两种可能性对我来说都没有意义。
为什么你不会只有一个版本的每个库的拷贝,当你签出一个项目时,你还必须检出这个项目需要的库?也就是说,如果你想避免检出其他项目 - 否则你可以检出整个工作区。
我希望避免检查其他项目,所以我不希望整个工作区在回购中。有了您的其他建议,是否有办法确保您永远不会忘记检查项目依赖的图书馆? – AudioDroid 2011-03-02 12:47:31
您可以将所有库都放在'Libs'文件夹中,并且始终将其检出。另外,当你的项目不能编译时,你会记得:)。如果我考虑采用更“内置”的方式,我会编辑我的答案。 – 2011-03-02 12:51:50
:-)谢谢,我会继续等待更多的想法来现在... – AudioDroid 2011-03-02 12:53:39