如何为整个目录创build一个补丁来更新它?

我知道已经有几个线程了,但是没有人完全解释了如何执行初始diff来创build补丁文件,然后如何这个补丁应用到初始目录来更新它。

在我的情况下,有一个任何人都可以从网上下载的文件目录。 我已经拿到了那个目录并且做了修改,并且想要创build一个补丁文件,这样其他人就可以将它应用到下载的目录中,以便正确地再现我在修改过的目录中的内容。

帮帮我? 我需要告诉对方如何申请我的补丁?

我只是有同样的问题 – 关于如何做一半的build议很多。 那么,这就是我做的补丁和修补工作:

创build补丁文件:

  1. 把这两个目录的副本放在say / tmp中,这样我们就可以创build补丁文件,或者如果勇敢的话,把它们并排放在一个目录中。

  2. 在旧的和新的两个目录上运行适当的差异:

    diff -ruN orig/ new/ > file.patch # -r == recursive, so do subdirectories # -u == unified style, if your system lacks it or if recipient # may not have it, use "-c" # -N == treat absent files as empty 

如果一个人有orig /目录,他们可以通过运行补丁重新创build一个。

从旧文件夹和修补程序文件重新创build新文件夹:

  1. 将补丁文件移动到orig /文件夹所在的目录

  2. 这个文件夹会被破坏,所以请在某个地方备份它,或者使用一个副本。

     patch -s -p0 < file.patch # -s == silent except errors # -p0 == needed to find the proper folder 
  3. 此时,orig /文件夹包含新的/内容,但仍然有它的旧名称,所以:

     mv orig/ new/ # if the folder names are different 

查看开源的Scarab C ++库: https : //github.com/loyso/Scarab

它完全是你所描述的。 它使用xdelta库构build每文件差异并将其存档到归档包中。 您可以重新分发该软件包并应用它们之间的差异。 有Win32的二进制文件。

我是圣甲虫项目的作者。