PATCH

Description

Generates a patch file from a spec or applies a generated patch to the current workspace.

Usage

cm patch <source_spec> [<source_spec>] [--output=<output_file>] [--tool=<path_to_diff>]

(Generates a patch file that contains the differences of a branch, a changeset, or the differences between changesets. It also tracks differences of text and binary files.)

cm patch --apply <patch_file> [--tool=<path_to_patch>]

(Allows to apply the contents of a generated patch file in the current workspace.)

Options

Option / ArgumentDescription
--outputSets the output file of the patch command.
--toolSets the application to use (diff or patch).
source_specFull spec of a changeset or a branch. (Use 'cm help objectspec' to learn more about specs.)
output_fileFile to save the patch content. It no file is specified, the patch content will be printed on standard output.
patch_filePatch file to apply in the current workspace.

Help

Limitations

If the output patch file already exists, the command will not overwrite it.

When applying a patch, the command will not apply changes to modified files if they are not present on disk.

Important

This command requires Diff and Patch tools, publicly available at http://gnuwin32.sourceforge.net/packages/patch.htm and

http://gnuwin32.sourceforge.net/packages/diffutils.htm

Once installed, it's recommended to add their location to the PATH environment variable.

Examples

cm patch cs:4@default@localhost:8084

(Prints on console the differences of cset 4 in unified format.)

cm patch br:/main --output=file.patch

(Generates a patch file with the differences of branch "main".)

cm patch br:/main --output=file.patch --tool=C:\gnu\diff.exe

(Same as above, using a custom exe.)

cm patch cs:2@default cs:4@default

(Prints on console the differences between csets 2 and 4 in unified format.)

cm patch --apply file.patch --tool=C:\gnu\patch.exe

(Applies the patch in 'file.patch' to the local workspace with a custom exe.)