SVN检出同名分支报错及额外.svn文件夹问题求助
解决SVN同名分支检出的工作副本冲突问题
首先得明确你遇到的错误根源:svn: E155000 这个报错是因为你要检出到的 branches 目录本身已经是一个SVN工作副本,它关联的URL和新b4分支的URL不匹配——SVN不允许在一个已存在的工作副本目录里直接检出另一个URL的内容,每个工作副本只能绑定一个仓库路径。
而你用 svn co ... branches\b4 生成嵌套 .svn 的方式确实有风险:嵌套工作副本会让SVN在操作时混淆不同层级的版本信息,后续提交、更新很容易出问题,必须避免。
下面给你几个实用的解决办法,适配Windows 7环境和命令行/TortoiseSVN两种操作方式:
方法一:切换现有工作副本到新分支(推荐)
如果你的 branches 目录之前是旧b4分支的工作副本,直接用switch命令把它绑定到新分支即可:
- 打开命令提示符,切换到项目根目录:
cd D:\1-workspace\project - 执行切换命令,将
branches目录关联到新分支URL:
这个命令会自动更新svn switch http://XXXX/project/branches/b4 branchesbranches目录里的文件到新分支的内容,同时保留工作副本的关联关系,不会生成多余的.svn。
如果你的branches是上级project工作副本的子目录(也就是project目录本身有.svn),那应该这样操作:
- 先删掉本地
branches下的旧b4文件夹(直接手动删除就行,因为仓库里的旧分支已经被删掉了)。 - 用带
--force参数的检出命令,把新分支拉到branches\b4,复用上级工作副本的信息:
这样svn checkout http://XXXX/project/branches/b4 branches/b4 --forcebranches\b4会成为project工作副本的一部分,不会生成独立的.svn文件夹。
方法二:清理目录后重新检出
如果上面的方法无效,彻底清理有问题的目录再重新操作:
- 手动删除本地
D:\1-workspace\project\branches目录(包括里面的.svn文件夹,确保删干净)。 - 执行检出命令,直接把新分支检出到
branches目录:
这样svn co http://XXXX/project/branches/b4 branchesbranches会成为新b4分支的独立工作副本,只有一个.svn在branches目录下。
方法三:用TortoiseSVN图形界面操作
如果你更习惯可视化操作:
- 切换现有目录到新分支:右键点击
branches目录 →TortoiseSVN→Switch...,输入新分支的URL,点击确定即可完成切换。 - 在现有项目下添加新分支:右键点击
branches目录 →TortoiseSVN→Checkout...,输入新分支URL,选择检出目录为D:\1-workspace\project\branches\b4,勾选Override existing directory选项,点击确定,这样就不会生成嵌套的.svn。
内容的提问来源于stack exchange,提问作者peterboston
相关产品推荐
相关产品推荐

