是否有修订控制系统允许我们管理代码的多个并行版本并在运行时在它们之间切换?

时间:2010-06-28 01:00:15

标签: version-control

如果我想首先为已知用户的子集启用新功能,是否存在任何自动化框架系统来执行此操作?

5 个答案:

答案 0 :(得分:2)

也许不直接使用版本控制 - 您可能有兴趣了解flickr如何选择性地部署功能:http://code.flickr.com/blog/page/2/

这家伙谈到在rails应用程序中实现类似的东西:http://www.alandelevie.com/2010/05/19/feature-flippers-with-rails/

答案 1 :(得分:2)

大多数编程语言都有if个语句。

答案 2 :(得分:0)

我不知道“在运行时它们之间切换”意味着什么。您通常不会将可执行代码检入SCM系统。检查,构建,打包和部署有一个单独的过程。这是持续集成和敏捷技术的自动构建的一个省。

像Subversion这样的SCM系统允许您为并行开发提供标签和分支。您可以随时自由地构建,打包和部署这些内容。

答案 3 :(得分:0)

据我所知不...

如果您想要一个可以在多个版本之间切换的版本控制系统。找到您喜欢的SCM并查找分支。

但是,听起来您希望我能够在运行时以编程方式在SCM中切换版本。问题是,对于修订控制系统能够做到这一点,它必须知道语言及其实现方式。

它必须知道如何加载并运行下一个版本。例如,如果它是C代码,则必须动态编译并在运行中运行它。如果是PHP,则必须在具有PHP支持的沙箱http服务器中神奇地加载脚本。等等......在这种情况下,这是不可能的。

您可以使用命令行编写应用程序以更改scm中的版本。

要在运行时执行此操作,该功能必须是应用程序本身的一部分。

答案 4 :(得分:0)

我能想到的最好(唯一)方法是使用一个共同的代码片段,就像一个'bootloader',它使用系统调用来根据您的要求检查正确的分支。然后(如有必要)编译该代码并运行它。

技术上并不是“在运行时”,但如果它有效,它就会出现。

您的第一个其他选项是动态加载代码,但这是依赖于语言的,您需要指定。

另一种方法是在工作代码库中永久保留两者(如果它是完全重复,则会增加一倍),并在运行时切换。您可以使用两个分支之间共享的对象以及条件编译之类的东西来节省大量空间,以便为两个目标使用相同的源文件。