2014-09-18 151 views
1

我们最近迁移了一个我们的Subversion存储库,它的结构只能包含一个项目(即树干等位于根目录),以便多个项目可以被控制在一个存储库中。调用svnadmin load时,我们使用--parent-dir选项将所有文件从存储库移动到不同存储库的子目录中。当然,由于UUID实际上是一个新的存储库,所以UUID不再与旧的存储库相同。SVN:使用--parent-dir迁移后重定位本地副本

所以最初存储库URL到项目的树干看起来是这样的:

http://subversion/repo/trunk 

现在是这样的:

http://subversion/repo/project/trunk 

现在我需要迁移主干我的本地工作副本。我知道我可以从项目文件夹中进行一次打包和重新签出,但这是一个相当大的存储库,这样做在时间和磁盘空间方面非常昂贵。

有没有什么办法可以告诉svn relocate不仅忽略祖先,而且也忽略存储库UUID已经改变的事实?

也许有一种方法可以手动更新.svn文件夹中的元数据以指向正确的回购网址?也许有一种方法可以检出.svn文件夹中的元数据并将其交换到本地工作副本中?

回答

1
  1. 移居“......改写工作副本的URL元数据,以反映单纯的语法改变。”,即:如果您更改UUID,则无法重新定位 - 新的存储库是全新的,无关的老,搬迁意愿失败
  2. “当然,UUID与旧版本库不再一样” - 真的?!您可以结合--force-uuid | --ignore-uuid负荷阶段,以便在至少一个 UUID为继承父库
  3. 您可以使用svnadmin setuuid,以改变现有的存储库

这里的UUID是一种方法,只检出元-sdn文件夹中的数据

是的。

您可以签新的URL http://subversion/repo/project/trunk到新的工作副本--depth 'empty',它得到空WC与.svn文件夹,复制|移动旧WC的所有内容(除了旧的元数据.svn文件夹),并同步WC与仓库,使用svn up --set-depth 'infinity' (超过未来操作的旧深度结账)

+0

嗯,我试着在设置我的结帐深度的建议。无论如何,它似乎再次检查所有文件。 – 2014-09-18 17:11:07