【问题标题】:svn: turn exported tree into working copysvn:将导出的树变成工作副本
【发布时间】:2011-06-02 10:14:54
【问题描述】:

为了快速将我们的应用部署到新的远程服务器,我们将分支导出到本地目录,对其进行压缩,然后在新服务器上解压缩。

现在,我们想要将导出的副本(它是 repo 中分支的精确副本)转换为工作副本。这可能吗?

【问题讨论】:

    标签: svn export working-copy


    【解决方案1】:

    如果导出只是分支的副本,为什么不直接从分支中签出?

    当然,我注意到只要所有 subversion 元文件都存在,您就可以将项目连接回存储库。如果你的服务器上有一个 subversion 客户端并且不害怕使用命令行,你可以尝试“svn status”来看看你是否可以连接到存储库。

    【讨论】:

    • 嗯,问题是在服务器上进行结帐需要很长时间,这就是我们将压缩副本推送到服务器的原因。
    【解决方案2】:

    对我来说,我使用以下工作流程:

    1. 从 repo 中导出特定修订并将其上传到我的网络服务器。所以我有一个现场版
    2. 当我导出修订版时,我创建了一个标签,表明该版本现已上线(例如live_from_xxyyzz,其中xxyyzz 是上传日期)
    3. 当我必须进行任何更改时,我会在本地进行更改,签入,然后执行新的导出(即转到第 1 步)

    这样做,完全没有必要将导出的版本转回工作副本,因为您拥有可以信任的标签。

    另一方面,您可以简单地获取您的实时版本(远程服务器上的那个)并将其复制到您的工作目录。如果有什么不同,您会注意到它(以及丢失的文件或新文件)。

    编辑:

    当您导出的版本成为工作副本时,您在使用 svn 时会遇到一些麻烦:svn(当前)需要一个已检出工作副本的.svn 文件夹。这些.svn 文件夹包含版本信息。要将整个导出版本置于版本控制之下,您必须创建(并填充)这些文件夹(即将它们从真实工作副本复制到导出版本中)。

    从 Subversion 1.7 开始,将有一个centralized metadata storage,这意味着所有与版本控制相关的文件都存储在每个工作副本的 one 文件夹中(例如 Git 所做的)。这将使您的问题更容易解决,但目前,我认为除了如上所述从工作副本中复制 .svn 文件夹之外别无选择(当然,除了真正检查分支之外)。

    【讨论】:

    • 我希望导出的副本成为我的分支的工作副本,以便我可以执行 svn update 以获取最新的更改。我带导出副本的原因是因为分支很大,而且需要很长时间才能在服务器上结帐。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-20
    • 1970-01-01
    • 1970-01-01
    • 2011-05-12
    • 1970-01-01
    • 1970-01-01
    • 2011-12-11
    相关资源
    最近更新 更多