Svn 跟踪依赖项修订

Svn 跟踪依赖项修订,svn,version-control,mercurial,dependencies,Svn,Version Control,Mercurial,Dependencies,我有一个项目,在不同的存储库中有几个依赖项。每次我向我的项目提交更改时,我都会确保我写下所有依赖存储库的修订号,以便在我必须返回此修订(我们称之为5)的情况下,我可以立即知道依赖存储库修订版5的哪些修订版保证可以使用,将依赖项更新到指定的版本,编译并运行项目。例如,如果我有: Dep1 @ Revisions 10 Dep2 @ Revisions 20 Dep3 @ Revisions 10 Proj @ Revisions 35 假设Proj进行修订时17,Dep1修订为5,D

我有一个项目,在不同的存储库中有几个依赖项。每次我向我的项目提交更改时,我都会确保我写下所有依赖存储库的修订号,以便在我必须返回此修订(我们称之为5)的情况下,我可以立即知道依赖存储库修订版5的哪些修订版保证可以使用,将依赖项更新到指定的版本,编译并运行项目。例如,如果我有:

 Dep1 @ Revisions 10
 Dep2 @ Revisions 20 
 Dep3 @ Revisions 10 
 Proj @ Revisions 35
假设Proj进行修订时
17
Dep1修订为
5
Dep2修订为
13
Dep3修订为
3
。所以在我的SVN日志中,我记录了如下内容:

!!适用于Dep1第5版、Dep2第13版、Dep3第3版

对我来说,这似乎很原始,让我相信有更好的方法来做到这一点。现在在我的另一个问题中,Ivy Dependency Manager已被推荐。我还没有详细地看它(看起来很复杂,我还必须学习另一件事)。在我看来,SVN(和Mercurial等)的日志可以分为
log
依赖项(如果有)
,如果没有依赖项,后者可以关闭(当然,除非我不知道有更简单/更好的解决方案)。这将允许一个更干净的日志,它甚至可以在每次新提交时发出警告,以再次检查以前定义的依赖项,并确保它们没有更改

所以,我想知道每个人是如何处理这种情况的,如果你有任何提示、技巧、计划和建议,你可以提供


谢谢。

根据版本控制系统的调用,将从属存储库添加为子项目、子模块或外部存储库

这样,您可以在处理存储库时保持依赖项的同步,但是,它仍然是手动的


更好的方法是编写测试,这样您就可以自动确定依赖项满足所有要求。

如何编译依赖项以及它们与项目的连接如何?如果它们不是您项目的一部分,请将它们编译到.dll(或.jar或其他任何文件)并提交到您的项目中。您可以在提交注释或自述文件(也提交到您的项目)中记录版本和任何注释。然后使用它,定期更新dependency.dll。

“git”让这变得非常简单,以我的经验来看。现在,当你说“同步”时,你的意思是如果我更新到项目存储库的上一个版本,子存储库(我相信mercurial中的嵌套存储库)的版本号将在每次提交时记录下来吗?我正在测试它,我没有看到任何迹象表明这正在发生。。。如果是这样的话,这正是我正在寻找的解决方案Mercurial,是的,这就是发生的情况。您需要告诉Mercurial通过添加.hgsub文件来跟踪子存储库,并且在提交时,Mercurial将使用这些子存储库的特定修订来添加或更新.hgsubstate文件,并且这两个文件在您的存储库中进行版本控制。这意味着,如果您更新回旧版本,这两个文件将告诉Mercurial它需要哪些子存储库,从哪里获取它们,以及每个子存储库更新到哪个版本。+1,因为这对于规模较小的项目来说是一个很好的解决方案。但问题是,我必须在存储库中包含头文件。因此,如果库非常大(Havok、PhysX、Boost),那么存储库中就会有大量的头文件。