SVN加载转储到精确文件夹

SVN加载转储到精确文件夹,svn,version-control,svndump,Svn,Version Control,Svndump,具有一个分支的标准subversion布局: 回购协议1 根 |-分支机构 |-第一分店 |-标签 |-主干 以及第二个存储库, 回购协议2 根 |-分支机构 |-标签 |-树干 |-文件夹1 我想将Repo_2/trunk/folder1内容导出到Repo_1/branchs/branch_one/folder1 我正在进行文件夹转储: svnrdumpsvn://mysvnserver/Repo_2/trunk/folder1 >folder1.dump 然后将其加载到我的Repo_

具有一个分支的标准subversion布局:

回购协议1

根
|-分支机构
|-第一分店
|-标签
|-主干

以及第二个存储库, 回购协议2

根
|-分支机构
|-标签
|-树干
|-文件夹1

我想将Repo_2/trunk/folder1内容导出到Repo_1/branchs/branch_one/folder1

我正在进行文件夹转储:
svnrdumpsvn://mysvnserver/Repo_2/trunk/folder1 >folder1.dump

然后将其加载到我的Repo_1:
svnadmin load Repo_1——父目录分支/分支一

并获得以下回购协议1结构:

根
|-分支机构
|-第一分店
|-树干
|-折叠1
|-标签
|-主干


正在获取我不需要的中继文件夹。有没有办法将我的“folder1”直接插入到“branch_one”?

请仔细阅读SVN手册中的,特别注意警告

您忘记了,该转储文件保存文件中包含的转储节点的所有相对路径,并且
--parent dir
仅更改转储节点中提到的起始装载点,而不是相对位置

您的每个转储文件都将创建一个有效的存储库,但将保持路径与原始存储库中的路径完全相同。这意味着,即使您将为您的calc项目单独拥有一个存储库,该存储库仍将拥有一个名为calc的顶级目录。如果您希望主干、标记和分支目录位于存储库的根目录中,您可能希望编辑转储文件,调整
节点路径
节点复制自路径
标题,使它们不再具有第一个计算/路径组件

根据我自己的经验,我更喜欢始终使用
svndumpfilter include
筛选转储,即使转储是使用svnrdump仅为repo树的一部分创建的:它会产生较少(0)错误或
svnadmin load
。例如,将remote
REPO/trunk/lib
移动到本地存储库上的同一路径(默认存储库树已经存在)对我来说意味着

>svnrdump dump URL/trunk/lib > full.dmp
>svndumpfilter include --pattern "*lib*" --drop-empty-revs --renumber-revs < full.dmp > filtered3.dmp
而“哑巴”垃圾场

>svnrdump转储URL/trunk/lib>dump.dmp

加载尝试时给出错误

>svnadmin load repo2 < dump.dmp
<<< Started new transaction, based on original revision 1
     * adding path : trunk ...svnadmin: E160020: File already exists: filesystem 'bcf62090-928b-9f49-8008-455204e6d81f', transaction '1-1', path '/trunk'
>svnadmin load repo2重新仔细阅读SVN手册中的,特别注意警告

您忘记了,该转储文件保存文件中包含的转储节点的所有相对路径,并且
--parent dir
仅更改转储节点中提到的起始装载点,而不是相对位置

您的每个转储文件都将创建一个有效的存储库,但将保持路径与原始存储库中的路径完全相同。这意味着,即使您将为您的calc项目单独拥有一个存储库,该存储库仍将拥有一个名为calc的顶级目录。如果您希望主干、标记和分支目录位于存储库的根目录中,您可能希望编辑转储文件,调整
节点路径
节点复制自路径
标题,使它们不再具有第一个计算/路径组件

根据我自己的经验,我更喜欢始终使用
svndumpfilter include
筛选转储,即使转储是使用svnrdump仅为repo树的一部分创建的:它会产生较少(0)错误或
svnadmin load
。例如,将remote
REPO/trunk/lib
移动到本地存储库上的同一路径(默认存储库树已经存在)对我来说意味着

>svnrdump dump URL/trunk/lib > full.dmp
>svndumpfilter include --pattern "*lib*" --drop-empty-revs --renumber-revs < full.dmp > filtered3.dmp
而“哑巴”垃圾场

>svnrdump转储URL/trunk/lib>dump.dmp

加载尝试时给出错误

>svnadmin load repo2 < dump.dmp
<<< Started new transaction, based on original revision 1
     * adding path : trunk ...svnadmin: E160020: File already exists: filesystem 'bcf62090-928b-9f49-8008-455204e6d81f', transaction '1-1', path '/trunk'
>svnadmin load repo2加载到存储库后为什么不
svn mv&&svn rm
?加载到存储库后为什么不
svn mv&&svn rm