颠覆&在标签之间切换

时间:2008-10-10 21:56:59

标签: svn tags

我的自动部署系统通过subversion更新了我的网站的最新版本。我没有让我的实时网站指向主干(这几乎是一个正在进行中的版本),而是让我的实时网站指向一个标记。

E.g。我在trunk上工作,当我的v1.0完成后,我创建了一个名为1.0的标签,并检查该标签,然后是我的实时网站。现在,我继续在trunk上工作,过了一会儿就有了v2.0。我创建了一个名为2.0的标签,我希望我的实时网站类似于这个2.0标签。

我可以擦除当前的实时网站并检查此2.0标记。然而,这听起来很容易。我的网站大小约1GB,因为它有各种PDF文档和视频。我可以肯定地说,我做更新的大多数时间都是复制更改或错误修复。这意味着每次更新可能只有1%的网站更改。由于我的版本控制只能通过异地http连接访问我的网络服务器,这意味着我需要一遍又一遍地下载整个网站。

是否有一种简单的方法可以在标签之间切换并让subversion只更新这些标签之间的差异?

3 个答案:

答案 0 :(得分:7)

实际上有一个切换功能可以做到这一点。我使用TortiseSVN这是一个用于Subversion的windows shell / gui,所以我不熟悉如何手动操作,但这看起来应该有所帮助:

http://svnbook.red-bean.com/en/1.1/ch04s05.html

答案 1 :(得分:6)

命令行:svn switch URL

使用svn help开关获取更多详细信息。

但是,我建议反过来做事。您的生产站点始终位于主干上,而您在分支上进行开发,这些分支在准备发布时会合并回主干。在任何给定的版本之后,您可以为历史目的执行标记。合并后,您只需执行svn更新即可让您的网站运行新代码。

DivMod将这个想法归结为合乎逻辑的结论,为每个正在处理的问题/票证创建一个分支。你可以read their description of their system;它提供了一些有说服力的论据。

答案 2 :(得分:1)

我使用类似的设置,除了我使用实时分支,而不是标签。提交工作要多得多,因为我现在必须将更改从trunk更改为live分支,但我可以在webroot中执行“svn up”来更新它。如果我想将来自不同分支的选定变更合并到实时,它还可以让我稍微好一点。

如果我再次这样做,我会使用mercurial(或类似的),因为分支更容易维护,但上述技术已经适用于3个实时网站大约两年了。