发新话题
打印

按指定修订版本范围转移版本库后出现的问题 求助

按指定修订版本范围转移版本库后出现的问题 求助

这段时间陆陆续续在进行svn的学习和使用, 也碰到过各种各样的问题和困惑, 有subversion中文站这样的社区,让人感到很温暖,也帮助我解决了不少问题,先谢谢各位热心的朋友.

昨天在进行一次早期版本库的删除和转移时出现这样一个问题, 向大家求个助:

一个版本库(以myrepos简称), 原来的HEAD版本是156, 因为在当初创建的时候没规划好,在早期的一些版本中陆陆续续删除并重建过一些项目,但大家知道,名义上是删除,但数据仍然存在于版本库中,但这些“删除”的项目很占硬盘空间,所以想做一次整理, 昨天我用以下命令进行了重建

$svnadmin dump myrepos -r 60:156 > rev-60-156-dump-file #导出了60至156版本号的历史
$rm -rf myrepos #完整删除原来的版本库
$svnadmin create myrepos #重建版本库
$svnadmin load myrepos < rev-60-156-dump-file #导入刚才的备份文件到新建版本库

很顺利,svn重建了myrepos, 版本号从1开始一直到96是新库中的修订版本。

但是我的三个该库的工作拷贝却出现了问题:

工作拷贝的修订版本号是156,就是原来版本库的HEAD版本号,而现在新库的版本号是重新建立的,最新是96,我在工作拷贝中执行svn update或svn commit时始终提示错误, 无法与新库建立关联,错误信息大致如下:Error: REPORT of '/repos/myrepos/!svn/vcc/default': 500 Internal Server Error (http://svn.XXXX.com) ;

请问这种情况该如何解决, 因为在一个工作拷贝中刚做过很多改动,在昨天转移版本库时忘记了做一次svn commit,现在不能简单的删除这个拷贝,重新获取新库的拷贝

TOP

其实重新 load库的时候,可以保留原来的 修订号 ,那样可能不是你需要的。

你的情况麻烦一点,svn update或者 commit肯定不行了

svn switch --relocate应该也有问题,因为已经不是一个库了

我的办法是,可以把工作拷贝的.svn目录全部删除,然后再来一次svn checkout,这样不会覆盖你的本地修改,本地修改的文件会变成已更改

不过要小心,路径的对应关系,安全起见先备份工作拷贝。
我的Blog,欢迎友情链接:http://rocksun.cn
支持Subversion中文站,欢迎友情链接我们:http://www.subversion.org.cn/
Twitter Me:http://twitter.com/rocksun

TOP

果然是修订号的问题.
那如果删除所有.svn目录, 再来一次checkout的话, 本地的修改不会被覆盖掉吗.

或者是否可以export一份修改过的工作拷贝.  再在另外一个目录checkout一份新库的工作拷贝, 再把刚才export的修改过的原工作拷贝覆盖到新的工作拷贝, 再执行一次svn commit,  这样原先未commit过的修改会正常commit到新库中

TOP

不可以再checkout,因为本地已经是工作拷贝了,只能update,除非删除所有.svn文件夹,但即使删除了.svn文件夹,仍然不能够顺利checkout,因为想要checkout的文件在本地已经存在,会报错的。

先把本地的内容export到另一个目录,再从服务器checkout最新版本,然后把export出来的覆盖到工作拷贝,也就是lz的或者了。。这个方法是可行的。

TOP

因为想要checkout的文件在本地已经存在,会报错的。

--你可以试试看
我的Blog,欢迎友情链接:http://rocksun.cn
支持Subversion中文站,欢迎友情链接我们:http://www.subversion.org.cn/
Twitter Me:http://twitter.com/rocksun

TOP

发新话题