2012-04-27 75 views
0

检出项目并尝试更新现有文件时遇到一个奇怪的问题。我在svn仓库中有几个分支。我使用单个工作项目目录(比如“proj”)来检查我想要处理的分支。svn不会更新现有文件

假设我一直在“proj”文件夹中检出“branch1”,现在我想在“branch2”上工作。因此,我删除了“proj”中的.svn,并从存储库中检出“branch2”为“proj”(无需创建文件夹“branch2”将所有文件放在“branch2”,branch2/*,直接放在“proj”下)。问题是svn checkout不会实际更新现有的文件,比如说“file1”已经存在(它在branch1和branch2中),它不会被更新为“branch2”中的版本,除非我删除“文件1”或结帐“分支2”到一个空文件夹。即使我执行svn update -r #rev file1,它实际上也不会更新file1,尽管svn status file1显示file1的正确#rev。顺便说一下,svn checkout的输出对于已经存在的所有文件显示“E”。

这是什么svn应该表现?我必须删除这些文件才能更新吗?我对这种行为感到不满,因为它违反直觉,并且会在分支之间切换。你能否提供一些简洁的解决方案?谢谢。

+1

你为什么要删除'.svn'文件夹?你根本不需要这么做。 – Makoto 2012-04-27 21:59:17

+0

如果我不这样做,它会提示:svn:'。'已经是另一个URL的工作副本,因为我单独检出“branch1”,“branch2”文件夹,并将branchi/*直接放在“proj”文件夹下,而不创建branch1或branch2文件夹。 – Fashandge 2012-04-27 22:04:47

回答

2

您应该使用

svn switch <branch-repo path> 

切换到不同的分支。

+0

谢谢!这正是我想要的,它的工作原理。 – Fashandge 2012-04-27 22:22:01