How to create a patch for a whole directory to update it?

前端 未结 3 1994
北海茫月
北海茫月 2020-12-12 09:46

I know there are several threads on this already, but no one has fully explained exactly how to perform the initial diff to create the patch file, then how to apply

3条回答
  •  温柔的废话
    2020-12-12 09:58

    I just had this same problem - lots of advice on how to half do it. Well, here is what I did to get both the patching and unpatching to work:

    To Create the Patch File:

    1. Put copies of both directories in say /tmp, so we can create the patch file, or if brave, get them side by side - in one directory.

    2. Run an appropriate diff on the two directories, old and new:

      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
      

    If a person has the orig/ directory, they can recreate the new one by running patch.

    To Recreate the new folder from old folder and patch file:

    1. Move the patch file to a directory where the orig/ folder exists

    2. This folder will get clobbered, so keep a backup of it somewhere, or use a copy.

      patch -s -p0 < file.patch
      # -s == silent except errors
      # -p0 == needed to find the proper folder
      
    3. At this point, the orig/ folder contains the new/ content, but still has its old name, so:

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

提交回复
热议问题