SVN:使用--parent-dir迁移后重定位本地副本

时间:2014-09-18 16:29:06

标签: svn version-control data-migration

我们最近迁移了一个我们的subversion存储库,这些存储库的结构使得它只能包含一个项目(即主干等位于根目录下),因此可以在一个存储库中控制多个项目。我们在调用--parent-dir时使用svnadmin load选项将所有文件从存储库移动到不同存储库的子目录中。当然,UUID不再与旧的存储库相同,因为它实际上是一个新的存储库。

所以最初项目主干的存储库URL看起来像这样:

http://subversion/repo/trunk

现在是这样的:

http://subversion/repo/project/trunk

现在我需要迁移我的本地工作副本trunk。我知道我可以从项目文件夹中进行一次点击和重新检查,但这是一个非常大的存储库,这样做是相当昂贵的时间和磁盘空间明智。

有没有办法告诉svn relocate不仅要忽略祖先,还要忽略存储库UUID也发生变化的事实?

也许有办法手动更新.svn文件夹中的元数据以指向正确的repo URL?也许有办法只检查.svn文件夹中的元数据并将其交换出我的本地工作副本?

1 个答案:

答案 0 :(得分:1)

  1. 重新定位“...重写工作副本URL元数据以仅反映语法更改。”因此:如果您更改了UUID,则无法重新定位 - 新存储库是全新的,与旧的无关,重定位将失败
  2. “当然UUID已经不再是旧的存储库了” - 真的吗?!您可以在加载阶段合并--force-uuid | --ignore-uuid,以便从父存储库继承至少一个 UUID
  3. 您可以使用svnadmin setuuid来更改现有存储库的UUID
  4.   

    这是一种只检查.svn文件夹中的元数据的方法

    您可以使用http://subversion/repo/project/trunk将新网址--depth 'empty'签入新的工作副本,获取包含.svn文件夹的空WC,复制旧移动WC的所有内容({{1除外)带有旧元数据的文件夹)并使用.svn将WC与存储库同步(超过旧的结帐深度以备将来操作)