AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 41481
Accepted
bortzmeyer
bortzmeyer
Asked: 2009-07-17 00:36:52 +0800 CST2009-07-17 00:36:52 +0800 CST 2009-07-17 00:36:52 +0800 CST

保留 Subversion 存储库的一部分,但中间有路径更改

  • 772

我有一个 Subversion 存储库,其中一个目录被移动了一次。我只想将存储库的一部分发送给某人,其中包括此目录。

我相信我已经阅读并理解了手册。

我尝试了什么:

svnadmin dump /home/Subversion-Repository | \
   svndumpfilter 包括新名称/新名称/foo/bar/旧名称> something.svn

svnadmin 创建 /new/repos
# 创建目录 foo/bar 和 new-name
svnadmin 加载 /new/repos < something.svn

但它失败了:

<<< 开始新事务,基于原始修订版 5944
svnadmin:找不到文件:事务“5944-4l4”,路径“新名称/myfile”
     * 编辑路径:new-name/myfile ...

令我惊讶的是,在完整转储中(不通过 svndumpfilter),有一个修订版将文件添加到新位置:

节点路径:新名称
节点类型:dir
节点动作:添加
道具内容长度:10
内容长度:10

但 svndumpfilter 不保留它。因此,在新名称下提到文件的第一个修订版是“Node-action:change”而不是“Node-action:add”,它失败了。为什么?

有一个 Unix shell 脚本可以随意重现该问题。

[我在 Subversion 邮件列表上问了这个问题,但邮件没有分发,可能是被过度热心的垃圾邮件过滤器吃掉了。]

更新:我测试了 Insyte 的建议。svndumpfilter2 和 svndumpfilter3 都失败了。两者甚至都不检查参数,您可以给他们一个不存在的存储库,他们不会抱怨。

使用 svndumpfilter2,修改我的脚本以使用${SVNDUMPFILTER2} ${REPOS} other/new-name/bar foo/old-name/bar > ${DUMP}:

<<< 开始新交易,基于原始修订版 7
svnadmin:找不到文件:事务“8-8”,路径“其他/新名称/bar/myfile”
     * 编辑路径:other/new-name/bar/myfile ...

使用 svndumpfilter3,修改我的脚本以使用 ${SVNDUMPFILTER3} --untangle=${REPOS} other/new-name/bar foo/old-name/bar > ${DUMP}:

<<< 开始新交易,基于原始修订版 7
svnadmin:找不到文件:事务“8-8”,路径“/other/new-name/bar/myfile”
     * 编辑路径:other/new-name/bar/myfile ...
svn
  • 3 3 个回答
  • 9371 Views

3 个回答

  • Voted
  1. Insyte
    2009-07-18T01:44:42+08:002009-07-18T01:44:42+08:00

    我相信您遇到了svndumpfilter: Invalid copy source path问题的变体。当 svndumpfilter 最初包含的目录/文件之一是从未包含的树的一部分复制(或在您的情况下移动)时,会出现此问题。最初的解决方案是 Simon Tatham 的 svndumpfilter2,但他的 svn 服务器目前似乎已关闭。

    此处提供了略微修改的版本:http: //www.dehora.net/hg/tools/raw-file/tip/svn/svndumpfilter2

    这里的另一个变体:http: //furius.ca/pubcode/pub/conf/bin/svndumpfilter3.html

    另一个在这里: http ://www.undersea.com/~nmb/svndumpfilter4

    在这里解释svndumpfilter4(来自archive.org - 不幸的是原版不再可访问): http ://replay.waybackmachine.org/20080827213200/http://www.undersea.com/~nburrell/blog/node/81

    这些变体足够聪明,可以使用 svnlook 检索必要的源材料,即使它位于树的包含部分之外。

    • 4
  2. Best Answer
    bortzmeyer
    2009-07-21T23:27:37+08:002009-07-21T23:27:37+08:00

    好的,我现在有一个可以在真实存储库上测试的解决方案。这个想法是只转储修订直到(不包括)重命名,然后是它之后的修订(带有--incremental 选项)。然后,我重新加载第一个转储,在新存储库中重命名,然后重新加载第二个转储。它似乎工作正常。

    我制作了我的脚本的修改版本,其中显示了详细的步骤。

    如果我理解正确,最初的问题是重命名发生在树中比我想要保留的目录更高的级别,因此 svndumpfilter 没有保留。因此,重命名后对文件的操作失败,因为转储中的change节点是类型的,并且没有add新位置的类型节点。

    • 3
  3. Keplerian
    2012-06-14T09:13:37+08:002012-06-14T09:13:37+08:00

    你也可以试试dumpsanitizer。它可以处理文件/目录已移动的问题情况,而无需手动进行。我们使用这种方法将旧存储库的一部分设置为新存储库的基线。

    • 2

相关问题

  • 使用 crontab 和 /etc/cron.hourly,daily,weekly 的区别

  • 如何定期复制 SVN 存储库而不会丢失目标标签和分支?

  • 如何通过 SVN 命令行接受 SSL 证书?

  • 如何在 slicehost 上设置集市

  • 如何在 Mac OS X 中正确安装 Subversion?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve