gpt4 book ai didi

svn - 将文件夹从一个 SVN 存储库移动到另一个

转载 作者:行者123 更新时间:2023-12-02 00:39:38 25 4
gpt4 key购买 nike

我有一组存储库,其结构类似于以下内容:

/Source
/branches
/tags
/trunk
/FolderP
/FolderQ
/FolderR

/Target
/branches
/tags
/trunk
/External
/Library1
/Library2
/Library3
/Internal
/FolderA
/FolderB
/FolderC
/FolderX
/FolderY
/FolderZ

我想将文件夹/Source/trunk/FolderP、/Source/trunk/FolderQ 和/Source/trunk/FolderR 移动到/Target/trunk/Internal 这样:
  • /Source/trunk/FolderP 变成/Target/trunk/Internal/FolderP
  • /Source/trunk/FolderQ 变成/Target/trunk/Internal/FolderQ
  • /Source/trunk/FolderR 变成/Target/trunk/Internal/FolderR

  • 然后我应该有以下存储库结构:
    /Target
    /branches
    /tags
    /trunk
    /External
    /Library1
    /Library2
    /Library3
    /Internal
    /FolderA
    /FolderB
    /FolderC
    /FolderP
    /FolderQ
    /FolderR
    /FolderX
    /FolderY
    /FolderZ

    在迁移过程中保持历史是必不可少的。

    我查看了之前提出的以下两个似乎相似的问题:
  • SVN move single directory into other repository (with history)
  • How do I move a single folder from one Subversion repository to another repository?

  • 我对建议的解决方案不太走运。具体来说,当我运行 svndumpfilter 命令时出现错误,其中指出:
    svndumpfilter: Invalid copy source path `/branches/name-of-a-branch/.../File.cs`

    这是怎么回事,我该如何解决这个问题?

    编辑:

    我目前正在尝试的一种解决方法是:
  • 将/Source 存储库克隆到另一个名为/Temp
  • 的存储库中
  • 从/Temp 中删除我不需要的文件和文件夹并 checkin 所有更改
  • 通过调用“svnadmin dump X:\Repositories\Temp > X:\Dumps\Temp.dmp”来转储/Temp 存储库
  • 通过调用“svnadmin load --parent-dir trunk\Internal\Temp X:\Repositories\Target < X:\Dumps\Temp.dmp”将 Temp.dmp 加载到/Target 存储库
  • checkout /更新/目标存储库
  • 使用 TortoiseSVN 将文件夹从/Target/trunk/Internal/Temp/trunk/** 上移到/Target/trunk/Internal(通过在 Windows 资源管理器中突出显示我想要的文件夹,按 Control+X,然后将文件夹更改为/Target/trunk/Internal 并使用 TortoiseSVN 发布粘贴

  • 注意:以上假设 svn 维护 X:\Repositories 文件夹中的所有存储库,并且使用 X:\Dumps 文件夹作为工作文件夹。

    这显然会破坏修订号,但会保留历史记录。希望您的提交注释不包括对修订号的引用。

    其他人提到了一个 svndumpfilter3 Python 脚本,但我从来没有使用过 Python,也不想学习使用 Python,仅此而已。

    最佳答案

    除非你也想改变FolderP的历史记录, FolderQ , 和 FolderR ,你为什么不干脆svn move他们到 Internal ?

    请注意 svnadmin load接受一个选项 --parent-dir arg ,其中 arg是您希望导入的转储出现在其中的父文件夹。所以
    svnadmin load --parent-dir /trunk/Internal dump_of_source_repo target_repo
    应该导入 /trunk/Internal 下的所有源代码库在目标 repo 中。

    关于svn - 将文件夹从一个 SVN 存储库移动到另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3114869/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com