|
1ee3c37f
|
2021-05-19T09:31:30
|
|
Merge branch 'pr/5853'
|
|
6b1f6e00
|
2021-05-18T12:21:15
|
|
diff: test ignore-blank-lines
|
|
1b1e541d
|
2021-05-18T11:52:51
|
|
tests: clean up refs::races zero oid test
|
|
a6fb72a8
|
2021-05-18T11:51:25
|
|
tests: exit with error on win32 leakcheck
|
|
58944388
|
2021-05-16T11:11:56
|
|
Merge branch 'zero_oid_in_old'
Manually merging #5842
|
|
cf323cb9
|
2021-05-16T11:09:44
|
|
refs: test git_reference_create_matching failure for zero oid
|
|
2d24690c
|
2021-04-15T07:48:43
|
|
Add testcase
|
|
ff78aea6
|
2021-05-11T11:09:31
|
|
Merge pull request #5860 from libgit2/ethomson/buf_text
buf: remove unnecessary buf_text namespace
|
|
14f6950b
|
2021-05-10T23:14:17
|
|
buf: bom enum is in the buf namespace
Instead of a `git_bom_t` that a `git_buf` function returns, let's keep
it `git_buf_bom_t`.
|
|
d525e063
|
2021-05-10T23:04:59
|
|
buf: remove internal `git_buf_text` namespace
The `git_buf_text` namespace is unnecessary and strange. Remove it,
just keep the functions prefixed with `git_buf`.
|
|
68b9605a
|
2021-05-06T15:37:31
|
|
filter: deprecate git_filter_list_apply_to_data
Deprecate `git_filter_list_apply_to_data` as it takes user input as a
`git_buf`. Users should use `git_filter_list_apply_to_buffer` instead.
|
|
4bd17208
|
2021-05-06T02:28:14
|
|
Merge pull request #5858 from libgit2/ethomson/memleaks
test: clean up memory leaks
|
|
b31795ef
|
2021-05-06T01:46:19
|
|
test: clean up memory leaks
|
|
33667c14
|
2021-05-05T23:59:05
|
|
win32: add file and get status on a long path
|
|
f8921ab9
|
2021-05-05T23:26:24
|
|
win32: ensure core.longpaths is honored for workdir paths
|
|
69c65b9a
|
2019-12-31T12:38:03
|
|
path: bump most Win32 unicode buffer sizes from MAX_PATH to GIT_PATH_MAX
|
|
5368be30
|
2021-05-05T23:01:57
|
|
clar: support long paths on Windows
|
|
c44f5688
|
2021-05-02T10:27:56
|
|
Merge pull request #5823 from libgit2/ethomson/path_validation
Working directory path validation
|
|
c15ed350
|
2021-04-26T12:23:25
|
|
repo: validate repository paths
Ensure that a repository's path (at initialization or open time) is
valid. On Windows systems, this means that the longest known path
beneath the repository will fit within MAX_PATH: this is a lock file for
a loose object within the repository itself.
Other paths, like a very long loose reference, may fail to be opened
after the repository is opened. These variable length paths will be
checked when they are accessed themselves. This new functionality is
done at open to prevent needlessly checking every file in the gitdir
(eg, `MERGE_HEAD`) for its length when we could instead check once at
repository open time.
|
|
e5851c62
|
2021-04-24T09:44:45
|
|
refs: ensure loose refs adhere to path validation
On Windows, we need to enforce MAX_PATH for loose references and their
reflogs. Ensure that any path - including the lock file - would fit
within the 260 character maximum.
We do not honor core.longpaths for loose reference files or reflogs.
core.longpaths only applies to paths in the working directory.
|
|
9fb755d5
|
2021-04-04T19:59:57
|
|
attr: validate workdir paths for attribute files
We should allow attribute files - inside working directories - to have
names longer than MAX_PATH when core.longpaths is set.
`git_attr_path__init` takes a repository to validate the path with.
|
|
50e01216
|
2021-03-20T16:39:29
|
|
repo: introduce git_repository_workdir_path
Add a simple accessor for workdir paths to get an absolute on-disk path
given a repository and a relative path within it. This is useful to
avoid copy-pasta `git_buf_joinpath` and to ensure that we validate
working directory paths while honoring `core.longpaths` settings.
|
|
dbc03de4
|
2021-03-20T14:28:25
|
|
apply: ensure we validate paths
There was no test ensuring that we validate `.git` paths. We do, but
let's add a test to make sure that we never regress this.
|
|
dc1ba018
|
2021-03-20T13:01:00
|
|
path: introduce ondisk and workdir path validation
Introduce `git_path_validate_filesystem` which validates (absolute) on-disk
paths and `git_path_validate_workdir` to perform validations on (absolute)
working directory paths. These functions are useful as there may be system
limitations on on-disk paths, particularly on Windows (for example,
enforcing MAX_PATH).
For working directory paths, these limitations may be per-repository, based
on the `core.longpaths` configuration setting.
|
|
95b7a639
|
2021-04-14T21:52:36
|
|
git_reference_create_matching: Treat all-zero OID as "must be absent"
This is pretty useful in avoiding races: I want to create a ref only if
it doesn't already exist. I can't check first because of TOCTOU -- by
the time I finish the check, someone else might have already created
the ref. And I can't take a lock because then I can't do the create,
since the create expects to take the lock.
The semantics are inspired by git update-ref, which allows an all-zero old
value to mean that the ref must not exist.
|
|
88323cd0
|
2021-03-20T09:52:17
|
|
path: git_path_isvalid -> git_path_validate
If we want to validate more and different types of paths, the name
`git_path_validate` makes that easier and more expressive. We can add,
for example, `git_path_validate_foo` while the current name makes that
less ergonomic.
|
|
cb136cdd
|
2021-04-14T22:22:11
|
|
utf8: introduce git_utf8_char_length
Introduce a function to determine the number of Unicode characters in a
given UTF-8 string.
|
|
52447c5c
|
2021-04-11T23:16:37
|
|
tests: fix variable name in list.c
|
|
7891e153
|
2021-04-01T11:34:38
|
|
Default to GIT_BRANCH_DEFAULT if init.defaultBranch is empty string
We already do this in repo_init_head
|
|
a0fca809
|
2021-03-10T11:19:14
|
|
Merge pull request #5814 from ianhattendorf/fix/winhttp-proxy-https
winhttp: skip certificate check if unable to send request
|
|
d7e65096
|
2021-03-04T09:44:26
|
|
Merge pull request #5764 from lhchavez/cgraph-needs-refresh
commit-graph: Introduce `git_commit_graph_needs_refresh()`
|
|
b99b5a81
|
2021-03-04T09:38:10
|
|
Merge pull request #5763 from lhchavez/cgraph-lookup
commit-graph: Support lookups of entries in a commit-graph
|
|
592a3252
|
2021-03-01T11:00:37
|
|
winhttp: test proxy https clone
|
|
2ad15250
|
2021-02-01T09:58:25
|
|
Merge pull request #5762 from lhchavez/cgraph-parser
commit-graph: Introduce a parser for commit-graph files
|
|
4732e030
|
2021-01-31T00:36:54
|
|
revspec: rename git_revparse_mode_t to git_revspec_t
The information about the type of a revision spec is not information
about the parser. Name it accordingly, so that `git_revparse_mode_t`
is now `git_revspec_t`. Deprecate the old name.
|
|
674875dc
|
2021-01-15T09:59:15
|
|
Merge pull request #5768 from lhchavez/midx-needs-refresh
midx: Fix a bug in `git_midx_needs_refresh()`
|
|
487f2a82
|
2021-01-10T21:32:28
|
|
Merge pull request #5775 from libgit2/ethomson/clone_branch
clone: set refs/remotes/origin/HEAD when branch is specified
|
|
1a2f9609
|
2021-01-05T06:24:26
|
|
commit-graph: Introduce `git_commit_graph_needs_refresh()`
This change introduces a function that allows the caller to know whether
the `commit-graph` file has not been modified since it was parsed.
Part of: #5757
|
|
1f32ed25
|
2021-01-04T19:33:48
|
|
commit-graph: Support lookups of entries in a commit-graph
This change introduces `git_commit_graph_entry_find()` and
`git_commit_graph_entry_parent()`. These two functions allow a much
faster lookup of commits by ID, since the ODB does not need to be
consulted, the commit object does not need to be inflated, and the
contents of the commit object do not need to be parsed.
Part of: #5757
|
|
3fd57a75
|
2021-01-04T18:22:43
|
|
commit-graph: Introduce a parser for commit-graph files
This change is the first in a series to add support for git's
commit-graph. This should speed up commit graph traversals by avoiding
object parsing and allowing some operations to terminate earlier.
Part of: #5757
|
|
923c0f7b
|
2021-01-07T17:34:17
|
|
clone: set refs/remotes/origin/HEAD when branch is specified
When a branch is specified to check out in clone, update the remote
tracking `HEAD` to point to it. This mimics git's behavior, when
`git clone -b <name>` is used.
|
|
d50d3db6
|
2021-01-07T05:43:30
|
|
midx: Fix a bug in `git_midx_needs_refresh()`
The very last check in the freshness check for the midx was wrong ><
This was also because this function was not tested.
|
|
3f4bc213
|
2021-01-07T14:05:02
|
|
repo: ignore empty init.defaultbranch
The init.defaultbranch option may be set, but empty. In this case, we
should ignore it instead of trying to set our default branch to
`refs/heads/`.
|
|
c41871e5
|
2021-01-07T12:22:08
|
|
fetch: test when HEAD points to nonexistent branch
When HEAD points to a nonexistent or invalid branch - for example, to
`refs/heads/` - the fetch should be permitted to continue, but we should
not use it when creating the `for merge` option in the FETCH_HEAD file.
(This emulates git's behavior.)
|
|
c31032a3
|
2021-01-07T10:15:25
|
|
Merge pull request #5760 from libgit2/ethomson/tttoo_many_ttts
blob: fix name of `GIT_BLOB_FILTER_ATTRIBUTES_FROM_HEAD`
|
|
855f2998
|
2021-01-05T14:45:14
|
|
blob: fix name of `GIT_BLOB_FILTER_ATTRIBUTES_FROM_HEAD`
`GIT_BLOB_FILTER_ATTTRIBUTES_FROM_HEAD` is misspelled, it should be
`GIT_BLOB_FILTER_ATTRIBUTES_FROM_HEAD`, and it would be if it were not
for the MacBook Pro keyboard and my inattentiveness.
|
|
d9c15387
|
2021-01-05T14:29:58
|
|
blob: add git_blob_filter_options_init
The `git_blob_filter_options_init` function should be included, to allow
callers in FFI environments to let us initialize an options structure
for them.
|
|
780ad7a9
|
2020-12-17T14:09:45
|
|
urlparse: use consistent ipv6 address rules
IPv6 addresses should be used identically internally; we should not
denote them with brackets in one operating system and without them in
another.
|
|
ab3e8565
|
2019-07-01T19:59:01
|
|
urlparse: Add IPv4 and IPv6 based tests
|
|
212ae9a7
|
2020-12-21T06:48:48
|
|
Fix the `-DENABLE_WERROR=ON` build for gcc 10.2
This change makes it possible to build with newer versions of gcc
without warnings. There were two warnings issued:
* gcc 8 added
[`-Wstringop-truncation`](https://developers.redhat.com/blog/2018/05/24/detecting-string-truncation-with-gcc-8/),
which warns if a call to `strncpy(3)` is prone to accidentally
truncating the destination string, since `strncpy(3)` does NOT add a
terminating `NULL` if the destination buffer is not large enough to
hold the input.
This change uses the pattern suggested in
https://us-cert.cisa.gov/bsi/articles/knowledge/coding-practices/strncpy-and-strncat
to fix the locations flagged by gcc.
* There was a potentially uninitialized access of `dest` in `fs_copy`.
|
|
5ab0736b
|
2020-12-19T09:30:26
|
|
Add tests for `git__multiply_int64_overflow`
As it turns out, the implementation of `git__multiply_int64_overflow` is
full of edge cases and tricky arithmetic. That means that it should have
unit tests.
As a result, a bug in `git__strntol64` was found (and fixed!) in
clang+32-bit.
|
|
589b8129
|
2020-12-14T10:43:07
|
|
badssl: RC4 should not fail with ECERTIFICATE
Using RC4 is not a _certificate_ problem, it's a cipher problem. The
SSL implementation should and will fail with an unrecoverable error
(-1). There's no opportunity to accept/continue.
|
|
89ffa98e
|
2017-11-18T15:51:08
|
|
badssl: re-enable RC4 test
This used to fail with an error indicating a mis-use of OpenSSL on platforms
using it due to poor error handling. Re-enable it even if this isn't the right
error code to use for now.
|
|
fd2d4759
|
2020-12-05T22:22:38
|
|
threads: git_tls_data to git_tlsdata
Use a no-allocation approach to the TLS data abstraction.
|
|
404dd024
|
2020-12-05T15:57:48
|
|
threads: rename thread files to thread.[ch]
|
|
37763d38
|
2020-12-05T15:26:59
|
|
threads: rename git_atomic to git_atomic32
Clarify the `git_atomic` type and functions now that we have a 64 bit
version as well (`git_atomic64`).
|
|
0450e313
|
2020-12-05T22:03:59
|
|
tests: ifdef out unused function in no-thread builds
|
|
322c15ee
|
2020-08-01T18:24:41
|
|
Make the pack and mwindow implementations data-race-free
This change fixes a packfile heap corruption that can happen when
interacting with multiple packfiles concurrently across multiple
threads. This is exacerbated by setting a lower mwindow open file limit.
This change:
* Renames most of the internal methods in pack.c to clearly indicate
that they expect to be called with a certain lock held, making
reasoning about the state of locks a bit easier.
* Splits the `git_pack_file` lock in two: the one in `git_pack_file`
only protects the `index_map`. The protection to `git_mwindow_file` is
now in that struct.
* Explicitly checks for freshness of the `git_pack_file` in
`git_packfile_unpack_header`: this allows the mwindow implementation
to close files whenever there is enough cache pressure, and
`git_packfile_unpack_header` will reopen the packfile if needed.
* After a call to `p_munmap()`, the `data` and `len` fields are poisoned
with `NULL` to make use-after-frees more evident and crash rather than
being open to the possibility of heap corruption.
* Adds a test case to prevent this from regressing in the future.
Fixes: #5591
|
|
f847fa7b
|
2020-02-16T02:00:56
|
|
midx: Support multi-pack-index files in odb_pack.c
This change adds support for reading multi-pack-index files from the
packfile odb backend. This also makes git_pack_file objects open their
backing failes lazily in more scenarios, since the multi-pack-index can
avoid having to open them in some cases (yay!).
This change also refreshes the documentation found in src/odb_pack.c to
match the updated code.
Part of: #5399
|
|
2cfa31c4
|
2020-04-05T18:30:07
|
|
path: remove unused git_path_topdir
|
|
d9d86e41
|
2020-11-21T22:13:51
|
|
Merge pull request #5580 from libgit2/ethomson/win32_leakcheck
msvc crtdbg -> win32 leakcheck
|
|
045748bb
|
2020-11-21T22:06:57
|
|
Merge pull request #5692 from rbmclean/master
Add missing worktree_dir check and test case
|
|
c8fe4da3
|
2020-11-21T22:06:03
|
|
Apply suggestions from code review
|
|
8aed4629
|
2020-07-12T18:43:22
|
|
cmake: rename MSVC_CRTDBG to WIN32_LEAKCHECK
|
|
cb4b3bdf
|
2020-07-12T17:49:42
|
|
win32: "crtdbg" is now "leakcheck"
msvc crtdbg is a mouthfull that is not particularly indicative of what
it does. Let's rename it to "win32 leakcheck".
|
|
303b4c68
|
2020-11-07T16:30:44
|
|
worktree: change test to invalidate worktree via filesystem
|
|
848c7793
|
2020-11-06T11:32:13
|
|
worktree: Demonstrate missing worktree check
worktree_dir isn't validated when it should be
|
|
0caa4655
|
2020-09-09T10:48:00
|
|
Add git_tag_name_is_valid
Signed-off-by: Sven Strickroth <email@cs-ware.de>
|
|
fe11160c
|
2020-09-08T21:05:18
|
|
Add git_branch_name_is_valid
Signed-off-by: Sven Strickroth <email@cs-ware.de>
|
|
55a7117d
|
2020-10-11T13:55:44
|
|
remote: use git_remote_name_is_valid
|
|
68e35588
|
2020-10-11T13:35:35
|
|
refspec: return GIT_EINVALIDSPEC for invalid specs
Disambiguate invalid specifications in `git_refspec__parse` so that
callers can determine the difference between invalid specifications and
actual errors. No call sites wil propagagte this new error message to
an end-user, so there is no user-facing API change.
|
|
b52bb4d4
|
2020-10-11T13:20:52
|
|
refs: use git_reference_name_is_valid
|
|
20450cbe
|
2020-10-14T13:44:59
|
|
Merge pull request #5546 from libgit2/ethomson/init
Refactor "global" state
|
|
4a0dceeb
|
2020-10-11T17:53:10
|
|
Make the Windows leak detection more robust
This change:
* Increases MY_ROW_LIMIT to 2M, since it has been failing in #5595's
tests since it's _super_ close to the limit.
* Calls `git_repository_free()` on a `git_repository` that was being
leaked only in Windows.
* Marks the global `git_repository` on `tests/repo/init.c` as `NULL`
after being freed to make any accidental access more noisy.
* Uses `cl_assert_equal_i()` in `test_trace_windows_stacktrace__leaks`
to make the test failures more actionable.
* Renames the globals in `tests/repo/init.c` so that they don't start
with an underscore.
|
|
e316b0d3
|
2020-05-15T11:47:09
|
|
runtime: move init/shutdown into the "runtime"
Provide a mechanism for system components to register for initialization
and shutdown of the libgit2 runtime.
|
|
c40d2dc5
|
2020-05-15T10:09:51
|
|
thread: restore the git_thread_exit tests
We were never properly testing git_thread_exit. Do so.
|
|
6554b40e
|
2020-05-13T10:39:33
|
|
settings: localize global data
Move the settings global data teardown into its own separate function,
instead of intermingled with the global state.
|
|
c837bff1
|
2020-10-05T11:03:39
|
|
clone: test that the origin HEAD is created
Ensure that we created `refs/remotes/origin/HEAD` when cloning, a
symbolic link pointing to `refs/remotes/origin/<default>`
|
|
005e7715
|
2020-02-23T22:28:52
|
|
multipack: Introduce a parser for multi-pack-index files
This change is the first in a series to add support for git's
multi-pack-index. This should speed up large repositories significantly.
Part of: #5399
|
|
9293e165
|
2020-10-04T21:41:28
|
|
Merge pull request #5494 from kevinjswinton/master
Fix binary diff showing /dev/null
|
|
3a72345b
|
2020-10-04T18:25:32
|
|
Merge pull request #5581 from libgit2/ethomson/mainbranch
Respect `init.defaultBranch` setting
|
|
a94fedc1
|
2020-10-04T18:04:01
|
|
Merge pull request #5620 from dlax/parse-patch-add-delete-no-index
patch_parse: handle absence of "index" header for new/deleted cases
|
|
a1f0135d
|
2020-10-04T18:01:09
|
|
Merge pull request #5626 from csware/parse_bool
boolean config parsing fails in some cases with mapped values
|
|
36dc681e
|
2020-10-04T17:54:15
|
|
Merge pull request #5629 from csware/config-multiline-parse
Fix config file parsing with multi line values containing quoted parts
|
|
6ac18625
|
2020-09-09T17:51:38
|
|
Fix config file parsing with multi line values containing quoted parts
Signed-off-by: Sven Strickroth <email@cs-ware.de>
|
|
ae99e697
|
2020-09-17T11:19:49
|
|
Merge pull request #5619 from ddevault/diffstat-segfault
diff stats: fix segfaults with new files
|
|
ec26b16d
|
2020-08-29T10:44:40
|
|
diff stats: fix segfaults with new files
|
|
6887e9db
|
2020-09-14T15:54:00
|
|
Removed FreeBSD-related macros.
|
|
e937a2aa
|
2020-09-09T19:08:20
|
|
Fixed includes for FreeBSD.
|
|
c464f123
|
2020-09-09T15:41:12
|
|
Improve formatting
Signed-off-by: Sven Strickroth <email@cs-ware.de>
|
|
b97f41db
|
2020-09-09T15:38:20
|
|
Add boolean tests for "on" and "off"
Signed-off-by: Sven Strickroth <email@cs-ware.de>
|
|
36cf1db2
|
2020-09-09T12:26:34
|
|
Support empty values for git_config_get_mapped and git_config_lookup_map_value
Signed-off-by: Sven Strickroth <email@cs-ware.de>
|
|
86d04918
|
2020-09-09T11:55:25
|
|
Fix parsing boolean config values when using git_config_get_mapped and git_config_lookup_map_value
Signed-off-by: Sven Strickroth <email@cs-ware.de>
|
|
74293ea0
|
2020-08-29T16:46:47
|
|
patch_parse: handle absence of "index" header for new/deleted cases
This follows up on 11de594f85479e4804b07dc4f7b33cfe9212bea0 which added
support for parsing patches without extended headers (the "index
<hash>..<hash> <mode>" line); issue #5267.
We now allow transition from "file mode" state to "path" state directly
if there is no "index", which will happen for patches adding or deleting
files as demonstrated in added test case.
|
|
471ed794
|
2020-07-13T10:05:04
|
|
clone: respect init.defaultBranch when empty
When cloning an empty repository, we need to guess what the branch
structure should be; instead of hardcoding `master`, use the
`init.defaultBranch` setting it if it provided.
|
|
e411aae3
|
2020-07-13T08:47:15
|
|
repo: honor the init.defaultBranch setting
As part of a push towards more inclusive language, git is reconsidering
using "master" as the default branch name. As a first step, this
setting will be configurable with the `init.defaultBranch` configuration
option. Honor this during repository initialization.
During initialization, we will create an initial branch:
1. Using the `initial_head` setting, if specified;
2. Using the `HEAD` configured in a template, if it exists;
3. Using the `init.defaultBranch` configuration option, if it is set; or
4. Using `master` in the absence of additional configuration.
|
|
c5d41d46
|
2020-08-03T09:55:22
|
|
Merge pull request #5563 from pks-t/pks/worktree-heads
Access HEAD via the refdb backends
|
|
a83fd510
|
2020-07-12T21:26:59
|
|
Merge pull request #5396 from lhchavez/mwindow-file-limit
mwindow: set limit on number of open files
|
|
92d42eb3
|
2020-07-12T09:53:10
|
|
Minor nits and style formatting
|
|
ce4cb073
|
2020-07-12T18:19:21
|
|
tests: verify renaming branch really updates worktree HEAD
In case where a branch is getting renamed, all HEADs of the main
repository and of its worktrees that point to the old branch need to get
updated to point to the new branch. We already do so and have a test for
this, but the test only verifies that we're able to lookup the updated
HEAD, not what it contains.
Let's make the test more specific by verifying the updated HEAD also has
the correct updated symbolic target.
|