SVN开关覆盖“工作副本”



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

然而,在进行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

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

这就是svn开关的预期行为。它的作用是将工作副本切换到要切换到的分支的HEAD修订版(本质上是在当前工作副本上签出分支)。

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

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

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

最新更新