Documentation

Unity Version Control

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-binaries
.)
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 / Argument

Description

--outputSets the output file of the patch command.
--include-binaries
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
Binary files a/<path> and b/<path> differ
.
--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.
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
--apply
requires GNU Patch, publicly available at http://gnuwin32.sourceforge.net/packages/patch.htm.
After 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.)