|
0db1c57c
|
2022-01-25T10:32:47
|
|
oid: add sha256 typed oids
|
|
3fbf580c
|
2022-01-23T09:47:01
|
|
oid: give oids a type
`git_oid`s now have a type, and we require the oid type when creating
the object id from creation functions.
|
|
b7a46fa8
|
2022-01-23T12:25:03
|
|
object: move oid header parsing to object
|
|
0acaf3a8
|
2022-01-17T13:40:37
|
|
oid: define GIT_OID_SHA1_ZERO
Callers should not assume the layout of the oid structure; provide them
a macro that defines the null / zero sha1 object id.
|
|
dbc4ac1c
|
2022-01-22T23:10:03
|
|
oid: `GIT_OID_*SZ` is now `GIT_OID_SHA1_*SIZE`
In preparation for SHA256 support, `GIT_OID_RAWSZ` and `GIT_OID_HEXSZ`
need to indicate that they're the size of _SHA1_ OIDs.
|
|
61838295
|
2022-01-26T16:22:04
|
|
object: move oid header printing to object
|
|
cdff2f02
|
2022-06-13T21:34:01
|
|
repo: allow administrator to own the configuration
Update our ownership checks that were introduced in libgit2 v1.4.3
(to combat CVE 2022-24765). These were not compatible with git's; git
itself allows administrators to own the path. Our checks now match
this behavior.
|
|
0a7c00be
|
2022-06-11T14:31:16
|
|
Merge remote-tracking branch 'origin/main' into main
|
|
a7541676
|
2022-06-11T14:29:15
|
|
Apply suggestions from code review
Co-authored-by: Edward Thomson <ethomson@github.com>
|
|
7f53d7b6
|
2022-05-09T12:09:08
|
|
revparse: Remove error-prone, redundant test
Originally introduced in: 776a6a8e5f8e258d31aded73c0ce38df6ac7bdc4
This test case has recently been fixed in bdab22384cc61d315005a65456a9f9563bb27c8f, but that fix will only last for a year. Next year the same problem will crop up and the test will need to be re-edited.
This is not ideal as
- This test case becomes an unnecessary burden for developers
- Downstream distros or even just users who want to build older versions of libgit2 are guaranteed to have this test fail
Furthermore, this test case is entirely unnecessary, as the functionality that was originally (see 776a6a8e5f8e258d31aded73c0ce38df6ac7bdc4) intended to be tested is well-covered by subsequent tests which specify a date instead of a "x ago" specification.
|
|
bdab2238
|
2022-05-03T09:28:43
|
|
revparse: adjust reflog test as we move away from the dates
The dates we use in `refs::revparse::date` has just passed the ten years, so
now everything is beyond ten years, leading to an unexpected commit being
returned.
Adjust it to 11 years so it all looks fine again.
|
|
3b52e5f5
|
2022-04-18T17:12:27
|
|
Merge pull request #6265 from libgit2/ethomson/sha256_two
sha256: refactoring in preparation for sha256
|
|
1d88605c
|
2022-04-16T08:19:38
|
|
transport: introduce `git_transport_smart_remote_connect_options`
6fc6eeb66c40310086c8f059cae41de69ad4c6da removed
`git_transport_smart_proxy_option`, and there was nothing added to
replace it. That made it hard for custom transports / smart
subtransports to know what remote connect options to use (e.g. proxy
options).
This change introduces `git_transport_smart_remote_connect_options` to
replace it.
|
|
4161ebdd
|
2022-04-11T21:31:25
|
|
repo: make ownership checks optional
Introduce the `GIT_OPT_SET_OWNER_VALIDATION` option, so that users can
disable repository ownership validation.
|
|
fa366921
|
2022-04-11T15:18:44
|
|
repo: honor safe.directory during ownership checks
Obey the `safe.directory` configuration variable if it is set in the
global or system configuration. (Do not try to load this from the
repository configuration - to avoid malicious repositories that then
mark themselves as safe.)
|
|
90d2b619
|
2022-04-11T17:07:20
|
|
repo: test configuration ownership validation
Test that we prevent opening directories that are not owned by
ourselves.
|
|
bf2620bc
|
2022-04-10T21:29:43
|
|
fs_path: refactor ownership checks into current user and system
Provide individual file ownership checks for both the current user and
the system user, as well as a combined current user and system user
check.
|
|
7367a9d5
|
2022-01-22T09:07:26
|
|
tests: don't cast raw data to a `git_oid``
Create an object id from raw data instead of casting.
|
|
590ff981
|
2022-01-21T19:49:09
|
|
oid: don't assume the size of an oid
Don't assume that a `git_oid` is a particular size; allocate
`sizeof(git_oid)` instead.
|
|
ab042161
|
2022-01-18T08:12:18
|
|
tree: move git_oid into tree entry
A tree entry previously pointed directly into the object id within the
tree object itself; this is useful to avoid any unnecessary memory copy
(and an unnecessary use of 40 bytes per tree entry) but difficult if we
change the underlying `git_oid` object to not simply be a raw object id
but have additional structure.
This commit moves the `git_oid` directly into the tree entry; this
simplifies the tree entry creation from user data. We now copy the
`git_oid` into place when parsing.
|
|
606afeda
|
2022-04-10T09:44:41
|
|
Merge pull request #6244 from jorio/fix-diff_delta_format_path-crash
Fix crash when regenerating a patch with unquoted spaces in filename
|
|
e7fce1b5
|
2022-04-06T10:22:29
|
|
tests: support flaky stat
The 32-bit ARM QEMU builds are flaky when running `lstat`. Disable those
testing `lstat`'s `st_size` temporarily.
|
|
4e85b4fc
|
2022-04-05T22:40:43
|
|
Merge pull request #6259 from libgit2/ethomson/diff_arm32
diff: don't stat empty file on arm32 (flaky test)
|
|
d8015d28
|
2022-04-04T13:30:27
|
|
Merge pull request #6251 from libgit2/ethomson/oid_fetch
fetch: support OID refspec without dst
|
|
42093d6a
|
2022-04-04T11:40:42
|
|
diff: don't stat empty file on arm32 (flaky test)
Our CI test infrastructure virtualizes arm32 in docker, which is a
sometimes imperfect situation. In `diff::workdir::can_diff_empty_file`,
avoid the stat to ensure that the file is zero bytes; there is an odd
issue running in qemu when emulating arm32 that we should skip.
|
|
ce78c83b
|
2021-12-13T15:31:21
|
|
sha: ensure we test both cng and cryptoapi on windows
When GIT_SHA1_WIN32 or GIT_SHA256_WIN32 is used, ensure that we test
both CryptoNG ("cng") and CryptoAPI.
|
|
b900981c
|
2021-12-12T14:25:25
|
|
sha: add sha256 algorithm
Add support for a SHA256 hash algorithm, and add the "builtin" SHA256
hash engine (from RFC 6234).
|
|
3a08bc43
|
2022-03-23T08:38:23
|
|
Merge pull request #6235 from libgit2/ethomson/cli_benchmarks
Benchmarking suite
|
|
a9a7967a
|
2022-03-22T22:16:57
|
|
fetch: support OID refspec without dst
Support the ability to create a refspec that is a single object ID
without a destination.
|
|
a1020a7f
|
2022-03-22T23:05:48
|
|
clone: update bitbucket tests
|
|
11866327
|
2022-03-13T17:36:48
|
|
test: add test that regenerates patches with spaces in filename
This currently crashes, proposed fix in subsequent commit.
|
|
93037bab
|
2022-02-22T22:00:37
|
|
tests: add benchmark tests
Add a benchmark test suite that wraps hyperfine and is suitable for
producing data about test runs of a CLI or A/B testing CLIs.
|
|
d9b041e6
|
2022-02-27T09:20:58
|
|
assert: add `ASSERT_WITH_CLEANUP`
Now that we safely assert and return, we may need to be in a place where
we need to unlock mutexes or cleanup resources. Provide
`ASSERT_WITH_CLEANUP` that permits for this behavior by taking a block.
|
|
d02f4f7a
|
2021-11-17T14:31:29
|
|
cmake: refactor `add_clar_test` into separate module
|
|
e6d93612
|
2021-11-16T23:59:43
|
|
refactor: move utility tests into util
|
|
2b09b5d7
|
2021-11-16T23:47:14
|
|
refactor: move headertest into separate test folder
|
|
25bc84fb
|
2021-11-16T23:41:00
|
|
refactor: move clar into separate directory
|
|
3344fddc
|
2021-11-16T23:29:22
|
|
refactor: `tests` is now `tests/libgit2`
Like we want to separate libgit2 and utility source code, we want to
separate libgit2 and utility tests. Start by moving all the tests into
libgit2.
|
|
5fcfada5
|
2021-11-15T07:45:16
|
|
cmake: document CMakeLists.txt hierarchy
|
|
eca9e1cf
|
2022-02-22T07:17:12
|
|
Merge pull request #6228 from libgit2/ethomson/win32_systemdirs
win32: `find_system_dirs` does not return `GIT_ENOTFOUND`
|
|
f45121ed
|
2022-02-21T16:13:52
|
|
win32: `find_system_dirs` does not return `GIT_ENOTFOUND`
Allow for no Git for Windows installation. When there is no GfW found
in the path or registry, `git_win32__find_system_dirs` would return a
`GIT_ENOTFOUND`. Callers were not expecting this. Since this is no
error, we simply return `0` so that callers can move on with their
lives.
|
|
e35b5e44
|
2022-02-21T10:34:13
|
|
test: add test for the behaviour of update_tips on error
|
|
e1415dc3
|
2022-02-11T11:02:00
|
|
diff_file: test empty workdir file grows after obtaining a diff
This test was also provided by @jorio
https://github.com/libgit2/libgit2/pull/6208#issuecomment-1034072050
|
|
9aade20b
|
2022-02-09T19:04:52
|
|
diff_file: test workdir file becomes empty after obtaining a diff
|
|
0a0cd67d
|
2022-02-08T20:18:15
|
|
diff_file: fix crash if size of diffed file changes in workdir
"diff_file_content_load_workdir_file()" maps a file from the workdir
into memory. It uses git_diff_file.size to determine the size of the
memory mapping.
If this value goes stale, the mmaped area would be sized incorrectly.
This could occur if an external program changes the contents of the
file after libgit2 had cached its size. This used to segfault if the
file becomes smaller (mmaped area too large).
This patch causes diff_file_content_load_workdir_file to fail without
crashing if it detects that the file size has changed.
|
|
1d811f0e
|
2022-02-11T07:14:54
|
|
Merge pull request #6203 from libgit2/ethomson/fetch_by_oid
Fetch by object id
|
|
d9863fc1
|
2022-02-06T15:27:34
|
|
Merge pull request #6192 from libgit2/ethomson/sha256_preparation
SHA256: early preparation
|
|
9d88300a
|
2022-02-05T12:35:46
|
|
fetch: support oids in fetch specs
|
|
07264ea7
|
2022-02-06T14:07:36
|
|
fetch: add a test for local fetching
|
|
b82d5664
|
2022-02-05T09:03:37
|
|
oid: introduce git_oid__is_hexstr
Introduce a function that determines whether a given string is a valid
object id (40 chars of hexadigits).
|
|
4efd6563
|
2022-02-03T16:39:26
|
|
Merge pull request #6196 from libgit2/ethomson/at_revparse
revparse: support bare '@'
|
|
61f1e31a
|
2022-02-02T22:35:18
|
|
Merge pull request #6197 from libgit2/ethomson/merge_msg_conflict_comment
merge: comment conflicts lines in MERGE_MSG
|
|
18a477e7
|
2022-02-02T22:35:07
|
|
Merge pull request #6195 from libgit2/ethomson/zdiff3
merge: support zdiff3 conflict styles
|
|
c0297d47
|
2022-01-30T22:38:08
|
|
merge: comment conflicts lines in MERGE_MSG
git has started adding comment markers to its conflict lines in
MERGE_MSG. Match that behavior.
|
|
add2dabb
|
2022-01-30T22:25:59
|
|
revparse: support bare '@'
A bare '@' revision syntax represents HEAD. Support it as such.
|
|
84e1e560
|
2022-01-30T19:22:38
|
|
Merge branch 'boretrk/futils_mktmp'
|
|
aae54d5b
|
2022-01-30T13:43:43
|
|
Merge pull request #6138 from ccstolley/ccs_packedrefs_fast
refs: Speed up packed lookups.
|
|
c629d2a1
|
2022-01-29T21:02:15
|
|
merge: support zdiff3 conflict styles
|
|
70d9bfa4
|
2022-01-22T17:34:36
|
|
packbuilder: use the packfile name instead of hash
Deprecate the `git_packfile_hash` function. Callers should use the new
`git_packfile_name` function which provides a unique packfile name.
|
|
d2458af7
|
2022-01-22T14:19:13
|
|
indexer: use a byte array for checksum
The index's checksum is not an object ID, so we should not use the
`git_oid` type. Use a byte array for checksum calculation and storage.
Deprecate the `git_indexer_hash` function. Callers should use the new
`git_indexer_name` function which provides a unique packfile name.
|
|
11ef76a9
|
2022-01-22T13:31:02
|
|
index: use a byte array for checksum
The index's checksum is not an object ID, so we should not use the
`git_oid` type. Use a byte array for checksum calculation and storage.
Deprecate the `git_index_checksum` function without a replacement. This
is an abstraction that callers should not care about (and indeed do not
seem to be using).
Remove the unused `git_index__changed_relative_to` function.
|
|
74471eef
|
2022-01-21T19:11:18
|
|
commit_graph: tests are now `commitgraph`
Underscores in filenames in tests indicate a logical separation - so
`commit_graph` becomes `commit::graph`. Rename it to `commitgraph` to
avoid this.
|
|
475c6eba
|
2022-01-17T17:16:02
|
|
win32: improve impl & tests for system path / g4w interop
We look for a Git for Windows installation to use its git config,
so that clients built on libgit2 can interoperate with the Git for
Windows CLI (and clients that are built on top of _it_).
Look for `git` both in the `PATH` and in the registry. Use the _first_
git install in the path, and the first git install in the registry.
Look in both the `etc` dir and the architecture-specific `etc` dirs
(`mingw64/etc` and `mingw32/etc`) beneath the installation root.
Prefer the git in the `PATH` to the git location in the registry so that
users can override that.
Include more tests for this behavior.
|
|
925abee9
|
2022-01-15T20:08:10
|
|
path: introduce git_fs_path_find_executable
Provide a helper function to find an executable in the current process's
PATH.
|
|
ecbb01f5
|
2022-01-17T00:09:13
|
|
win32: test system paths for gvfs compatibility
|
|
d298059e
|
2022-01-17T21:41:12
|
|
Merge pull request #6167 from libgit2/ethomson/scp_urls_with_ports
Support scp style paths with ports
|
|
616628dd
|
2022-01-17T21:39:35
|
|
Merge branch 'main' into typos
|
|
e02e6a5c
|
2022-01-11T10:19:40
|
|
url: introduce git_net_str_is_url
We occasionally need to determine whether a given string is a URL or
something else. (The "something else" may be a git path in a different
format, like scp formatting, which needs to be handled differently.)
|
|
e2bda60a
|
2022-01-10T21:12:13
|
|
url: introduce git_net_url_parse_scp
Provide a mechanism for parsing scp-style paths (eg
`git@github.com:libgit2/libgit2` into the url form
`ssh://git@github.com/libgit2/libgit2`.)
|
|
df4448f2
|
2022-01-10T21:25:05
|
|
online: test with https instead of git protocol
GitHub is removing support for the unauthenticated git protocol; test
with the https protocol.
|
|
8d548222
|
2022-01-14T23:25:27
|
|
tests: verify that futils_mktmp respects umask
|
|
adaa037d
|
2022-01-04T16:18:40
|
|
remote: test honoring configuration option
Test that we honor `http.followRedirects` when set to initial or false.
|
|
515daeaf
|
2022-01-04T06:16:30
|
|
remote: introduce `follow_redirects` connect option
Give callers the ability to select how to handle redirects - either
supporting redirects during the initial connection (so that, for
example, `git.example.com/repo` can redirect to `github.com/example/repo`)
or all/no redirects. This is for compatibility with git.
|
|
342e55ac
|
2021-12-18T10:13:18
|
|
url: optionally allow off-site redirects
In redirect application logic, (optionally) allow off-site redirects.
|
|
9faa9199
|
2022-01-06T07:42:01
|
|
status: don't use `// ...` in tests, use `/* ... */`
|
|
ca9f6b98
|
2022-01-06T07:41:27
|
|
Merge remote-tracking branch 'pr/6159'
|
|
da5385c6
|
2022-01-06T07:39:21
|
|
status: don't use `// ...` in tests, use `/* ... */`
|
|
db3572b7
|
2022-01-06T07:38:07
|
|
Merge pull request #6165 from libgit2/ethomson/includeif
config: handle empty conditional in includeIf
|
|
90df4302
|
2022-01-05T12:18:05
|
|
Fix typos
|
|
83a1e614
|
2022-01-05T09:18:59
|
|
config: handle empty conditional in includeIf
When a config file contains `[includeIf]` (with no condition), we should
treat that as a falsey value. This means that we should properly parse
a config value of `includeIf.path`.
|
|
a3436cde
|
2022-01-01T15:17:08
|
|
#6154 git_status_list_new case insensitive fix
|
|
ef848891
|
2021-12-31T16:40:58
|
|
Add `rename_threshold` to `git_status_options`.
|
|
942cfac1
|
2021-12-23T14:21:23
|
|
worktree: checkout options suggestions from code review
|
|
f9a98f94
|
2021-11-22T15:16:26
|
|
Fix test fail because of memory leak
|
|
1fa8014a
|
2021-11-22T12:07:59
|
|
Update test for `git_str` usage instead of `git_buf`
See commit f0e693b18afbe1de37d7da5b5a8967b6c87d8e53
|
|
8b0ffdcb
|
2021-11-08T17:23:27
|
|
Add test for `git_worktree_add` no checkout
|
|
a50bbba1
|
2021-12-23T15:07:29
|
|
Merge pull request #6142 from libgit2/ethomson/blob_data_is_binary
blob: identify binary content
|
|
05c3d972
|
2021-12-23T15:03:08
|
|
Merge pull request #6124 from csware/config-parsing
Config parsing
|
|
3cca14b3
|
2021-12-23T14:13:34
|
|
Merge pull request #6125 from stforek/git_commit_summary_spaces
git_commit_summary: ignore lines with spaces
|
|
dca31d24
|
2021-12-23T14:12:23
|
|
Merge pull request #6101 from mkhl/fix/instead-of
remotes: fix insteadOf/pushInsteadOf handling
|
|
ab5b3f37
|
2021-12-23T14:09:09
|
|
Merge pull request #6095 from yoichi/better-compatiblity-for-at-time-notation
Better revparse compatibility for at time notation
|
|
c5cd71b2
|
2021-12-23T18:23:34
|
|
cmake: use PROJECT_SOURCE_DIR of CMAKE_SOURCE_DIR
Also applies to *_BINARY_DIR.
This effectively reverts 84083dcc8bd41332ccac9d7b537f3e254d79011c,
which broke all users of libgit2 that use it as a CMake subdirectory
(via `add_subdirectory()`). This is because CMAKE_SOURCE_DIR refers
to the root-most CMake directory, which in the case of
`add_subdirectory()` is a parent project to libgit2 and thus the paths
don't make any sense to the configuration files. Corollary,
CMAKE_SOURCE_DIR only makes sense if the CMake project is always the
root project - which can rarely be guaranteed.
In all honesty, CMake should deprecate and eventually remove
CMAKE_SOURCE_DIR and CMAKE_BINARY_DIR. It's been the source of headaches
and confusion for years, they're rarely useful over
CMAKE_CURRENT_(SOURCE|BINARY)_DIR or PROJECT_(SOURCE|BINARY)_DIR,
and they cause a lot of confusing configuration and source
code layouts to boot.
Any time they are used, they break `add_subdirectory()` almost 100% of
the time, cause confusing error messages, and hide subtle bugs.
|
|
ad7a51d8
|
2021-10-07T13:26:52
|
|
refs: Speed up packed lookups.
Currently ref lookups require loading the entire packed-refs file into
a hashmap in memory. For repos with large numbers of refs this can be
painfully slow.
This patch replaces the existing lookup code and instead mmap()'s the
packed-refs file and performs a binary search to locate the ref entry.
Git uses a similiar approach.
The old hash table codepath is still used for unsorted packed-refs files.
This patch also fixes a minor bug where the "peeled" trait is never
parsed correctly from the packed-refs header.
|
|
4591e76a
|
2021-12-10T15:19:59
|
|
blob: identify binary content
Introduce `git_blob_data_is_binary` to examine a blob's data, instead of
the blob itself. A replacement for `git_buf_is_binary`.
|
|
dff05bc3
|
2021-11-25T11:40:20
|
|
Multiline config values not preserved on saving
(fixes issue #6088)
Signed-off-by: Sven Strickroth <email@cs-ware.de>
|
|
854164a5
|
2021-11-25T11:02:41
|
|
Add more tests for contents
Signed-off-by: Sven Strickroth <email@cs-ware.de>
|
|
433edb54
|
2021-11-25T10:22:22
|
|
Config parsing confused by continuations that start with quotes
(fixes issue #6089)
Signed-off-by: Sven Strickroth <email@cs-ware.de>
|
|
9f03ebd1
|
2021-11-29T13:44:42
|
|
object: introduce a raw content validation function
Users may want to validate raw object content; provide them a function
to do so.
|
|
6fdb1b2f
|
2021-11-30T21:09:57
|
|
Merge pull request #6122 from libgit2/ethomson/cleanup
Minor code cleanups
|
|
1e015088
|
2021-11-25T15:19:17
|
|
git_commit_summary: ignore lines with spaces
Fixes libgit2/libgit2#6065
|