Diff
A diff shows the changes between trees, an index or the working dir.
Repository.
diff
(a=None, b=None, cached=False, flags=0, context_lines=3, interhunk_lines=0)- Show changes between the working tree and the index or a tree,changes between the index and a tree, changes between two trees, orchanges between two blobs.
Keyword arguments:
- a
- None, a str (that refers to an Object, see revparse_single()) or aReference object.If None, b must be None, too. In this case the working directory iscompared with the index. Otherwise the referred object is compared to‘b’.
- b
- None, a str (that refers to an Object, see revparse_single()) or aReference object.If None, the working directory is compared to ‘a’. (except‘cached’ is True, in which case the index is compared to ‘a’).Otherwise the referred object is compared to ‘a’
- cached
- if ‘b’ is None, by default the working directory is compared to ‘a’.If ‘cached’ is set to True, the index/staging area is used for comparing.
- flag
- a GITDIFF* constant
- context_lines
- the number of unchanged lines that define the boundaryof a hunk (and to display before and after)
- interhunk_lines
- the maximum number of unchanged lines between hunkboundaries before the hunks will be merged into a one
Examples:
- # Changes in the working tree not yet staged for the next commit
- >>> diff()
- # Changes between the index and your last commit
- >>> diff(cached=True)
- # Changes in the working tree since your last commit
- >>> diff('HEAD')
- # Changes between commits
- >>> t0 = revparse_single('HEAD')
- >>> t1 = revparse_single('HEAD^')
- >>> diff(t0, t1)
- >>> diff('HEAD', 'HEAD^') # equivalent
If you want to diff a tree against an empty tree, use the low levelAPI (Tree.diff_to_tree()) directly.
Examples
- # Changes between commits
- >>> t0 = revparse_single('HEAD')
- >>> t1 = revparse_single('HEAD^')
- >>> repo.diff(t0, t1)
- >>> t0.diff(t1) # equivalent
- >>> repo.diff('HEAD', 'HEAD^') # equivalent
- # Get all patches for a diff
- >>> diff = repo.diff('HEAD^', 'HEAD~3')
- >>> patches = [p for p in diff]
- # Get the stats for a diff
- >>> diff = repo.diff('HEAD^', 'HEAD~3')
- >>> diff.stats
- # Diffing the empty tree
- >>> tree = revparse_single('HEAD').tree
- >>> tree.diff_to_tree()
- # Diff empty tree to a tree
- >>> tree = revparse_single('HEAD').tree
- >>> tree.diff_to_tree(swap=True)
The Diff type
- class
pygit2.
Diff
Diff objects.
iter
()Returns an iterator over the deltas/patches in this diff.
Returns the number of deltas/patches in this diff.
Iterate over the diff deltas.
findsimilar
([_flags, rename_threshold, copy_threshold, rename_from_rewrite_threshold, break_rewrite_threshold, rename_limit])Find renamed files in diff and updates them in-place in the diff itself.
Merge one diff into another.
Parses a git unified diff into a diff object without a repository
Patch diff string. Can be None in some cases, such as empty commits.
- Accumulate diff statistics for all patches.
The Patch type
Attributes:
- class
pygit2.
Patch
Diff patch object.
- static
create_from
() Create a patch from blobs, buffers, or a blob and a buffer
The raw bytes of the patch’s contents.
Get the delta associated with a patch.
line_stats
Get line counts of each type in a patch.
- Patch diff string. Can be None in some cases, such as empty commits.Note that this decodes the content to Unicode assuming UTF-8 encoding. For non-UTF-8 content that can lead be a lossy, non-reversible process. To access the raw, un-decoded patch, use patch.data.
- static
The DiffDelta type
- class
pygit2.
DiffDelta
DiffDelta object.
The DiffFile type
The DiffHunk type
The DiffStats type
Returns: str.
Parameters:
- format
- The format to use. A pygit2.GIT_DIFF_STATS_* constant.
- width
- The width of the output. The output will be scaled to fit.
The DiffLine type
- class
pygit2.
DiffLine
DiffLine object.