Commit Graph

16096 Commits

Author SHA1 Message Date
Yuriy Chernyshov
60fdf919e7 Fix circular includes between types.h and oid.h 2025-03-31 13:04:34 +03:00
Talya Connor
d88347a89c AUTHORS: add self. 2025-03-29 18:51:33 +11:00
Talya Connor
9f93169473 diff: account for common prefix in max namelen. 2025-03-29 18:50:19 +11:00
Talya Connor
31f5c30999 test: failing diff stat test. 2025-03-29 18:16:45 +11:00
Nelson Elhage
1f4f900766 Don't use -fsanitizer for the standalone fuzzer build. 2025-03-03 23:47:41 +00:00
Nelson Elhage
4cd34f1d94 fuzzers: Fix CFLAGS
I'm seeing the current fuzzer build fail (during `cmake`) like so:

```
-- Performing Test IS_FSANITIZE_FUZZER_NO_LINK_SUPPORTED
-- Performing Test IS_FSANITIZE_FUZZER_NO_LINK_SUPPORTED - Failed
CMake Error at cmake/AddCFlagIfSupported.cmake:17 (message):
  Required flag -fsanitize=fuzzer-no-link is not supported
Call Stack (most recent call first):
  fuzzers/CMakeLists.txt:6 (add_c_flag)
```

The cmake log output contains something like so:

```
        /src/aflplusplus/libAFLDriver.a(aflpp_driver.o): in function `main':
        aflpp_driver.c:(.text+0x11b): undefined reference to `LLVMFuzzerTestOneInput'
        clang: error: linker command failed with exit code 1 (use -v to see invocation)
```

I haven't figured out exactly what's happening, but I believe that
once line 5 has added `-fsanitize=fuzzer` to `CFLAGS`, future compile-
tests **also** use it during linking. This in turn pulls in the fuzzer
`main`, which expects an `LLVMFuzzerTestOneInput` symbol, and thus
fails.

Instead, just add `-fsanitize=fuzzer-no-link` to CFLAGS (as suggested
[by the documentation][libfuzzer]), and then use `-fsanitize=fuzzer`
only for linking the fuzzer targets. At least in my environment, this
results in a working fuzzer build.

[libfuzzer]: https://llvm.org/docs/LibFuzzer.html#fuzzer-usage
2025-03-03 22:51:52 +00:00
Edward Thomson
21a351b0ed Merge pull request #7043 from libgit2/ethomson/benchmark
Benchmarks: refactoring
2025-03-02 22:48:48 +01:00
Edward Thomson
2599c96d25 ci: run administrative benchmarks 2025-03-02 20:46:38 +00:00
Edward Thomson
771ec303d4 benchmarks: introduce --admin flag for admin benchmarks
Some benchmarks require administrative privileges, namely the ones that
blow up the disk cache. Don't run them by default, to avoid obnoxious
sudo password prompts, etc. Users can specify `--admin` to run them.
2025-03-02 20:46:38 +00:00
Edward Thomson
8d8ab0b110 benchmarks: rename cache benchmarks
The default in the world is to have a disk cache; it's exceptional to
_not_. Flip our naming, so that the (exceptional) `nocache` tests are
called out explicitly.
2025-03-02 20:46:38 +00:00
Edward Thomson
1c485493cc Merge pull request #7042 from libgit2/ethomson/benchmark 2025-03-02 10:56:58 +01:00
Edward Thomson
48d031f6ab cli: fix benchmark commit interrogation
Don't fail the benchmark script if we can't identify the CLI commit.
2025-03-02 08:56:38 +00:00
Edward Thomson
eb22b60063 Merge pull request #7039 from ytnuf/stdint
Revert include path regression
2025-02-26 16:46:53 +01:00
ytnuf
a465da73a5 Revert include path regression 2025-02-13 11:10:45 +00:00
Edward Thomson
b042e57406 Merge pull request #7038 from libgit2/ethomson/ci
ci: update download-artifact version
2025-02-07 22:02:10 +00:00
Edward Thomson
1b3598c0c6 ci: update download-artifact version 2025-02-07 20:59:56 +00:00
Edward Thomson
1cd6872e8f Merge pull request #7008 from libgit2/ethomson/benchmark_version
benchmarks: report commit of build
2025-02-03 17:21:35 +00:00
Edward Thomson
3822833a7a Merge pull request #7007 from libgit2/ethomson/buildinfo
Introduce git_libgit2_buildinfo
2025-02-03 17:20:55 +00:00
Edward Thomson
bad4a0785f Merge pull request #7029 from libgit2/ethomson/clar-update
clar: update to latest version
2025-02-03 17:19:41 +00:00
Edward Thomson
d34d905d11 Merge pull request #7030 from libgit2/ethomson/version
Include common.h in version.h
2025-01-23 13:51:43 -08:00
Edward Thomson
72d49bb0de clar: update to latest version
Update to the latest version (in HEAD) of clar. This affords us improved
test directory creation, and the `cl_invoke` helper macro.
2025-01-23 10:32:52 +00:00
Edward Thomson
24b5096712 Include common.h in version.h
Fixes #7027
2025-01-23 00:22:34 +00:00
Edward Thomson
1b348a3134 Merge pull request #7026 from emilazy/push-npwwprvzrmmr
conflict tests: check `core.ignorecase`
2025-01-21 13:42:07 -08:00
Emily
96bdc04fbb conflict tests: check core.ignorecase
Not all filesystems on Apple and Windows platforms are
case‐insensitive; this test would previously fail on a
case‐sensitive APFS volume.
2025-01-21 21:19:32 +00:00
Edward Thomson
3eadce3d0b Merge pull request #7019 from vapier/main
alternates: allow relative paths in all repositories
2025-01-21 13:04:10 -08:00
Edward Thomson
99dbff8d7c Merge pull request #7025 from libgit2/ethomson/test_updates
Test updates
2025-01-21 05:10:01 -08:00
Edward Thomson
346930e280 Merge pull request #7018 from libgit2/ethomson/icase_filters
attr: honor ignorecase in attribute matching
2025-01-20 15:09:50 -08:00
Edward Thomson
c48364cd6a filter: set a temporary sysdir in test
The filter tests mutate state, and should set a temporary sysdir to do
so.
2025-01-20 22:45:59 +00:00
Edward Thomson
21af9ec86c test: set a temporary PROGRAMDATA directory
Like we set temporary system and global configuration directories, we
need to set a programdata directory for safe test handling.
2025-01-20 22:45:53 +00:00
Edward Thomson
90465353a5 Merge pull request #7022 from carlo-bramini/fix-cygwin-1 2025-01-20 11:04:04 -08:00
Carlo Bramini
63cffe3d21 cli: fix undefined alloca() on CYGWIN
I tried to build my libgit2-1.9.0 package for CYGWIN but I got an error. This message appears when compiling:

