Java 在修订控制中组织自己的外部库
我想建立一个SVN存储库来“修订控制”我的项目。目前我的工作区是这样的,我打算保持这样: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,添加特性,等等 现在我如何在存
\workspace
\myPrj1
\myPrj2
\myLibBase
\myLibA
\myLibB
myPrj1
正在使用myLibBase
和myLibA
myPrj2
正在使用myLibBase
和myLibB
。我将有更多的项目,将使用图书馆。我自己写过,现在也在写图书馆。当我在做任何一个项目的时候,我都在不断地尝试改进项目和库:查找bug,添加特性,等等
现在我如何在存储库中组织这些内容
这是我的想法,但这是最好的解决方案吗
\repository
\myPrj1
\myPrj1
\myLibBase
\myLibA
\myProj2
\myProj2
\myLibBase
\myLibB
\myLibBase
\myLibBase
\myLibA
\myLibA
\myLibB
\myLibB
像这样吃
……关于项目:
每当我签入项目的工作副本时,我总是拥有所有源代码,包括库一起签入。所以,当我签出一个修订版时,我总是得到所有源代码(包括库),就像签入时一样
……关于图书馆:
另外,我可以在libraries svn项目中签入一个库的工作副本,只要我认为它是一个好的、稳定的版本。然后,当我创建一个新项目时,可以签出该版本
有人能证实这是个好主意吗?最佳实践?有更好的方法吗?我可以找到文档/教程/吗。。关于这个话题?在网上?在一本书中?在存储库中拥有一个以上的库副本(比如说
myLibBase
)似乎没有意义-版本控制可以帮助您编辑代码的单个副本,同时跟踪所有更改。按照您的建议(如果我理解正确),您将为每个项目提供一个版本化的myLibBase
,这意味着如果您对项目中的库进行了更改,您将得到以下两个库之一:
为什么不每个库只有一个版本副本,并且在签出项目时,还必须签出该项目所需的库?也就是说,如果您不想签出其他项目,那么您可以只签出整个工作区。似乎这就是您想要的: 摘录: “有时,构建一个由多个不同签出组成的工作副本是很有用的。例如,您可能希望不同的子目录来自存储库中的不同位置,或者可能来自不同的存储库。您当然可以手动使用svn checkout来设置这样的场景,以创建您试图实现的嵌套工作副本结构。但是,如果此布局对使用您的存储库的每个人都很重要,则其他每个用户都需要执行与您相同的签出操作。”
它基本上按照你想要的方式工作。无论出于何种原因,当您需要依赖项处于不同版本时,拥有依赖项的多个副本是可以的,也是必要的。我确实希望避免签出其他项目,因此我不希望在repo中看到整个工作区。根据您的其他建议,是否有办法确保您永远不会忘记签入项目所依赖的库?您可以将所有库都放在
Libs
文件夹中,并始终将其签出。此外,当您的项目无法编译时,您会想起:)。如果我考虑一种更“内置”的方式,我会编辑我的答案。