0

我刚刚开始使用 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

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

4

1 回答 1

1

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

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

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

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

于 2012-09-11T07:39:14.273 回答