[//000000001]: # (textutil::patch \- Text and string utilities) [//000000002]: # (Generated from file 'patch\.man' by tcllib/doctools with format 'markdown') [//000000003]: # (textutil::patch\(n\) 0\.1 tcllib "Text and string utilities")
[ Main Table Of Contents | Table Of Contents | Keyword Index | Categories | Modules | Applications ]
# NAME textutil::patch \- Application of uni\-diff patches to directory trees # Table Of Contents - [Table Of Contents](#toc) - [Synopsis](#synopsis) - [Description](#section1) - [Bugs, Ideas, Feedback](#section2) - [Keywords](#keywords) - [Category](#category) # SYNOPSIS package require Tcl 8\.2 package require textutil::patch ?0\.1? [__::textutil::patch::apply__ *basedirectory* *striplevel* *patch* *reportcmd*](#1) [__\{\*\}reportcmd__ __apply__ *filename*](#2) [__\{\*\}reportcmd__ __fail__ *filename* *hunk* *expected* *seen*](#3) [__\{\*\}reportcmd__ __fail\-already__ *filename* *hunk*](#4) # DESCRIPTION This package provides a single command which applies a patch in [unified format](https://www\.gnu\.org/software/diffutils/manual/html\_node/Detailed\-Unified\.html) to a directory tree\. - __::textutil::patch::apply__ *basedirectory* *striplevel* *patch* *reportcmd* Applies the *patch* \(text of the path, not file\) to the files in the *basedirectory* using the specified *striplevel*\. The result of the command is the empty string\. The *striplevel* argument is equivalent to option __\-p__ of the __[patch](\.\./\.\./\.\./\.\./index\.md\#patch)__ command\. Errors are thrown when the *patch* does not parse, and nothing is done to the files in *basedirectory*\. All activities during the application of the patch, including the inability to apply a hunk are reported through the command prefix *reportcmd* instead\. Files with problems are left unchanged\. Note however that this does *not prevent* changes to files with no problems, before and after the problematic file\(s\)\. The command prefix is called in 3 possible forms: * __\{\*\}reportcmd__ __apply__ *filename* The caller begins operation on file *fname*, applying all hunks collected for said file\. * __\{\*\}reportcmd__ __fail__ *filename* *hunk* *expected* *seen* Application of hunk number *hunk* of file *filename* has failed\. The command expected to find the text *expected*, and saw *seen* instead\. * __\{\*\}reportcmd__ __fail\-already__ *filename* *hunk* Application of hunk number *hunk* of file *filename* has failed\. The command believes that this hunk has already been applied to the file\. # Bugs, Ideas, Feedback This document, and the package it describes, will undoubtedly contain bugs and other problems\. Please report such in the category *textutil* of the [Tcllib Trackers](http://core\.tcl\.tk/tcllib/reportlist)\. Please also report any ideas for enhancements you may have for either package and/or documentation\. When proposing code changes, please provide *unified diffs*, i\.e the output of __diff \-u__\. Note further that *attachments* are strongly preferred over inlined patches\. Attachments can be made by going to the __Edit__ form of the ticket immediately after its creation, and then using the left\-most button in the secondary navigation bar\. # KEYWORDS [diff \-ruN](\.\./\.\./\.\./\.\./index\.md\#diff\_run), [diff, unified format](\.\./\.\./\.\./\.\./index\.md\#diff\_unified\_format), [fossil](\.\./\.\./\.\./\.\./index\.md\#fossil), [git](\.\./\.\./\.\./\.\./index\.md\#git), [patch](\.\./\.\./\.\./\.\./index\.md\#patch), [unified format diff](\.\./\.\./\.\./\.\./index\.md\#unified\_format\_diff) # CATEGORY Text processing