将存储库移动到svn中的另一个子目录[重复]
Posted
技术标签:
【中文标题】将存储库移动到svn中的另一个子目录[重复]【英文标题】:moving repository to another subdirectory in svn [duplicate] 【发布时间】:2014-08-07 13:58:08 【问题描述】:我会先说 svndumpfilter failed(使用这个解决方案:Moving SVN repositories data with history as subfolders into another repository)我得到了错误:
At line:1 char:30
+ svndumpfilter include \trunk < E:\tmp\test1.dump > E:\tmp\test1filter.dump
+ ~
The '<' operator is reserved for future use.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : RedirectionNotSupported
执行后:
svndumpfilter include \trunk < E:\tmp\test1.dump > E:\tmp\test1filter.dump
我的问题:我有几个项目作为单独的存储库:
RootDir -
project1
project2
project3
project4
project5
project6
其中 3 个项目是针对同一家公司的,所以我想像这样移动它们:
RootDir -
project1
project2
companyX -
project3
project5
project6
project4
即我想将多个存储库作为子文件夹移动到一个主存储库中。
存储库位于 windows server 2012 中,我使用远程桌面在其上运行 svn 命令提示符。
我没有想法
【问题讨论】:
第二个命令应该是svnadmin load
,而不是svnadmin dump
这实际上看起来像是在 SAME 存储库中移动项目,而不是将项目从一个存储库移动到另一个存储库,对吗?如果是这样,这不是“移动 SVN 存储库”问题的重复。
打错字了,我实际上做了 svnadmin load
【参考方案1】:
svnadmin 不能只从存储库中转储子树,也不能使用逻辑路径到这个子树
svnadmin dump path_to_RootDir\project3 > temp_path_in_disk\dump_file.dmp
将转储整个存储库,您必须从中提取 project(3|5|6)
和 svndumpfilter include
到一个公共转储中。但是您可以使用svnrdump dump URL
在一个命令中转储子树,并在不进行预过滤的情况下获得 3 个文件
svnadmin load
命令
加载时,您必须使用存储库根目录的物理路径,而不是存储库内的逻辑路径:
svnadmin load path_to_RootDir < temp_path_in_disk\dump_file.dmp
--parent-dir
选项
svnadmin load --parent-dir companyX path_to_RootDir < temp_path_in_disk\dump_file.dmp
【讨论】:
我试过" svnadmin dump my_site.com:8443/svn/test1 > E:\tmp\test1.dmp" > e:/tmp/test.dmp 我得到这个错误:"svnadmin: E205000: 'my_site.com: 8443/svn/test1/'是一个URL,当它应该是本地路径”×评论只能编辑5分钟×评论只能编辑5分钟×评论只能编辑5分钟 @Clonimus - 使用 PHYSICAL PATH 将工作转储和加载到 本地文件系统 上的存储库,而不是使用 URL 我做了svnadmin dump E:\ServerFolders\Development\Repositories\test1 > E:\tmp\test1.dmp
并且成功了,但是:svnadmin load E:\ServerFolders\Development\Repositories\test2 < E:\tmp\test1.dmp
给了我这个错误:At line:1 char:63 + svnadmin load E:\ServerFolders\Development\Repositories\test2 < E:\tmp\test1.dmp + ~ The '<' operator is reserved for future use. + CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException + FullyQualifiedErrorId : RedirectionNotSupported
@Clonimus - 完整转储,恢复到现有仓库(如果仓库的内容相关)可能有奇怪的效果(如果test2
本身功能齐全) -从未尝试过。尝试过滤转储(只保留需要的文件夹)和|或使用 --parent-dir 加载它
@ Lazy Badger - 谢谢,用parrent-dir 加载它是什么意思?这是如何工作的,我从文档中不太了解。顺便说一句,test2 是一个空存储库(只有文件夹结构 - 主干、标签和分支)【参考方案2】:
注意:这解决了一个与问题预期不同的问题,该问题实际上是在询问将一组存储库移动到 不同 存储库的子目录中。
看起来您是在同一个存储库中移动项目,而不是在不同的存储库之间移动。如果是这种情况,那么我认为您只想使用 svn mv
使用两个 URL 参数的命令。例如。 svn mv --parents http://example.com/RootDir/project3 http://example.com/RootDir/companyX/project3 -m "consolidate company X projects"
。如果中间目录不存在,“--parents”选项会创建它。
【讨论】:
只是为了svn mv --parents ...
谢谢,添加到答案中。某些版本的 svn 书籍不包含该选项的链接 :-)
我收到此错误“svn:E200007:源和目标 URL 似乎没有指向同一个存储库。”这很愚蠢。我用作源:“my_site.com:8443/svn/test1/”和目标:“my_site.com:8443/svn/tests/mytest1” 在第一次尝试中,没有创建目标(我想知道 mv命令将创建它),第二次尝试我在执行之前创建了它
好的,那看起来它实际上可能是两个独立的存储库。你在你的问题中说你有“[你的]存储库中有几个项目”,但看起来实际上你的服务器上有几个存储库。 SVN mv 不能在存储库之间工作。
@Ben - 那么最简单的方法是什么?谢谢你的回答【参考方案3】:
问题在于 Windows Server 2012 的 Windows PowerShell。
我下载了Console 2 并用它代替了 Windows shell。
“Moving SVN repositories data with history as subfolders into another repository”中建议的解决方案成功了。
出于我的需要,我什至不需要 svndumpfilter 部分。
【讨论】:
以上是关于将存储库移动到svn中的另一个子目录[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何将SVN存储库作为文件夹复制到具有历史记录的另一个存储库
cvs2svn:将存储库转换并放置到现有 SVN 存储库的子目录中