`diff`

Show differences between a local package and upstream.

diff displays differences between upstream and local packages.

It can display differences between:

  • The local package and the upstream version which the local package was based on.
  • The local package and the latest version of the upstream package.

diff fetches the versions of a package that are needed, but it delegates displaying the differences to a command line diffing tool. By default, the ‘diff’ command line tool is used, but this can be changed with either the diff-tool flag or the KPT_EXTERNAL_DIFF env variable.

Synopsis #

$$kpt pkg diff [PKG_PATH@VERSION] [flags]$$

Args #

$$PKG_PATH: Local package path to compare. diff will fail if the directory doesn't exist, or does not contain a Kptfile. Defaults to the current working directory. VERSION: A git tag, branch, or commit. Specified after the local_package with @, for example my-package@master. Defaults to the local package version that was last fetched.$$

Flags #

$$--diff-type: The type of changes to view (local by default). Following types are supported: local: Shows changes in local package relative to upstream source package at original version. remote: Shows changes in upstream source package at target version relative to original version. combined: Shows changes in local package relative to upstream source package at target version. 3way: Shows changes in local package and source package at target version relative to original version side by side. --diff-tool: Command line diffing tool ('diff' by default) for showing the changes. Note that it overrides the KPT_EXTERNAL_DIFF environment variable. # Show changes using 'meld' commandline tool. kpt pkg diff @master --diff-tool meld --diff-tool-opts: Commandline options to use with the command line diffing tool. Note that it overrides the KPT_EXTERNAL_DIFF_OPTS environment variable. # Show changes using the diff command with recursive options. kpt pkg diff @master --diff-tool meld --diff-tool-opts "-r"$$

Environment Variables #

$$KPT_EXTERNAL_DIFF: Commandline diffing tool ('diff; by default) that will be used to show changes. # Use meld to show changes KPT_EXTERNAL_DIFF=meld kpt pkg diff KPT_EXTERNAL_DIFF_OPTS: Commandline options to use for the diffing tool. For ex. # Using "-a" diff option KPT_EXTERNAL_DIFF_OPTS="-a" kpt pkg diff --diff-tool meld KPT_CACHE_DIR: Controls where to cache remote packages when fetching them. Defaults to /.kpt/repos/ On macOS and Linux is determined by the $HOME env variable, while on Windows it is given by the %USERPROFILE% env variable.$$

Examples #

{{ /* % hide % */ }}

$$# Set up workspace for the test. TEST_HOME=$(mktemp -d) cd $TEST_HOME$$
export SRC_REPO=https://github.com/kptdev/kpt.git
kpt pkg get $SRC_REPO/package-examples/helloworld-set hello-world
cd hello-world

{{ /* % /hide % */ }}

# Show changes in current package relative to upstream source package.
$ kpt pkg diff
Last modified June 16, 2025: Move docs to hugo (#4215) (2f0d4026)