如何svn转储特定文件夹并将其加载到特定位置
Posted
技术标签:
【中文标题】如何svn转储特定文件夹并将其加载到特定位置【英文标题】:How to svn dump a specific folder and load it into a specific location 【发布时间】:2014-09-03 15:45:42 【问题描述】:故事就是这样,我有以下 svn repos -
Fruit
- Banana
- trunk
- Mango
Vegetables
- Potato
- trunk
- Mango
- trunk
事实证明,我们一直在为我们的 Mango 项目使用错误的 repo(蔬菜),并且我们在 Fruit repo 中有一个现有的 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
生成的 Fruit repo 如下 -
Fruit
- Banana
- trunk
- Mango
- Mango
- trunk
这显然是假设的,但它反映了我现在遇到的问题。我不知道如何在没有父目录的情况下迁移主干文件夹单独。我什至尝试根据我对文件系统的错误假设来对过滤后的转储进行转储过滤,但这无济于事。我需要执行该确切任务的提示,建议的替代方案对我没有帮助,谢谢。
【问题讨论】:
【参考方案1】:SVN 手册中有一个 example 说明如何将***目录移动到其自己的存储库中,您应该能够适应您的情况。
基本过程是在使用svnadmin load
加载转储文件之前手动编辑转储文件。首先,从转储文件中的Node-path
和Node-copyfrom-path
标头中删除前导Mango/
。然后,删除创建Mango
目录的转储文件部分。它看起来像这样:
Node-path: Mango
Node-action: add
Node-kind: dir
Content-length: 0
但请注意以下几点:
警告
如果您确实计划手动编辑转储文件以删除***目录,请确保您的编辑器未设置为自动将行尾字符转换为本机格式(例如,
\r\n
到 @987654329 @),因为内容将不同意元数据。这将使转储文件无用。
现在您可以加载转储文件了。
【讨论】:
以上是关于如何svn转储特定文件夹并将其加载到特定位置的主要内容,如果未能解决你的问题,请参考以下文章