2012-09-11 123 views
0

我刚开始使用SVN,刚遇到一个SVN交换机的奇怪问题,我一直无法找到答案。长话短说:我有我的应用程序的最新版本的工作副本,我已经存储在/我的回购/标签/版本号。做了一些错误修正,并计划在Trunk中进行检查以将其部署到我的舞台环境中。SVN交换机覆盖工作副本

但是,在执行svn切换时,它不仅将repo路径更改为/我的repo/trunk /,而且还执行了结帐(或其他)并覆盖了本地更改。根据我读过的内容,干线和标签都有相同的版本号。

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

>svn info 
> 
>URL: svn+ssh://[email protected]/my repo/tags/versionnumber 
...... 
>Revision: 8 
..... 
>Latest change in revision: 6 

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

当我切换回同样会发生。然后它将添加它以前删除的文件(如果它们存在于中继中)并“更新”两者中存在的文件。

回答

1

这就是svn switch的预期行为。它所做的是将工作副本切换到您要切换到的分支的HEAD修订版本(主要是通过您当前的工作副本签出分支)。

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

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

看看这本书的更多细节:http://svnbook.red-bean.com/(免费在线版本可用)。

+0

我在svnbook里读过很多东西,但是这个功能在开关上不会很清楚。现在我明白了“更新工作副本到不同的URL”文本意味着我使用新的URL进行SVN更新。 – Lobo