| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |/ /
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When we create a blame origin, we try to look up the blob that is
to be blamed at a certain revision. When this lookup fails, e.g.
because the file did not exist at that certain revision, we fail
to create the blame origin and return `NULL`. The blame origin
that we have just allocated is thereby free'd with
`origin_decref`.
The `origin_decref` function does not only decrement reference
counts for the blame origin, though, but also for its commit and
blob. When this is done in the error case, we will cause an
uneven reference count for these objects. This may result in
hard-to-debug failures at seemingly unrelated code paths, where
we try to access these objects when they in fact have already
been free'd.
Fix the issue by refactoring `make_origin` such that we only
allocate the object after the only function that may fail so that
we do not have to call `origin_decref` at all. Also fix the
`pass_blame` function, which indirectly calls `make_origin`, to
free the commit when `make_origin` failed.
|
| |\ \
| |/
|/| |
Reading patch files
|
| | |
| |
| |
| |
| |
| |
| | |
When showing copy information because we are duplicating contents,
for example, when performing a `diff --find-copies-harder -M100 -B100`,
then show copy from/to lines in a patch, and do not show context.
Ensure that we can also parse such patches.
|
| | |
| |
| |
| |
| | |
Patches may have no hunks when there's no modifications (for example,
in a rename). Handle them.
|
| | | |
|
| | | |
|
| | |
| |
| |
| |
| | |
Like `git_patch_to_buf`, provide a simple helper method that can
print an entire diff directory to a `git_buf`.
|
| | |
| |
| |
| | |
Parse diff files into a `git_diff` structure.
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | |
| |
| |
| |
| |
| | |
Parse values up to and including `\377` (`0xff`) when unquoting.
Print octal values as an unsigned char when quoting, lest `printf`
think we're talking about negatives.
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | |
| |
| |
| |
| |
| |
| | |
`oid_strlen` has meant one more than the length of the string.
This is mighty confusing. Make it mean only the string length!
Whomsoever needs to allocate a buffer to hold a string can null
terminate it like normal.
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | |
| |
| |
| |
| | |
Handle prefixes (in terms of number of path components) for patch
parsing.
|
| | | |
|
| | | |
|
| | |
| |
| |
| |
| |
| | |
When a text file is added or deleted, use the file names from the
`diff --git` header instead of the `---` or `+++` lines. This is
for compatibility with git.
|
| | |
| |
| |
| |
| | |
We may have parsed binary data, set the `SHOW_BINARY` flag which
indicates that we have actually computed a binary diff.
|
| | | |
|
| | |
| |
| |
| |
| |
| | |
Now that `git_diff_delta` data can be produced by reading patch
file data, which may have an abbreviated oid, allow consumers to
know that the id is abbreviated.
|
| | | |
|
| | |
| |
| |
| |
| | |
No need to replicate the old_file/new_file members, or plumb them
strangely up.
|
| | |
| |
| |
| |
| |
| | |
Patches can now come from a variety of sources - either internally
generated (from diffing two commits) or as the results of parsing
some external data.
|
| | | |
|
| | |
| |
| |
| |
| |
| |
| |
| | |
When we are provided some input buffer (with a length) to inflate,
and it contains more data than simply the deflated data, fail.
zlib will helpfully tell us when it is done reading (via Z_STREAM_END),
so if there is data leftover in the input buffer, fail lest we
continually try to inflate it.
|
| | | |
|
| | |
| |
| |
| |
| |
| | |
Handle the application of binary patches. Include tests that
produce a binary patch (an in-memory `git_patch` object),
then enusre that the patch applies correctly.
|
| | |
| |
| |
| | |
Introduce `git_zstream_inflatebuf` for simple uses.
|
| | |
| |
| |
| |
| | |
Refactor the git_delta functions to have consistent naming and
parameters with the rest of the library.
|
| | |
| |
| |
| |
| |
| |
| | |
Move the delta application functions into `delta.c`, next to the
similar delta creation functions. Make the `git__delta_apply`
functions adhere to other naming and parameter style within the
library.
|
| | |
| |
| |
| | |
When a patch is empty, simply copy the source into the destination.
|
| | | |
|
| | |
| |
| |
| |
| | |
The beginnings of patch application from an existing (diff-created)
git_patch object: applies the hunks of a git_patch to a buffer.
|
| | | |
|
| | |
| |
| |
| |
| |
| | |
Avoid declaring old-style functions without any parameters.
Functions not accepting any parameters should be declared with
`void fn(void)`. See ISO C89 $3.5.4.3.
|