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,但这无济于事。我需要执行确切任务的提示,建议的替代方法对我没有帮助,谢谢。
SVN手册中有一个示例,说明了如何将顶级目录移动到其自己的存储库中,您应该能够适应您的情况。
基本过程是在使用加载之前,手动编辑转储文件svnadmin load
。首先,Mango/
从转储文件的Node-path
和Node-copyfrom-path
标头中删除开头。然后,删除转储文件中创建Mango
目录的部分。它看起来像这样:
Node-path: Mango
Node-action: add
Node-kind: dir
Content-length: 0
Run Code Online (Sandbox Code Playgroud)
但请注意以下几点:
警告
如果您计划手动编辑转储文件以删除顶级目录,请确保您的编辑器未设置为将行尾字符自动转换为本机格式(例如
\r\n
到\n
),否则内容将不会转换为本机格式。同意元数据。这将使转储文件无用。
现在您可以加载转储文件。