跟踪依赖修订

时间:2010-12-26 03:20:18

标签: svn version-control mercurial dependencies

我有一个包含多个依赖项的项目,这些依赖项位于各种存储库中。每次我对项目进行更改时,我都会确保编写所有相关存储库的修订号,这样如果我必须回到此修订版(让我们称之为5),我可以立即知道哪些修订版保证依赖的存储库修订版5可以使用,更新指定修订版的依赖项,编译并运行项目。例如,如果我有:

 Dep1 @ Revisions 10
 Dep2 @ Revisions 20 
 Dep3 @ Revisions 10 
 Proj @ Revisions 35

让我们说当 Proj 处于修订版17时, Dep1 版本为5 Dep2 修订版为13 Dep3 版本为3。所以在我的SVN日志中,我记录了这样的内容:

!! Works with Dep1 Rev 5, Dep2 Rev 13, Dep3 Rev 3

对我而言,这似乎是原始的,让我相信有更好的方法来做到这一点。现在在我的其他一个问题中,推荐使用Ivy Dependency Manager。我还没有详细看过它(看起来很复杂,还有一件我必须学习的东西)。对我来说,似乎SVN(和Mercurial等)的日志可以被分成LogDependencies (if any),如果没有依赖关系,后者可以被关闭(除非我当然不知道一个更容易/更好的解决方案)。这将允许更清晰的日志,甚至可能在每次新提交时发出警告,以再次检查先前定义的依赖关系并确保它们没有更改。

所以,我想知道每个人如何管理这种情况,以及你是否有任何提示,技术,程序和建议。

谢谢。

2 个答案:

答案 0 :(得分:2)

将依赖存储库添加为子项目,子模块或外部存储库,具体取决于您的版本控制系统调用它。

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

更好的是编写测试,以便您可以自动确定依赖项是否满足所有要求。

答案 1 :(得分:1)

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