dulwich.patch module¶
Classes for dealing with git am-style patches.
These patches are basically unified diffs with some extra metadata tacked on.
- dulwich.patch.gen_diff_header(paths, modes, shas)¶
Write a blob diff header.
- Parameters
paths – Tuple with old and new path
modes – Tuple with old and new modes
shas – Tuple with old and new shas
- dulwich.patch.get_summary(commit)¶
Determine the summary line for use in a filename.
- Parameters
commit – Commit
Returns: Summary string
- dulwich.patch.git_am_patch_split(f, encoding=None)¶
Parse a git-am-style patch and split it up into bits.
- Parameters
f – File-like object to parse
encoding – Encoding to use when creating Git objects
Returns: Tuple with commit object, diff contents and git version
- dulwich.patch.is_binary(content)¶
See if the first few bytes contain any null characters.
- Parameters
content – Bytestring to check for binary content
- dulwich.patch.parse_patch_message(msg, encoding=None)¶
Extract a Commit object and patch from an e-mail message.
- Parameters
msg – An email message (email.message.Message)
encoding – Encoding to use to encode Git commits
Returns: Tuple with commit object, diff contents and git version
- dulwich.patch.patch_filename(p, root)¶
- dulwich.patch.shortid(hexsha)¶
- dulwich.patch.unified_diff(a, b, fromfile='', tofile='', fromfiledate='', tofiledate='', n=3, lineterm='\n', tree_encoding='utf-8', output_encoding='utf-8')¶
difflib.unified_diff that can detect “No newline at end of file” as original “git diff” does.
Based on the same function in Python2.7 difflib.py
- dulwich.patch.write_blob_diff(f, old_file, new_file)¶
Write blob diff.
- Parameters
f – File-like object to write to
old_file – (path, mode, hexsha) tuple (None if nonexisting)
new_file – (path, mode, hexsha) tuple (None if nonexisting)
Note: The use of write_object_diff is recommended over this function.
- dulwich.patch.write_commit_patch(f, commit, contents, progress, version=None, encoding=None)¶
Write a individual file patch.
- Parameters
commit – Commit object
progress – Tuple with current patch number and total.
- Returns
tuple with filename and contents
- dulwich.patch.write_object_diff(f, store, old_file, new_file, diff_binary=False)¶
Write the diff for an object.
- Parameters
f – File-like object to write to
store – Store to retrieve objects from, if necessary
old_file – (path, mode, hexsha) tuple
new_file – (path, mode, hexsha) tuple
diff_binary – Whether to diff files even if they are considered binary files by is_binary().
Note: the tuple elements should be None for nonexistent files
- dulwich.patch.write_tree_diff(f, store, old_tree, new_tree, diff_binary=False)¶
Write tree diff.
- Parameters
f – File-like object to write to.
old_tree – Old tree id
new_tree – New tree id
diff_binary – Whether to diff files even if they are considered binary files by is_binary().