| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| | | |
| | | |
| | | |
| | | |
| | | | |
When a non-empty directory exists and prevents the creation of a
reflog, provide a more informative error message.
|
| | | |
| | | |
| | | |
| | | |
| | | | |
When a (non-empty) directory exists at the reference target
location, complain with a more actionable error message.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
When creating a filebuf, detect a directory that exists in our
target file location. This prevents a failure later, when we try
to move the lock file to the destination.
|
| | | | |
|
|\ \ \ \
| | | | |
| | | | | |
Support setting custom user-agent
|
| | | | | |
|
|/ / / / |
|
|\ \ \ \
| | | | |
| | | | | |
Diff: Honor `core.symlinks=false` and fake symlinks
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Test that on platforms without `core.symlinks`, we preserve symlinks
in `git_index_add_bypath`. (Users should correct the actual index
entry's mode to change a link to a regular file.)
|
| |/ / /
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
When `core.symlinks = false`, we write the symlinks content (target)
to a regular file. We should ensure that when we later see that
regular file, we treat it specially - and that changing that regular
file would actually change the symlink target. (For compatibility
with Git for Windows).
|
|\ \ \ \
| | | | |
| | | | | |
Handle submodules with paths in `git_submodule_update`
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Test that `git_submodule_update` can handle a submodule that is
freshly cloned and has a path differing from its name.
|
|\ \ \ \ \
| |/ / / /
|/| | | | |
stream: allow registering a user-provided TLS constructor
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
This allows the application to use their own TLS stream, regardless of
the capabilities of libgit2 itself.
|
| | | | |
| | | | |
| | | | |
| | | | | |
whitespace. Collapse spaces around newlines for the summary.
|
|\ \ \ \ \
| |/ / / /
|/| | | | |
Fix build for unit test
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
If none of GIT_OPENSSL, GIT_WINHTTP or GIT_SECURE_TRANSPORT
is defined we should also be able to build the unit test.
|
| |/ / /
|/| | | |
|
|\ \ \ \
| | | | |
| | | | | |
Use checksums to detect config file changes
|
| |/ / /
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
We currently use the timestamp in order to decide whether a config file
has changed since we last read it.
This scheme falls down if the file is written twice within the same
second, as we fail to detect the file change after the first read in
that second.
|
| | | | |
|
|/ / / |
|
|\ \ \
| | | |
| | | | |
Fix segfault when reading reflog with extra newlines
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Using calloc instead of malloc because the parse error will lead to an immediate free of committer (and its properties, which can segfault on free if undefined - test_refs_reflog_reflog__reading_a_reflog_with_invalid_format_returns_error segfaulted before the fix).
#3458
|
| | | | |
|
|/ / / |
|
| | |
| | |
| | |
| | |
| | |
| | | |
Provide a new merge option, GIT_MERGE_TREE_FAIL_ON_CONFLICT, which
will stop on the first conflict and fail the merge operation with
GIT_EMERGECONFLICT.
|
|\ \ \
| | | |
| | | | |
Nanoseconds in the index: ignore for diffing
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Test that nanoseconds are round-tripped correctly when we read
an index file that contains them. We should, however, ignore them
because we don't understand them, and any new entries in the index
should contain a `0` nsecs field, while existing preserving entries.
|
|\ \ \ \
| |/ / /
|/| | | |
config: add a ProgramData level
|
| | | |
| | | |
| | | |
| | | |
| | | | |
This is where portable git stores the global configuration which we can
use to adhere to it even though git isn't quite installed on the system.
|
| | | | |
|
|/ / / |
|
|\ \ \
| | | |
| | | | |
revwalk: make commit list use 64 bits for time
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
We moved the "main" parsing to use 64 bits for the timestamp, but the
quick parsing for the revwalk did not. This means that for large
timestamps we fail to parse the time and thus the walk.
Move this parser to use 64 bits as well.
|
|\ \ \ \
| | | | |
| | | | | |
Preserve modes from a conflict in `git_index_insert`
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
When we do not trust the on-disk mode, we use the mode of an existing
index entry. This allows us to preserve executable bits on platforms
that do not honor them on the filesystem.
If there is no stage 0 index entry, also look at conflicts to attempt
to answer this question: prefer the data from the 'ours' side, then
the 'theirs' side before falling back to the common ancestor.
|
| | | | | |
|
| |/ / /
|/| | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
For most real use cases, repositories with alternates use them as main
object storage. Checking the alternate for objects before the main
repository should result in measurable speedups.
Because of this, we're changing the sorting algorithm to prioritize
alternates *in cases where two backends have the same priority*. This
means that the pack backend for the alternate will be checked before the
pack backend for the main repository *but* both of them will be checked
before any loose backends.
|
| | | | |
|
| |_|/
|/| |
| | |
| | |
| | |
| | |
| | |
| | | |
xdiff craps the bed on large files. Treat very large files as binary,
so that it doesn't even have to try.
Refactor our merge binary handling to better match git.git, which
looks for a NUL in the first 8000 bytes.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
As refdb and odb backends can be allocated by client code, libgit2
can’t know whether an alternative memory allocator was used, and thus
should not try to call `git__free` on those objects.
Instead, odb and refdb backend implementations must always provide
their own `free` functions to ensure memory gets freed correctly.
|
|\ \ \
| | | |
| | | | |
Include custom HTTP headers
|
| | | |
| | | |
| | | |
| | | | |
Also, *some* custom headers actually are valid.
|
| | | | |
|
| |/ /
|/| | |
|
|\ \ \
| | | |
| | | | |
net: add tests against badssl.com
|
| | | |
| | | |
| | | |
| | | |
| | | | |
These provide bad X.509 certificates, which we should refuse to connect
to by default.
|
|/ / / |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
git expects an empty line after the binary data:
literal X
...binary data...
<empty_line>
The last literal block of the generated patches were not containing the required empty line. Example:
diff --git a/binary_file b/binary_file
index 3f1b3f9098131cfecea4a50ff8afab349ea66d22..86e5c1008b5ce635d3e3fffa4434c5eccd8f00b6 100644
GIT binary patch
literal 8
Pc${NM&PdElPvrst3ey5{
literal 6
Nc${NM%g@i}0ssZ|0lokL
diff --git a/binary_file2 b/binary_file2
index 31be99be19470da4af5b28b21e27896a2f2f9ee2..86e5c1008b5ce635d3e3fffa4434c5eccd8f00b6 100644
GIT binary patch
literal 8
Pc${NM&PdElPvrst3ey5{
literal 13
Sc${NMEKbZyOexL+Qd|HZV+4u-
git apply of that diff results in:
error: corrupt binary patch at line 9: diff --git a/binary_file2 b/binary_file2
fatal: patch with only garbage at line 10
The proper formating is:
diff --git a/binary_file b/binary_file
index 3f1b3f9098131cfecea4a50ff8afab349ea66d22..86e5c1008b5ce635d3e3fffa4434c5eccd8f00b6 100644
GIT binary patch
literal 8
Pc${NM&PdElPvrst3ey5{
literal 6
Nc${NM%g@i}0ssZ|0lokL
diff --git a/binary_file2 b/binary_file2
index 31be99be19470da4af5b28b21e27896a2f2f9ee2..86e5c1008b5ce635d3e3fffa4434c5eccd8f00b6 100644
GIT binary patch
literal 8
Pc${NM&PdElPvrst3ey5{
literal 13
Sc${NMEKbZyOexL+Qd|HZV+4u-
|