让我们以一个 Web 开发环境为例,开发人员在其中将项目签出到他们的本地机器上,对其进行处理,并签入对开发的更改。
这些更改在开发过程中得到进一步测试,并定期(例如每周、每月等)上线。
是否可以自动升级最新的标记版本(而不是最新的签入,因为这可能不是 100% 稳定),例如星期一早上 8 点,使用脚本或内置功能风险控制系统?
6 回答
是的,有可能。这通常是持续集成工具提供的功能。通常,他们将从版本控制中获取最新的源代码,构建项目,对其进行测试(运行单元测试)并可能将其部署在(测试)服务器上。
如果您不需要所有这些步骤,您可以使用一些 shell 脚本或类似的脚本轻松地做同样的事情(即从版本控制中签出并复制到服务器上的生产文件夹)。
当然可以,但具体的产品可能取决于您使用的 VCS。
您可能想要做的是拥有几个不同的分支,并随着您的进展向上迁移。例如,开发 -> 稳定开发 -> Beta -> 生产。然后,您可以简单地为您的测试人员自动更新到最新版本的 Stable-Dev 和 Beta,并且始终能够随时部署新的生产版本。
你可以用 cvs 做的任何事情都可以用命令行来完成,我很确定 svn 也是一样的。只需制定您想要的功能并将其粘贴到 shell 脚本或命令文件中。
我仅有的两个经验是 SVN 和 Mercurial。对于 Mercurial,您指定要从哪个分支更新(假设是默认分支),然后每当您将分支合并到默认分支时,您就可以让服务器运行:
hg update
它将您的存储库更新为您设置的分支的最新版本。
SVN是同一个概念,你只检查你最初想要哪个分支
svn co http://host/repository/branchname/
然后你让你的服务器用一个 cron 作业更新它,ala
svn up
但理论上,任何支持分支的 VCS(所有好的 VCS 都可以:git、mercurial、SVN 等),应该能够做类似的事情。
我怀疑许多 VCS 直接提供此功能,但是编写脚本应该非常简单。基于日期或分支的结帐。
作为后续,
我认为一个应用程序应该做一项工作并且做得很好。通常,如果您开始将工具组合到一个产品中,它们中的任何一个都不会大放异彩,而且它们中的大多数都会是“'好吧,有点”。
如果我在做这样的事情,我会得到像 SVN、ANT 和 Subversion Ant 库(http://ant.apache.org/antlibs/svn/index.html)这样的东西——不过你的数量可能会有所不同。