Svn 移动到主干/分支/标签Subversion布局,不同状态下的不同工作副本

Svn 移动到主干/分支/标签Subversion布局,不同状态下的不同工作副本,svn,Svn,我们的网站开发模式如下: 开发人员在他们的工作站上工作新的东西,并提交给一个中央存储库 post-commit钩子会自动更新测试web服务器上此repo的签出,以便他们可以看到更改的效果 当一项功能被认为足够稳定时,单个文件将在生产web服务器上启动 测试和生产服务器上签出副本中的文件从未被修改,因此也从未用于向repo进行提交 诚然,这可以做得更好,但这一过程开始很小,并逐渐发展到这一点。然而,我们现在想介绍“标准”主干/分支/标签回购组织 解决了我们最初的顾虑,现在我们在repo中有了新

我们的网站开发模式如下:

  • 开发人员在他们的工作站上工作新的东西,并提交给一个中央存储库
  • post-commit钩子会自动更新测试web服务器上此repo的签出,以便他们可以看到更改的效果
  • 当一项功能被认为足够稳定时,单个文件将在生产web服务器上启动
  • 测试和生产服务器上签出副本中的文件从未被修改,因此也从未用于向repo进行提交
诚然,这可以做得更好,但这一过程开始很小,并逐渐发展到这一点。然而,我们现在想介绍“标准”主干/分支/标签回购组织

解决了我们最初的顾虑,现在我们在repo中有了新的目录结构,测试web服务器被切换到使用trunk。问题是,我们不能对生产服务器执行相同的操作,因为
svn开关
将获得所有文件的头版本,我们需要当前版本

我看到您可以将
-r BASE
svn开关一起使用,但当我这样做时,我得到:

$ svn switch -r BASE https://old_URL/trunk
svn: 'https://old_URL' is not a working copy
svn: 'https://old_URL' does not exist

有什么建议吗?

试试
@PEGREV
语法:

C:\>svn help switch
switch (sw): Update the working copy to a different URL.
usage: 1. switch URL[@PEGREV] [PATH]
       2. switch --relocate FROM TO [PATH...]
更新 请注意,
分支
标记
主干
系统只是一种命名约定。Subversion中的这些项目没有什么特别之处:它们只是目录。所以你有这个:

r1: Add: /site/
    Add: /site/css
    Add: /site/img

    Repo:
        /site/
        /site/css
        /site/img

r2: Add: /branches
    Add: /tags
    Add: /trunk

    Repo:
        /branches
        /site/
        /site/css
        /site/img
        /tags
        /trunk

r3: Copy: /site/ to /trunk
    Delete: /site/

    Repo:
        /branches
        /tags
        /trunk
        /trunk/site/
        /trunk/site/css
        /trunk/site/img
如果您有指向
/site r1
的工作副本,则无法切换它
/trunk/site r1
:该路径在r1的目录树中不存在

一旦您决定发布新版本,比如r4,您就可以切换到
/trunk/site r4
;以前没有


依我看,您可能应该创建一个分支(例如
live
release
),并使live服务器指向其最新版本。当您想要推动新的更改时,您可以合并到该分支。

我承认我不太确定您的布局。。。
trunk
是否已存在于
BASE
版本中?除非移动到更新的版本(创建后),否则无法切换到主干。不,
trunk
现在已经创建,所以
BASE
中的所有内容都在
trunk
创建之前…关于
发布
分支的最后一个建议非常好,我将说服团队使用它。然而,我现在仍然不能解决我的迁移问题…我想我不太擅长解释这个问题。最后,答案是使用
svn export
在生产服务器上复制“工作树”,创建新分支,并递归添加所有文件。谢谢你的帮助!那么,您是否删除了所有文件的历史记录?