组合SVN存储库

组合SVN存储库,svn,switch-statement,Svn,Switch Statement,我有多个svn存储库,我正试图将它们合并为一个 我做了两次svnadmin dump{old repo}| svnadmin load--parent dir{new subfolder}{new repo}运行来组合它们。但是,是否有办法将工作副本指向新版本 如果我执行svn开关--relocate{old repo}{new repo}我会得到错误: svn:{new repo}处的存储库具有uuid“70567957-ca9a-40a3-95c2-c7c7f5304040”,但WC具有“e

我有多个svn存储库,我正试图将它们合并为一个

我做了两次
svnadmin dump{old repo}| svnadmin load--parent dir{new subfolder}{new repo}
运行来组合它们。但是,是否有办法将工作副本指向新版本

如果我执行
svn开关--relocate{old repo}{new repo}
我会得到错误:

svn:{new repo}处的存储库具有uuid“70567957-ca9a-40a3-95c2-c7c7f5304040”,但WC具有“e7f76c56-4d0d-472c-a1f0-6eac23a5d238”

我认为要一个新的干净的结账台并不容易。因为大多数WC都有一些本地更改(如DB凭据/用户图像)。其中一个甚至有一个(必需的)缓存目录,包含数百万个图像缩略图,需要+/-2天才能重新生成


我可以强制svn忽略uuid,只接受新位置吗?

您可以创建当前工作副本的修补程序文件,然后重新签出并最终应用修补程序

创建修补程序文件:

$> svn diff > ~/old_repo.patch
结帐:

$> svn co {new_repo}
应用修补程序:

$> cd new_repo
$> patch -p0 -i ~/old_repo.patch

在一个名为“解释如何设置新存储库的UUID”的新堆栈交换站点(Unix和Linux)中有一个答案。这将产生以下后果:

  • 您只能设置1个UUID,但有n个旧存储库。您必须决定使用哪一个,对于这一个,UUID的更改可能会起作用
  • 所有其他人都必须重新结账

抱歉,似乎没有完整的解决方案。

这与我手动执行的操作相同,仍然无法将WC重新定位到新的位置。哦,好的,抱歉,我没有回答这个问题。我将根据您的需要更新我的答案。这不起作用,因为缓存位于
svn:ignore*
文件夹中。因此,它不会包含在修补程序中。即使它们位于普通文件夹中,它仍然可以工作,因为它们是二进制的。对吗?不,如果有二进制文件,你需要像这样更改命令。此外,如果这些是中的唯一文件,请忽略直接复制它们。否则,也许一个好办法是签出到一个新目录,然后使用rsync将更改的文件放回原处,但别忘了重新存储文件夹。我通过“几乎”按你说的做,解决了这个问题。我查看了新的回购协议。从旧的repo中删除所有.svn文件夹,并将这些文件复制到。因此,svn:ignore文件夹中的二进制文件和文件也会被复制。