【问题标题】:SVN switch overwrites Working CopySVN 开关覆盖工作副本
【发布时间】:2012-09-11 07:12:40
【问题描述】:

我刚开始使用 SVN,刚刚遇到了一个奇怪的 SVN 开关问题,我无法找到答案。长话短说:我有一个最新版本的应用程序的工作副本,我存储在 /my repo/tags/versionnumber 中。做了一些错误修复,并计划对 Trunk 进行签入以将其部署到我的舞台环境。

但是,在执行 svn 切换时,它不仅将 repo 路径更改为 /my repo/trunk/,而且还进行了结帐(或其他操作)并覆盖了我的本地更改。主干和标签也有相同的修订号,根据我阅读的内容应该是不可能的。

以下是一个示例输出(从瑞典语翻译,所以如果听起来很奇怪,你知道为什么):

>svn info
>
>URL: svn+ssh://user@server/my repo/tags/versionnumber
......
>Revision: 8
.....
>Latest change in revision: 6

> svn switch svn+ssh://user@server/my repo/trunk/
> password ********
>
>D    log
>D    logparse.php
>U    document_root/js/standard.js
......
>Updated to revision 8
>
>svn info
>URL: svn+ssh://user@server/my repo/trunk
......
>Revision: 8
.....
>Latest change in revision: 8

当我切换回来时也会发生同样的情况。然后它将添加之前删除的文件(如果它们存在于主干中)并“更新”两者中存在的文件。

【问题讨论】:

    标签: svn


    【解决方案1】:

    这是 svn switch 的预期行为。它的作用是将您的工作副本切换到您要切换到的分支的 HEAD 修订版(本质上是对当前工作副本的分支的检出)。

    如果您的本地更改与您要更改到的分支上的任何内容都不冲突,那么它们将被单独保留。如果有冲突,svn 会告诉你。

    当您提交并且修订号增加时,该修订号是整个存储库的新修订号,而不仅仅是您正在处理的分支。这就是为什么主干和标签具有相同的修订号的原因。这也是 svn 的预期行为。

    查看本书了解更多详情:http://svnbook.red-bean.com/(提供免费在线版本)。

    【讨论】:

    • 我在 svnbook 中读过不少内容,但我对 switch 上的这个功能不太清楚。现在我明白了文本“将工作副本更新到不同的 URL”意味着我使用新的 URL 进行 SVN 更新。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-20
    • 2011-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-17
    • 2014-11-27
    相关资源
    最近更新 更多