summaryrefslogtreecommitdiff
path: root/tests/patch
Commit message (Collapse)AuthorAgeFilesLines
* diff: implement function to calculate patch IDPatrick Steinhardt2017-06-261-1/+60
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | The upstream git project provides the ability to calculate a so-called patch ID. Quoting from git-patch-id(1): A "patch ID" is nothing but a sum of SHA-1 of the file diffs associated with a patch, with whitespace and line numbers ignored." Patch IDs can be used to identify two patches which are probably the same thing, e.g. when a patch has been cherry-picked to another branch. This commit implements a new function `git_diff_patchid`, which gets a patch and derives an OID from the diff. Note the different terminology here: a patch in libgit2 are the differences in a single file and a diff can contain multiple patches for different files. The implementation matches the upstream implementation and should derive the same OID for the same diff. In fact, some code has been directly derived from the upstream implementation. The upstream implementation has two different modes to calculate patch IDs, which is the stable and unstable mode. The old way of calculating the patch IDs was unstable in a sense that a different ordering the diffs was leading to different results. This oversight was fixed in git 1.9, but as git tries hard to never break existing workflows, the old and unstable way is still default. The newer and stable way does not care for ordering of the diff hunks, and in fact it is the mode that should probably be used today. So right now, we only implement the stable way of generating the patch ID.
* diff: treat binary patches with no data specialethomson/diff-read-empty-binaryEdward Thomson2016-09-052-0/+11
| | | | | | When creating and printing diffs, deal with binary deltas that have binary data specially, versus diffs that have a binary file but lack the actual binary data.
* patch: differentiate not found and invalid patchesEdward Thomson2016-05-261-6/+75
|
* git_patch_parse_ctx: refcount the contextEdward Thomson2016-05-262-0/+2
|
* patch: `git_patch_from_patchfile` -> `git_patch_from_buffer`Edward Thomson2016-05-262-2/+4
|
* apply: test postimages that grow/shrink originalEdward Thomson2016-05-261-0/+89
| | | | | | | Test with some postimages that actually grow/shrink from the original, adding new lines or removing them. (Also do so without context to ensure that we can add/remove from a non-zero part of the line vector.)
* Introduce git_patch_options, handle prefixesEdward Thomson2016-05-262-4/+6
| | | | | Handle prefixes (in terms of number of path components) for patch parsing.
* patch_parse: test roundtrip patch parsing -> printEdward Thomson2016-05-261-0/+166
|
* patch_parse: ensure we can parse a patchEdward Thomson2016-05-261-0/+31
|
* apply: move patch data to patch_common.hEdward Thomson2016-05-261-0/+574