是否将依赖项添加到存储库?

时间:2010-12-25 22:21:29

标签: svn mercurial dependencies

我的引擎有很多依赖项。为了让我自己和我的团队中想要通过SVN签出引擎的其他人更容易,我已经在同一个存储库中提交了依赖项。现在我知道几乎所有的项目都要求你下载依赖项,但是再一次,为了消除那些麻烦,我把它们包括在内(我知道许可问题,这就是为什么我会在我分发它时删除它们。目前它是一个私有存储库所以这是一个非问题)。

现在我们转向Mercurial并决定从一个新的存储库开始,而不是将SVN转换为Mercurial。所以这是清理存储库垃圾的时候,也是为了找出这不是一个好的做法。我怀疑它不是,但我想我会确定并询问我能做些什么来使它变得更好,同时保留无忧的结账(也就是说,一次性检查引擎和依赖项而不是全部下载他们并试图同时匹配版本)。

更多细节。我正在使用环境变量作为我的引擎的主路径。在我开始编写这个问题之前,我打算将我的引擎和依赖项分开并创建两个存储库。一个是引擎,另一个是依赖。然后依赖项也将有一个环境变量,以便项目可以轻松使用它们。这也将允许我在没有依赖项的情况下分发我的项目,并允许人们根据任何给定依赖项的许可证自行获取它。

我希望这个问题足够明确。任何建议,输入,特别是如果它的“开源项目”做了什么,将非常感激。

3 个答案:

答案 0 :(得分:1)

如果项目很小,可以将依赖项存储在存储库中。但如果它很复杂,或者你只是想要一个更好(更复杂和更强大)的解决方案,请查看ivy dependency manager

答案 1 :(得分:1)

Handbrake这样的项目使用wget / curl来下载和编译Makefile中的依赖项(x264和ffmpeg等)。

答案 2 :(得分:1)

您可以使用Subrepo扩展名:

Mercurial Subrepos - How do you create them and how do they work?

这允许您引用依赖项 - 只要它们具有Hg或SVN存储库。您可以修改修订号,并在切换到新版本后手动更新它。

即使您不使用Subrepo,无论是通过源代码控制实现还是通过下载所需版本的单独脚本实现无障碍结账都是绝对必要的。