[199/671] Building C object src/cli/CMakeFiles/git2_cli.dir/opt.c.o
libgit2-1.9.0/src/cli/opt.c: In function ‘cli_opt_parse’:
libgit2-1.9.0/src/cli/opt.c:564:23: warning: implicit declaration of function ‘alloca’; did you mean ‘malloc’? [-Wimplicit-function-declaration]
  564 |         given_specs = alloca(sizeof(const cli_opt_spec *) * (args_len + 1));
      |                       ^~~~~~
      |                       malloc

and later the linker emits this error message:

[668/671] Linking C executable git2.exe
FAILED: git2.exe
/usr/x86_64-pc-cygwin/bin/ld: src/cli/CMakeFiles/git2_cli.dir/opt.c.o: in function `cli_opt_parse':
/usr/src/debug/libgit2-1.9.0-1/src/cli/opt.c:564:(.text+0xce3): undefined reference to `alloca'
collect2: error: ld returned 1 exit status

The error is fixed by adding alloca.h to included headers.
Hopefully, opt.c already allows to add alloca.h for some platforms, so I just added an additional test for the preprocessor for checking if the target is CYGWIN.
2025-01-20 12:34:50 +01:00
Mike Frysinger
17cbd2eae0 alternates: allow relative paths in all repositories
Git does not limit relative paths in alternates to the first
repository, so libgit2 shouldn't either.
2025-01-15 21:25:30 -05:00
Edward Thomson
906623b8f9 attr: honor ignorecase in attribute matching
`.gitattributes` is case-insensitive when `core.ignorecase=true`.
2025-01-15 22:44:51 +00:00
Edward Thomson
6330ca3c0f version: add size information
Add `sizeof-long` and `sizeof-size_t` information to `version` command.
2025-01-15 09:28:28 +00:00
Edward Thomson
1509637751 Introduce git_libgit2_buildinfo
Track some information about the compilation at compile time, and allow
consumers to query it.
2025-01-15 09:28:26 +00:00
Edward Thomson
9692f45ca8 Merge pull request #7014 from libgit2/ethomson/index-bench
flamegraph: theme for libgit2 benchmarks site
2025-01-14 15:45:52 +00:00
Edward Thomson
f9e9ddd884 flamegraph: theme for libgit2 benchmarks site 2025-01-14 12:48:28 +00:00
Edward Thomson
7daaf6151a Merge pull request #7010 from libgit2/ethomson/index-bench
Add profiling data to benchmarks
2025-01-13 23:19:48 +00:00
Edward Thomson
02435d7647 ci: benchmark workflow improvements
Publish the site as an artifact during workflow_dispatch events.
2025-01-13 21:23:04 +00:00
Edward Thomson
9c2b827cef ci: disable perf_event_paranoid on linux CI 2025-01-13 21:23:04 +00:00
Edward Thomson
99ab224882 ci: produce flamegraphs during benchmark run 2025-01-13 21:23:04 +00:00
Edward Thomson
89f0dab789 ci: build benchmarks as release with debugging info
Our benchmarks need debugging information for (eg) profiling.
2025-01-13 21:23:04 +00:00
Edward Thomson
008c6f7984 benchmarks: optionally generate and publish flamegraphs 2025-01-13 21:23:02 +00:00
Edward Thomson
dfbdaa28a5 benchmark: introduce profiling support
Introduce `--profile` support to the benchmark helper script, which will
invoke `perf` on Linux. Additionally, add a `--flamegraph` output
option based on that.
2025-01-13 21:21:17 +00:00
Edward Thomson
6bc64fb56e Merge pull request #7012 from lrm29/patch-1
Update SelectSSH.cmake
2025-01-13 20:48:50 +00:00
Laurence McGlashan
1d2bdab7f8 Update SelectSSH.cmake 2025-01-13 12:16:44 +00:00
Edward Thomson
6fedfd3237 Add benchmark for large-ish (250mb) index-pack 2025-01-11 21:58:19 +00:00
Edward Thomson
343c2cbae8 benchmarks: report commit of build
It can be useful to report the commit ID during benchmarks to track down
regressions; leverage the addition of that in `git version` during
benchmark runs.
2025-01-09 23:44:23 +00:00
Edward Thomson
1ec9d2c7c6 Merge pull request #7006 from libgit2/ethomson/benchmarks
benchmarks: update path to baseline cli
2025-01-09 23:33:48 +00:00
Edward Thomson
436f4e7d96 benchmarks: update path to baseline cli
The `fullpath` function takes the cli, but doesn't keep the cli.
2025-01-09 21:45:11 +00:00