我的自动部署系统通过subversion更新了我的网站的最新版本.我没有将我的实时站点指向主干(这几乎总是正在进行中的版本),而是让我的实时站点指向标签.
例如,我在trunk上工作,当我的v1.0完成时,我创建了一个名为1.0的标签,然后检查该标签,然后是我的实时网站.现在,我继续在trunk上工作,过了一会儿就有了v2.0.我创建了一个名为2.0的标签,我希望我的实时网站类似于这个2.0标签.
我可以擦除当前的实时网站并检查此2.0标签.然而,这听起来很容易.我的网站大小约1GB,因为它有各种PDF文档和视频.我可以肯定地说,我做更新的大多数时间都是复制更改或错误修复.这意味着每次更新可能只有1%的网站更改.由于我的版本控制只能通过异地http连接访问我的网络服务器,这意味着我需要一遍又一遍地下载整个网站.
有没有一种简单的方法在标签之间切换,并且subversion只更新这些标签之间的差异?
实际上有一个切换功能可以做到这一点.我使用TortiseSVN这是一个用于Subversion的windows shell/gui,所以我不熟悉如何手动操作,但这看起来应该有所帮助:
http://svnbook.red-bean.com/en/1.1/ch04s05.html
命令行:svn switch URL
使用svn help开关获取更多详细信息.
但是,我建议反过来做事情.您的生产站点始终位于主干上,而您在分支上进行开发,这些分支在准备发布时会合并回主干.在任何给定的版本之后,您可以为历史目的执行标记.合并后,您只需执行svn更新即可让您的网站运行新代码.
DivMod将这个想法归结为其逻辑结论,为每个正在处理的问题/票据创建一个分支.你可以阅读他们对系统的描述 ; 它提供了一些令人信服的论据.