我想建立一个SVN存储库来“修改 - 控制”我的项目。目前我的工作区看起来像这样,我打算保持这样:
\workspace
\myPrj1
\myPrj2
\myLibBase
\myLibA
\myLibB
myPrj1
正在使用myLibBase
和myLibA
。 myPrj2
正在使用myLibBase
和myLibB
。我将有更多项目即将推出,将使用这些库。我写过,我自己写的是图书馆。当我正在处理任何项目时,我不断尝试改进项目而不仅仅是项目库:查找错误,添加功能等。
现在我如何在存储库中组织它?
这是我的想法,但它是最好的解决方案吗?
然后在存储库中,上面的示例如下所示:
\repository
\myPrj1
\myPrj1
\myLibBase
\myLibA
\myProj2
\myProj2
\myLibBase
\myLibB
\myLibBase
\myLibBase
\myLibA
\myLibA
\myLibB
\myLibB
有这样的
......关于项目:
每当我签入项目的工作副本时,我总是拥有所有来源,包括同时签入的图书馆。因此,当我签出修订版时,我总是得到所有来源(包括图书馆),就像在办理登机手续时一样。
......关于图书馆:
另外,当我认为它是一个漂亮而稳定的版本时,我可以在库svn项目中签入一个库的工作副本。然后,当我创建一个新项目时,可以检出该版本。
有人可以证实这是一个好主意吗?最佳做法?有更好的方法吗?我可以在这个主题上找到文档/教程/ ..在网上?在一本书?
答案 0 :(得分:2)
似乎这就是您要找的内容:Externals
摘录: “有时构建一个由多个不同签出组成的工作副本是有用的。例如,您可能希望不同的子目录来自存储库中的不同位置,或者可能来自不同的存储库。您当然可以设置这样的子目录。通过手工使用svn checkout来创建你想要实现的嵌套工作副本结构的场景。但是如果这个布局对于使用你的存储库的每个人都很重要,那么每个其他用户都需要执行你所做的相同的结账操作。“
它基本上按照你想要的方式工作。当您因任何原因需要它们进行不同的修订时,拥有多个依赖项副本是可以的,也是必要的。
答案 1 :(得分:1)
在存储库中有一个以上的库副本(让我们说myLibBase
)似乎没有意义 - 版本控制可以帮助您编辑单个副本您的代码,同时跟踪所有更改。按照您的建议方式(如果我理解正确),您将为每个项目提供myLibBase
的版本副本,这意味着如果您对项目中的库进行了更改,则最终会得到其中一个2:
这两种可能性对我来说都没有意义。
为什么不只有每个库的一个版本副本,当您签出项目时,您还必须签出该项目需要的库?也就是说,如果你想避免签出其他项目 - 否则你可以签出整个工作区。