当使用 svn cp 或 svn mv 时,如何使 svn diff 生成补丁将应用的文件?

2024-02-25

场景是:

  1. svn cp 或 mv 某些文件
  2. 修改该文件
  3. svn diff > 我的补丁

在其他机器上(相同的工作副本,但没有更改):

  1. 尝试应用我的补丁。
  2. 失败 -> 尝试修改不存在的文件。

在这种情况下,如何使 svn diff 生成适用于补丁的补丁,或者干净地应用 svn diff 生成的补丁?我无法承诺。我想保留合并信息(因为明显的解决方法是将文件添加为全新的文件,而不连接到前一个文件)。


使用 subversion,您可以指定要使用的 diff 二进制文件以及要传递给它的参数。看手册 http://svnbook.red-bean.com/en/1.1/re09.html关于 svn 差异。

您希望从 svn diff 生成常规补丁文件,因此您希望 svn diff 看起来像普通 diff。尝试这个:

svn diff --diff-cmd /usr/bin/diff -x "-i -b" > mypatch
...
patch -p0 < mypatch

概念证明:

echo "newline" >> README.txt
svn diff --diff-cmd /usr/bin/diff -x "-i -b" > mypatch
cp README.txt README.txt.patched
svn revert README.txt
patch -p0 < mypatch
diff README.txt README.txt.patched

