如何svn转储特定文件夹并将其加载到特定位置

Ziz*_*o47 2 svn tortoisesvn svnadmin

所以这是故事,我有以下SVN回购-

Fruit
 - Banana
   - trunk
 - Mango

Vegetables
 - Potato
   - trunk
 - Mango
   - trunk
Run Code Online (Sandbox Code Playgroud)

事实证明,在整个过程中,我们一直在为芒果项目使用错误的回购(蔬菜),并且在水果回购中已有一个现有的芒果文件夹。因此,我的任务是将Vegetables \ Mango \ trunk文件夹放入Fruit \ Mango。这是我的尝试-

// I dump the vegetables repo
svnadmin dump C:\Repos\Vegetables > Vegetables.dump 

// I then filter the dump to only include Mango/trunk
svndumpfilter --drop-empty-revs --renumber-revs include Mango/trunk < Vegetables.dump > Mango-trunk.dump

// Finally, I load the filtered dump file into the Fruit/Mango
svnadmin load C:\Repos\Fruit --parent-dir Mango < Mango-trunk.dump
Run Code Online (Sandbox Code Playgroud)

生成的水果回购如下:

Fruit
 - Banana
   - trunk
 - Mango
   - Mango
     - trunk
Run Code Online (Sandbox Code Playgroud)

这显然是假设的,但反映了我现在遇到的问题。我不知道如何在没有其父目录的情况下单独迁移主干文件夹。我什至尝试根据我对文件系统的错误假设对已过滤的转储进行dumpfilter,但这无济于事。我需要执行确切任务的提示,建议的替代方法对我没有帮助,谢谢。

Thi*_*Not 5

SVN手册中有一个示例,说明了如何将顶级目录移动到其自己的存储库中,您应该能够适应您的情况。

基本过程是在使用加载之前,手动编辑转储文件svnadmin load。首先,Mango/从转储文件的Node-pathNode-copyfrom-path标头中删除开头。然后,删除转储文件中创建Mango目录的部分。它看起来像这样:

Node-path: Mango
Node-action: add
Node-kind: dir
Content-length: 0
Run Code Online (Sandbox Code Playgroud)

但请注意以下几点:

警告

如果您计划手动编辑转储文件以删除顶级目录,请确保您的编辑器未设置为将行尾字符自动转换为本机格式(例如\r\n\n),否则内容将不会转换为本机格式。同意元数据。这将使转储文件无用。

现在您可以加载转储文件。