我刚开始使用SVN,刚刚遇到一个SVN切换的奇怪问题,我一直无法找到答案。长话短说:我有一份我存储在/ repo / tags / versionnumber中的应用程序最新版本的工作副本。做了一些错误修正并计划签入Trunk以将其部署到我的舞台环境。
然而,在执行svn切换时,它不仅将repo路径更改为/ my repo / trunk /,而且还要执行checkout(或其他操作)并覆盖我的本地更改。主干和标签都有相同的版本号,根据我所读的内容,这是不可能的。
以下是一个示例输出(翻译自瑞典语,所以如果听起来有点奇怪,你知道为什么):
>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
当我换回时会发生同样的事情。然后它将添加先前删除的文件(如果它们存在于主干中)并“更新”两者中存在的文件。
答案 0 :(得分:1)
这是svn switch的预期行为。它的作用是将您的工作副本切换到您要切换到的分支的HEAD修订版本(基本上是当前工作副本的分支结帐)。
如果您的本地更改与您正在更改的分支上的任何内容都不冲突,那么它们将被单独留下。如果有冲突,那么svn会告诉你。
当您进行提交并且修订号增加时,该修订号是整个存储库的新修订号,而不仅仅是您正在处理的分支。这就是主干和标签具有相同版本号的原因。这也是svn。
的预期行为有关详细信息,请查看本书:http://svnbook.red-bean.com/(提供免费在线版本)。