PATCH
Generate and apply patch files with the Unity Version Control CLI.
Read time 2 minutesLast updated a day ago
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>] [--include-binaries] [--tool=<path_to_diff>]
(Generates a patch file in git diff format that contains the differences of a branch, a changeset, or the differences between changesets. The patch includes the changes to text files and lists the changed binary files. To include the content of changed binary files, use .)
--include-binariescm patch --apply <patch_file> [--tool=<path_to_patch>]
(Allows to apply the contents of a generated patch file in the current workspace.)
Options
Option / Argument | Description |
|---|---|
| --output | Sets the output file of the patch command. |
| Includes the content of changed binary files in the patch, so that applying the patch also restores them. By default, the patch only lists each changed binary file, as |
| --tool | Sets the application to use (diff or patch). |
| source_spec | Full spec of a changeset or a branch. (Use 'cm help objectspec' to learn more about specs.) |
| output_file | File to save the patch content. It no file is specified, the patch content will be printed on standard output. |
| patch_file | Patch 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.
Applying a patch that renames files requires GNU Patch 2.7 or later.
Important
Creating a patch doesn't require any external tools. Applying a patch with requires GNU Patch, publicly available at http://gnuwin32.sourceforge.net/packages/patch.htm.
--applyAfter you install GNU Patch, add its location to the PATH environment variable.
Examples
cm patch cs:4@default@localhost:8084
(Prints on console the differences of cset 4 in git diff format.)
cm patch br:/main --output=file.patch
(Generates a patch file with the differences of branch "main".)
cm patch cs:4@default --include-binaries --output=changes.patch
(Generates a patch file with the differences of cset 4, including the content of changed binary files.)
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 git diff 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.)