⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 patch.1

📁 操作系统设计与实现源码
💻 1
📖 第 1 页 / 共 2 页
字号:
          strip  count  specifies how many slashes are to be stripped from the
          front of the pathname.  (Any intervening  directory  names  also  go
          away.)  For example, supposing the filename in the patch file was

                  /u/howard/src/blurfl/blurfl.c

          setting -p or -p0 gives the entire pathname unmodified, -p1 gives

                  u/howard/src/blurfl/blurfl.c

          without the leading slash, -p4 gives

                  blurfl/blurfl.c

          and not specifying -p at all just gives you "blurfl.c",  unless  all
          of  the  directories in the leading path (u/howard/src/blurfl) exist
          and that path is relative, in which case you get the entire pathname
          unmodified.   Whatever  you  end up with is looked for either in the
          current directory, or the directory specified by the -d switch.

     -r   causes the next argument to be interpreted as the reject file name.

     -R   tells patch that this patch was created with the old and  new  files
          swapped.   (Yes,  I'm  afraid  that  does happen occasionally, human
          nature being what it is.)  Patch will  attempt  to  swap  each  hunk


                                    LOCAL                                    4



PATCH(1)                  Minix Programmer's Manual                   PATCH(1)


          around before applying it.  Rejects will come  out  in  the  swapped
          format.   The  -R  switch will not work with ed diff scripts because
          there  is  too  little  information  to  reconstruct   the   reverse
          operation.

          If the first hunk of a patch fails, patch will reverse the  hunk  to
          see  if it can be applied that way.  If it can, you will be asked if
          you want to have the -R switch set.  If it  can't,  the  patch  will
          continue to be applied normally.  (Note: this method cannot detect a
          reversed patch if it is a normal diff and if the first command is an
          append  (i.e.  it  should  have  been a delete) since appends always
          succeed, due to the fact that a null context  will  match  anywhere.
          Luckily,  most  patches add or change lines rather than delete them,
          so most reversed normal diffs will begin with a delete,  which  will
          fail, triggering the heuristic.)

     -s   makes patch do its work silently, unless an error occurs.

     -S   causes patch to ignore this patch from the patch file, but  continue
          on looking for the next patch in the file.  Thus

                  patch -S + -S + <patchfile

          will ignore the first and second of three patches.

     -u   forces patch to interpret the patch file as a unified  context  diff
          (a unidiff).

     -v   causes patch to print out its revision header and patch level.

     -V   causes the next argument to be interpreted as a method for  creating
          backup  file  names.   The type of backups made can also be given in
          the VERSION_CONTROL environment variable,  which  is  overridden  by
          this  option.   The  -B  option  overrides  this option, causing the
          prefix to always be used for making backup file names.  The value of
          the  VERSION_CONTROL environment variable and the argument to the -V
          option are like the GNU Emacs `version-control' variable; they  also
          recognize  synonyms that are more descriptive.  The valid values are
          (unique abbreviations are accepted):

     `t' or `numbered'
          Always make numbered backups.

     `nil' or `existing'
          Make numbered backups  of  files  that  already  have  them,  simple
          backups of the others.  This is the default.

     `never' or `simple'
          Always make simple backups.



                                    LOCAL                                    5



PATCH(1)                  Minix Programmer's Manual                   PATCH(1)


     -x<number>
          sets internal debugging flags, and is  of  interest  only  to  patch
          patchers.

AUTHOR
     Larry Wall <lwall@netlabs.com>
     with many other contributors.

ENVIRONMENT

     TMPDIR
          Directory to put temporary files in; default is /tmp.

     SIMPLE_BACKUP_SUFFIX
          Extension to use for backup  file  names  instead  of  ``.orig''  or
          ``~''.

     VERSION_CONTROL
          Selects when numbered backup files are made.

FILES
     $TMPDIR/patch*

SEE ALSO
     diff(1)

NOTES FOR PATCH SENDERS
     There are several things you should bear in mind if you are going  to  be
     sending  out  patches.   First,  you  can  save  people a lot of grief by
     keeping a patchlevel.h file which is patched to increment the patch level
     as  the  first diff in the patch file you send out.  If you put a Prereq:
     line in with the patch, it won't let them  apply  patches  out  of  order
     without  some  warning.  Second, make sure you've specified the filenames
     right, either in a context diff header, or with an Index: line.   If  you
     are  patching something in a subdirectory, be sure to tell the patch user
     to specify a -p switch as needed.   Third,  you  can  create  a  file  by
     sending  out  a  diff  that  compares a null file to the file you want to
     create.  This will only work if the file you want to create doesn't exist
     already  in  the  target  directory.   Fourth,  take care not to send out
     reversed patches, since it  makes  people  wonder  whether  they  already
     applied the patch.  Fifth, while you may be able to get away with putting
     582 diff listings into one file, it is probably wiser  to  group  related
     patches into separate files in case something goes haywire.

DIAGNOSTICS
     Too many to list here, but generally indicative that patch couldn't parse
     your patch file.





                                    LOCAL                                    6



PATCH(1)                  Minix Programmer's Manual                   PATCH(1)


     The message ``Hmm...'' indicates that there is unprocessed  text  in  the
     patch  file  and  that  patch  is attempting to intuit whether there is a
     patch in that text and, if so, what kind of patch it is.

     Patch will exit with a non-zero status if any reject files were  created.
     When  applying  a  set of patches in a loop it behooves you to check this
     exit status so you don't apply a later patch to a partially patched file.

CAVEATS
     Patch cannot tell if the line numbers are off in an ed  script,  and  can
     only  detect bad line numbers in a normal diff when it finds a ``change''
     or a ``delete'' command.  A context diff using fuzz factor 3 may have the
     same  problem.   Until  a  suitable  interactive  interface is added, you
     should probably do a context diff in these cases to see  if  the  changes
     made  sense.   Of  course,  compiling  without  errors  is  a pretty good
     indication that the patch worked, but not always.

     Patch usually produces the correct results, even when it has to do a  lot
     of guessing.  However, the results are guaranteed to be correct only when
     the patch is applied to exactly the same version of  the  file  that  the
     patch was generated from.

BUGS
     Could be smarter about partial matches, excessively deviant  offsets  and
     swapped code, but that would take an extra pass.

     If code has been duplicated (for instance with #ifdef OLDCODE  ...  #else
     ...   #endif),  patch  is incapable of patching both versions, and, if it
     works at all, will likely patch the wrong  one,  and  tell  you  that  it
     succeeded to boot.

     If you apply a patch you've already applied, patch will  think  it  is  a
     reversed patch, and offer to un-apply the patch.  This could be construed
     as a feature.


















                                    LOCAL                                    7

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -