有没有考虑过Mercurial的构建工具?

有没有考虑过Mercurial的构建工具?,mercurial,build,dependencies,extensibility,build-tools,Mercurial,Build,Dependencies,Extensibility,Build Tools,我刚刚将一个大型项目从遗留版本控制系统转移到Mercurial。我现在面临的任务(机会!)是彻底检修我的旧构建系统,以使用这个新的源代码控制系统 是否有任何良好的构建系统: 可以用多种语言和编译器构建项目 与Mercurial很好地集成(例如,了解如何提取子存储库的某些修订版或标记版本以进行依赖关系管理(与持续集成相反)) 可扩展(我们有几个审计步骤需要在构建之前和之后执行) 很容易使用 已经有了吗?与构建和维护另一个构建系统一样有趣的是,我宁愿重用成熟、稳定的产品,然后重新开发自己的代码。

我刚刚将一个大型项目从遗留版本控制系统转移到Mercurial。我现在面临的任务(机会!)是彻底检修我的旧构建系统,以使用这个新的源代码控制系统

是否有任何良好的构建系统:

  • 可以用多种语言和编译器构建项目
  • 与Mercurial很好地集成(例如,了解如何提取子存储库的某些修订版或标记版本以进行依赖关系管理(与持续集成相反))
  • 可扩展(我们有几个审计步骤需要在构建之前和之后执行)
  • 很容易使用

已经有了吗?与构建和维护另一个构建系统一样有趣的是,我宁愿重用成熟、稳定的产品,然后重新开发自己的代码。:)如果没有考虑Mercurial的工具,还有什么可以满足要求?还有什么我忘了的呢?

通常构建工具/系统和持续集成系统是分开的,后者才是了解DVCS系统的。在我的设置中,构建工具是sbt(以前的ant),CI系统是Jenkins(我强烈推荐)


CI系统说的是Mercurial,但它不必说太多。Mercurial允许您创建跟踪特定命名分支或标记的URL,并且只要您的CI系统能够克隆/拉取您的设置。一旦CI系统更新到您想要构建的版本,它就会触发您构建系统,您只需查看工作目录。

谢谢您的评论。你说得很对:我指的不是CI工具,而是依赖关系管理(根据另一个最近的SO问题)。我想,希望有一个工具可以自动完成我需要的所有工作实在是太多了,嗯?:)是的,虽然在音乐会上工作你可以做很多事。您的CI系统可以在持久URL上提供标记的版本,您的版本系统的依赖项解析系统(如ivy2)可以使用这些URL来拉入其他组件的正确版本。啊,我所说的能够拉入标记的版本与其说是测试的一部分,还不如说是制作版本的一部分。例如,我的项目可能需要一些Lib-Foo-1.2.3,但我不想将其包含在源代码树中——我想从它自己的源代码树中提取它。例如,SCON能够将CVS源作为一个操作拉入。如果我愿意的话,看起来我可以做一个自定义操作来提取这些依赖项,但我不知道是否还有其他人对Mercurial本机有所了解。即使在构建期间,根据CI生成的快照进行构建也很好——节省了时间,如果您的CI系统一直在运行,则每次提交都有一个快照。或者,您可以使用子回购在您的回购中包括其他Mercurial(以及git和svn)回购。或者你可以让你的build
clone-r标记名URL\u OF_REPO
在你想要的任何地方拉下源代码。很好。我来自一个CI不是标准的世界,但夜间构建是标准的-主要是由于我们旧版本控制系统的限制。次级回购是我目前跟踪外部资源的策略。正如我所讨论的,我有一个非常复杂的依赖关系树,我希望我的构建工具可以帮助我管理其中的一些…而不必自己编写它。看起来我可能也有。:)