打补丁后两个文件没有区别。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当使用 svn cp 或 svn mv 时,如何使 svn diff 生成补丁将应用的文件? 的相关文章

  • `git svn rebase` 与 `git rebase trunk`

    我正在开发一个使用 subversion 作为存储库的项目 因为我需要进行一些还无法发送到 svn 服务器的更改 所以我开始使用git svn这样我就可以进行本地签到 我的设置如下所示 分支机构 trunk 跟踪 svn trunk mas
  • git svn clone 在 Mac OS X 上失败:“名称为‘svn_delta’的临时文件已在使用中”

    我已经从 MacPorts 在我的 Mac 上安装了 git core svn 这给了我 git core 1 7 12 2 0 credential osxkeychain doc pcre python27 svn subversion
  • 如何将 Git 补丁应用到具有不同名称和路径的文件?

    我有两个存储库 其中 我对文件进行了更改 hello test 我提交更改并从该提交创建补丁git format patch 1 HEAD 现在 我有第二个存储库 其中包含一个与 hello test 内容相同的文件 但以不同的名称放置在不
  • 如何在 svn 存储库中搜索任何修订版中是否存在文件

    如何搜索名为foo txt曾经提交到我的 svn 存储库 在任何修订版中 右键单击签出文件夹的根目录 gt TortoiseSVN gt 显示日志 您也可以在那里输入文件名
  • 如何正确区分树(即嵌套的字符串列表)?

    我正在使用由嵌套字符串列表组成的数据类型的在线编辑器 请注意 如果每次更改单个值时我都要传输整个结构 那么流量可能会变得难以忍受 所以 为了减少流量 我想到了应用 diff 工具 问题是 如何找到并报告两棵树的差异 例如 ah bh ha
  • 基于一个键将数据从 df 复制到多列中的另一个 df

    我有两个数据框 df1 和 df2 每个数据帧的唯一标识符是 ID 和 Prop Number 我需要将 df1 中的 Num1 2 和 3 列复制到 df2 1 Num 中的相应列 但我不确定如何对多个列进行合并 我想将 df2 保留为
  • 条件合并表

    我有 2 张桌子 Time X1 8 1 2013 56 9 1 2013 14 10 1 2013 8 11 1 2013 4 12 1 2013 78 Time X2 8 1 2013 42 9 1 2013 44 10 1 2013
  • 如何使用 git format-patch 将提交压缩到一个补丁中?

    我在一个分支上有 8 个提交 我想通过电子邮件发送给一些尚未了解 git 的人 到目前为止 我所做的一切要么给我 8 个补丁文件 要么开始为分支历史记录中的每个提交提供补丁文件 从一开始 我使用 git rebase interactive
  • 来自外部 .diff 文件的交互式补丁

    Linux 是否有命令或程序允许交互式地修补源代码 在屏幕上打印每个块并在将其应用到文件之前等待确认 就像是git add p 但是从另一个 diff 文件中进行更改 您始终可以在 shell ruby python 中编写脚本 逐行读取该
  • 合并分割的 PDF 后尺寸增加

    我在我的应用程序中使用 PDF 进行渲染 以获取页面级别的各种其他信息 为不同的 O P 格式创建 swf xml 等 页面级别拆分已完成并处理 环境是Linux Fedora 8 最终的 PDF 是使用分割 PDF 重新创建的 但对于一些
  • 使用 git 客户端和 SVN 存储库的最佳工具/方法

    我已经使用 SVN 大约两年了 主要是通过 TortoiseSVN 和 IntelliJ 并尝试了 git 主要是通过 TortoiseGIT 在这里检测到模式 我们公司正在使用 SVN 作为存储库 他们不会考虑很快进行切换 在本地使用 g
  • 如何将svn文件夹上一级

    我需要将 svn 文件夹移至上一级并保留所有历史记录 所有文件和目录来自https myserver com svn Project trunk into https myserver svn Project 我使用一个命令 svn mov
  • 在 Subversion 中合并分支时预防冲突

    我最近在 Subversion 中观察到一个非常奇怪的合并冲突 我使用乌龟SVN作为客户端 干线和分行详细信息请参见以下信息 树干 两个用户正在研究这个问题 QA 是主干合并将发生的分支 为了简单起见 trunk ClassLibrary1
  • 如何使用Lodash根据一个键合并两个集合?

    我有两个集合 这些对象有一个公共键 userId 如下 var require lodash var a userId p1 item 1 userId p2 item 2 userId p3 item 4 var b userId p1
  • 如何在 Eclipse 中使用 ssh 隧道设置 Subversion?

    我有一个远程服务器 在非标准 ssh 端口上托管我的 subversion 存储库 我想使用 Eclipse 的 subclipse 插件作为客户端来访问 SVN 存储库 我可以使用 svn specialssh 来访问存储库 其中spec
  • 用于阻止大于 20MB 的提交的预提交挂钩

    是否可以为 SVN 1 8 编写 prcommit 挂钩以避免提交大于 20MB 的文件 任何建议 将不胜感激 谢谢 我尝试过 但这不适用于二进制文件或其他文件扩展名 filesize SVNLOOK cat t TXN REPOS f w
  • 基于多列值的重复键的两个大型 Pandas DataFrame 的条件合并/连接 - Python

    我来自 R 老实说 这是使用 R data tables 在一行中完成的最简单的事情 并且对于大型数据表来说 该操作也相当快 但是我真的很难用Python实现它 前面提到的用例都不适合我的应用程序 当前的主要问题是 Python 解决方案中
  • 以最小的努力在多台计算机之间同步代码

    我希望能够跨多台计算机 准确地说是 3 台 同步源代码和整个项目 我尝试过使用 git 但从来没有获得过无忧无虑的体验 也许是因为我从来没有投入很多精力 所以 我理想中想要的是 能够将文件夹及其所有子文件夹添加到 同步 列表 基本上 一旦我
  • Git 合并如何处理同时提交?

    给定一个具有两个分支的存储库 每个分支都有独立的提交 Branch Commits final e g i master a b c d f h 上图中的字母很重要 即 master 和 final 同时正在开发中 并且必须保留两个分支中的
  • 在重复键上仅更新 Null 或空值

    我有一个 mysql 查询来合并主键 IMO 上的两个表 查询工作正常 但我遇到的问题是在重复键更新时 我只想更新 wp second 表的那些没有值的字段 简而言之 在重复键上 wp second 值仅应在 null 或空时更新 这是我到

随机推荐