Skip to content

Commit 17a9aae

Browse files
authored
Merge branch 'libgit2:main' into main
2 parents dfc4d4b + c6111ec commit 17a9aae

File tree

288 files changed

+6444
-4634
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

288 files changed

+6444
-4634
lines changed

.github/workflows/benchmark.yml

Lines changed: 39 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,12 @@ name: Benchmark
33

44
on:
55
workflow_dispatch:
6+
inputs:
7+
suite:
8+
description: Benchmark suite to run
9+
debug:
10+
type: boolean
11+
description: Debugging output
612
schedule:
713
- cron: '15 4 * * *'
814

@@ -23,31 +29,31 @@ jobs:
2329
matrix:
2430
platform:
2531
- name: "Linux (clang, OpenSSL)"
32+
id: linux
33+
os: ubuntu-latest
34+
setup-script: ubuntu
2635
env:
2736
CC: clang
2837
CMAKE_OPTIONS: -DUSE_HTTPS=OpenSSL -DREGEX_BACKEND=builtin -DDEPRECATE_HARD=ON -DUSE_GSSAPI=ON -DBUILD_TESTS=OFF -DBUILD_EXAMPLES=OFF -DBUILD_CLI=ON -DCMAKE_BUILD_TYPE=Release
2938
CMAKE_BUILD_OPTIONS: --config Release
30-
id: linux
31-
os: ubuntu-latest
32-
setup-script: ubuntu
3339
- name: "macOS"
34-
os: macos-12
40+
id: macos
41+
os: macos-latest
42+
setup-script: osx
3543
env:
3644
CC: clang
3745
CMAKE_OPTIONS: -DREGEX_BACKEND=regcomp_l -DDEPRECATE_HARD=ON -DUSE_GSSAPI=ON -DBUILD_TESTS=OFF -DBUILD_EXAMPLES=OFF -DBUILD_CLI=ON -DCMAKE_BUILD_TYPE=Release
3846
CMAKE_BUILD_OPTIONS: --config Release
3947
PKG_CONFIG_PATH: /usr/local/opt/openssl/lib/pkgconfig
40-
id: macos
41-
setup-script: osx
4248
- name: "Windows (amd64, Visual Studio)"
43-
os: windows-2019
49+
id: windows
50+
os: windows-2022
51+
setup-script: win32
4452
env:
4553
ARCH: amd64
46-
CMAKE_GENERATOR: Visual Studio 16 2019
54+
CMAKE_GENERATOR: Visual Studio 17 2022
4755
CMAKE_OPTIONS: -A x64 -DDEPRECATE_HARD=ON -DBUILD_TESTS=OFF -DBUILD_EXAMPLES=OFF -DBUILD_CLI=ON -DCMAKE_BUILD_TYPE=Release
4856
CMAKE_BUILD_OPTIONS: --config Release
49-
id: windows
50-
setup-script: win32
5157
fail-fast: false
5258
name: "Benchmark ${{ matrix.platform.name }}"
5359
env: ${{ matrix.platform.env }}
@@ -62,21 +68,42 @@ jobs:
6268
run: source/ci/setup-${{ matrix.platform.setup-script }}-benchmark.sh
6369
shell: bash
6470
if: matrix.platform.setup-script != ''
71+
- name: Clone resource repositories
72+
run: |
73+
mkdir resources
74+
git clone --bare https://github.com/git/git resources/git
75+
git clone --bare https://github.com/torvalds/linux resources/linux
6576
- name: Build
6677
run: |
6778
mkdir build && cd build
6879
../source/ci/build.sh
6980
shell: bash
7081
- name: Benchmark
7182
run: |
83+
export BENCHMARK_GIT_REPOSITORY="$(pwd)/resources/git"
84+
# avoid linux temporarily; the linux blame benchmarks are simply
85+
# too slow to use
86+
# export BENCHMARK_LINUX_REPOSITORY="$(pwd)/resources/linux"
87+
7288
if [[ "$(uname -s)" == MINGW* ]]; then
7389
GIT2_CLI="$(cygpath -w $(pwd))\\build\\Release\\git2"
7490
else
7591
GIT2_CLI="$(pwd)/build/git2"
7692
fi
7793
94+
if [ "${{ github.event.inputs.suite }}" != "" ]; then
95+
SUITE_FLAG="--suite ${{ github.event.inputs.suite }}"
96+
fi
97+
98+
if [ "${{ github.event.inputs.debug }}" = "true" ]; then
99+
DEBUG_FLAG="--debug"
100+
fi
101+
78102
mkdir benchmark && cd benchmark
79-
../source/tests/benchmarks/benchmark.sh --baseline-cli "git" --cli "${GIT2_CLI}" --name libgit2 --json benchmarks.json --zip benchmarks.zip
103+
../source/tests/benchmarks/benchmark.sh \
104+
${SUITE_FLAG} ${DEBUG_FLAG} \
105+
--baseline-cli "git" --cli "${GIT2_CLI}" --name libgit2 \
106+
--json benchmarks.json --zip benchmarks.zip
80107
shell: bash
81108
- name: Upload results
82109
uses: actions/upload-artifact@v4
@@ -89,7 +116,7 @@ jobs:
89116
publish:
90117
name: Publish results
91118
needs: [ build ]
92-
if: ${{ always() && github.repository == 'libgit2/libgit2' }}
119+
if: always() && github.repository == 'libgit2/libgit2' && github.event_name == 'schedule'
93120
runs-on: ubuntu-latest
94121
steps:
95122
- name: Check out benchmark repository

.github/workflows/experimental.yml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ jobs:
3737
CMAKE_OPTIONS: -DUSE_HTTPS=OpenSSL -DDEPRECATE_HARD=ON -DUSE_LEAK_CHECKER=valgrind -DUSE_GSSAPI=ON -DUSE_SSH=ON -DEXPERIMENTAL_SHA256=ON
3838
- name: "macOS (SHA256)"
3939
id: macos-sha256
40-
os: macos-12
40+
os: macos-13
4141
setup-script: osx
4242
env:
4343
CC: clang
@@ -48,13 +48,15 @@ jobs:
4848
SKIP_NEGOTIATE_TESTS: true
4949
- name: "Windows (SHA256, amd64, Visual Studio)"
5050
id: windows-sha256
51-
os: windows-2019
51+
os: windows-2022
5252
env:
5353
ARCH: amd64
54-
CMAKE_GENERATOR: Visual Studio 16 2019
54+
CMAKE_GENERATOR: Visual Studio 17 2022
5555
CMAKE_OPTIONS: -A x64 -DWIN32_LEAKCHECK=ON -DDEPRECATE_HARD=ON -DEXPERIMENTAL_SHA256=ON
5656
SKIP_SSH_TESTS: true
5757
SKIP_NEGOTIATE_TESTS: true
58+
# TODO: this is a temporary removal
59+
SKIP_GITDAEMON_TESTS: true
5860
fail-fast: false
5961
env: ${{ matrix.platform.env }}
6062
runs-on: ${{ matrix.platform.os }}

.github/workflows/main.yml

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ jobs:
4242
name: noble
4343
env:
4444
CC: clang
45-
CMAKE_OPTIONS: -DUSE_HTTPS=mbedTLS -DUSE_SHA1=HTTPS -DREGEX_BACKEND=pcre -DDEPRECATE_HARD=ON -DUSE_LEAK_CHECKER=valgrind -DUSE_GSSAPI=ON -DUSE_SSH=exec
45+
CMAKE_OPTIONS: -DUSE_HTTPS=mbedTLS -DUSE_SHA1=HTTPS -DREGEX_BACKEND=pcre -DDEPRECATE_HARD=ON -DUSE_LEAK_CHECKER=valgrind -DUSE_GSSAPI=ON -DUSE_SSH=exec -DUSE_HTTP_PARSER=http-parser
4646
CMAKE_GENERATOR: Ninja
4747
- name: "Linux (Xenial, GCC, OpenSSL, OpenSSH)"
4848
id: xenial-gcc-openssl
@@ -64,7 +64,7 @@ jobs:
6464
CMAKE_OPTIONS: -DUSE_HTTPS=mbedTLS -DUSE_SHA1=HTTPS -DDEPRECATE_HARD=ON -DUSE_LEAK_CHECKER=valgrind -DUSE_GSSAPI=ON -DUSE_SSH=libssh2
6565
- name: "macOS"
6666
id: macos
67-
os: macos-12
67+
os: macos-13
6868
setup-script: osx
6969
env:
7070
CC: clang
@@ -75,31 +75,31 @@ jobs:
7575
SKIP_NEGOTIATE_TESTS: true
7676
- name: "Windows (amd64, Visual Studio, Schannel)"
7777
id: windows-amd64-vs
78-
os: windows-2019
78+
os: windows-2022
7979
setup-script: win32
8080
env:
8181
ARCH: amd64
82-
CMAKE_GENERATOR: Visual Studio 16 2019
82+
CMAKE_GENERATOR: Visual Studio 17 2022
8383
CMAKE_OPTIONS: -A x64 -DWIN32_LEAKCHECK=ON -DDEPRECATE_HARD=ON -DUSE_HTTPS=Schannel -DUSE_SSH=ON -DCMAKE_PREFIX_PATH=D:\Temp\libssh2
8484
BUILD_PATH: C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Program Files (x86)\CMake\bin;D:\Temp\libssh2\bin
8585
BUILD_TEMP: D:\Temp
8686
SKIP_SSH_TESTS: true
8787
SKIP_NEGOTIATE_TESTS: true
8888
- name: "Windows (x86, Visual Studio, WinHTTP)"
8989
id: windows-x86-vs
90-
os: windows-2019
90+
os: windows-2022
9191
setup-script: win32
9292
env:
9393
ARCH: x86
94-
CMAKE_GENERATOR: Visual Studio 16 2019
94+
CMAKE_GENERATOR: Visual Studio 17 2022
9595
CMAKE_OPTIONS: -A Win32 -DWIN32_LEAKCHECK=ON -DDEPRECATE_HARD=ON -DUSE_SHA1=HTTPS -DUSE_BUNDLED_ZLIB=ON -DUSE_SSH=ON -DCMAKE_PREFIX_PATH=D:\Temp\libssh2
9696
BUILD_PATH: C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Program Files (x86)\CMake\bin;D:\Temp\libssh2\bin
9797
BUILD_TEMP: D:\Temp
9898
SKIP_SSH_TESTS: true
9999
SKIP_NEGOTIATE_TESTS: true
100100
- name: "Windows (amd64, mingw, WinHTTP)"
101101
id: windows-amd64-mingw
102-
os: windows-2019
102+
os: windows-2022
103103
setup-script: mingw
104104
env:
105105
ARCH: amd64
@@ -111,7 +111,7 @@ jobs:
111111
SKIP_NEGOTIATE_TESTS: true
112112
- name: "Windows (x86, mingw, Schannel)"
113113
id: windows-x86-mingw
114-
os: windows-2019
114+
os: windows-2022
115115
setup-script: mingw
116116
env:
117117
ARCH: x86
@@ -132,7 +132,7 @@ jobs:
132132
env:
133133
CC: clang
134134
CFLAGS: -fsanitize=memory -fsanitize-memory-track-origins=2 -fsanitize-blacklist=/home/libgit2/source/script/sanitizers.supp -fno-optimize-sibling-calls -fno-omit-frame-pointer
135-
CMAKE_OPTIONS: -DCMAKE_PREFIX_PATH=/usr/local/msan -DUSE_HTTPS=mbedTLS -DUSE_SHA1=HTTPS -DREGEX_BACKEND=pcre -DDEPRECATE_HARD=ON -DUSE_BUNDLED_ZLIB=ON -DUSE_SSH=ON
135+
CMAKE_OPTIONS: -DCMAKE_C_EXTENSIONS=ON -DCMAKE_PREFIX_PATH=/usr/local/msan -DUSE_HTTPS=mbedTLS -DUSE_SHA1=HTTPS -DREGEX_BACKEND=pcre -DDEPRECATE_HARD=ON -DUSE_BUNDLED_ZLIB=ON -DUSE_SSH=ON
136136
CMAKE_GENERATOR: Ninja
137137
SKIP_SSH_TESTS: true
138138
SKIP_NEGOTIATE_TESTS: true
@@ -240,7 +240,7 @@ jobs:
240240
runs-on: ubuntu-latest
241241
steps:
242242
- name: Download test results
243-
uses: actions/download-artifact@v3
243+
uses: actions/download-artifact@v4
244244
- name: Generate test summary
245245
uses: test-summary/action@v2
246246
with:

.github/workflows/nightly.yml

Lines changed: 41 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ jobs:
4343
name: noble
4444
env:
4545
CC: clang
46-
CMAKE_OPTIONS: -DUSE_HTTPS=mbedTLS -DUSE_SHA1=HTTPS -DREGEX_BACKEND=pcre -DDEPRECATE_HARD=ON -DUSE_LEAK_CHECKER=valgrind -DUSE_GSSAPI=ON -DUSE_SSH=exec
46+
CMAKE_OPTIONS: -DUSE_HTTPS=mbedTLS -DUSE_SHA1=HTTPS -DREGEX_BACKEND=pcre -DDEPRECATE_HARD=ON -DUSE_LEAK_CHECKER=valgrind -DUSE_GSSAPI=ON -DUSE_SSH=exec -DUSE_HTTP_PARSER=http-parser
4747
CMAKE_GENERATOR: Ninja
4848
- name: "Linux (Xenial, GCC, OpenSSL, OpenSSH)"
4949
id: xenial-gcc-openssl
@@ -65,7 +65,7 @@ jobs:
6565
CMAKE_OPTIONS: -DUSE_HTTPS=mbedTLS -DUSE_SHA1=HTTPS -DDEPRECATE_HARD=ON -DUSE_LEAK_CHECKER=valgrind -DUSE_GSSAPI=ON -DUSE_SSH=libssh2
6666
- name: "macOS"
6767
id: macos
68-
os: macos-12
68+
os: macos-13
6969
setup-script: osx
7070
env:
7171
CC: clang
@@ -74,33 +74,43 @@ jobs:
7474
PKG_CONFIG_PATH: /usr/local/opt/openssl/lib/pkgconfig
7575
SKIP_SSH_TESTS: true
7676
SKIP_NEGOTIATE_TESTS: true
77+
- name: "iOS"
78+
id: ios
79+
os: macos-13
80+
setup-script: ios
81+
env:
82+
CC: clang
83+
CMAKE_OPTIONS: -DBUILD_TESTS=OFF -DDEPRECATE_HARD=ON -DUSE_LEAK_CHECKER=leaks -DUSE_GSSAPI=ON -DCMAKE_TOOLCHAIN_FILE=../ios.toolchain.cmake -DCMAKE_SYSTEM_NAME=iOS -DPLATFORM=OS64
84+
CMAKE_GENERATOR: Ninja
85+
PKG_CONFIG_PATH: /usr/local/opt/openssl/lib/pkgconfig
86+
SKIP_TESTS: true # Cannot exec iOS app on macOS
7787
- name: "Windows (amd64, Visual Studio, Schannel)"
7888
id: windows-amd64-vs
79-
os: windows-2019
89+
os: windows-2022
8090
setup-script: win32
8191
env:
8292
ARCH: amd64
83-
CMAKE_GENERATOR: Visual Studio 16 2019
93+
CMAKE_GENERATOR: Visual Studio 17 2022
8494
CMAKE_OPTIONS: -A x64 -DWIN32_LEAKCHECK=ON -DDEPRECATE_HARD=ON -DUSE_HTTPS=Schannel -DUSE_SSH=ON -DCMAKE_PREFIX_PATH=D:\Temp\libssh2
8595
BUILD_PATH: C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Program Files (x86)\CMake\bin;D:\Temp\libssh2\bin
8696
BUILD_TEMP: D:\Temp
8797
SKIP_SSH_TESTS: true
8898
SKIP_NEGOTIATE_TESTS: true
8999
- name: "Windows (x86, Visual Studio, WinHTTP)"
90100
id: windows-x86-vs
91-
os: windows-2019
101+
os: windows-2022
92102
setup-script: win32
93103
env:
94104
ARCH: x86
95-
CMAKE_GENERATOR: Visual Studio 16 2019
105+
CMAKE_GENERATOR: Visual Studio 17 2022
96106
CMAKE_OPTIONS: -A Win32 -DWIN32_LEAKCHECK=ON -DDEPRECATE_HARD=ON -DUSE_SHA1=HTTPS -DUSE_BUNDLED_ZLIB=ON -DUSE_SSH=ON -DCMAKE_PREFIX_PATH=D:\Temp\libssh2
97107
BUILD_PATH: C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Program Files (x86)\CMake\bin;D:\Temp\libssh2\bin
98108
BUILD_TEMP: D:\Temp
99109
SKIP_SSH_TESTS: true
100110
SKIP_NEGOTIATE_TESTS: true
101111
- name: "Windows (amd64, mingw, WinHTTP)"
102112
id: windows-amd64-mingw
103-
os: windows-2019
113+
os: windows-2022
104114
setup-script: mingw
105115
env:
106116
ARCH: amd64
@@ -112,7 +122,7 @@ jobs:
112122
SKIP_NEGOTIATE_TESTS: true
113123
- name: "Windows (x86, mingw, Schannel)"
114124
id: windows-x86-mingw
115-
os: windows-2019
125+
os: windows-2022
116126
setup-script: mingw
117127
env:
118128
ARCH: x86
@@ -131,9 +141,9 @@ jobs:
131141
container:
132142
name: noble
133143
env:
134-
CC: clang-17
144+
CC: clang
135145
CFLAGS: -fsanitize=memory -fsanitize-memory-track-origins=2 -fsanitize-blacklist=/home/libgit2/source/script/sanitizers.supp -fno-optimize-sibling-calls -fno-omit-frame-pointer
136-
CMAKE_OPTIONS: -DCMAKE_PREFIX_PATH=/usr/local/msan -DUSE_HTTPS=mbedTLS -DUSE_SHA1=HTTPS -DREGEX_BACKEND=pcre -DDEPRECATE_HARD=ON -DUSE_BUNDLED_ZLIB=ON -DUSE_SSH=ON
146+
CMAKE_OPTIONS: -DCMAKE_C_EXTENSIONS=ON -DCMAKE_PREFIX_PATH=/usr/local/msan -DUSE_HTTPS=mbedTLS -DUSE_SHA1=HTTPS -DREGEX_BACKEND=pcre -DDEPRECATE_HARD=ON -DUSE_BUNDLED_ZLIB=ON -DUSE_SSH=ON
137147
CMAKE_GENERATOR: Ninja
138148
SKIP_SSH_TESTS: true
139149
SKIP_NEGOTIATE_TESTS: true
@@ -146,7 +156,7 @@ jobs:
146156
container:
147157
name: noble
148158
env:
149-
CC: clang-17
159+
CC: clang
150160
CFLAGS: -fsanitize=undefined,nullability -fno-sanitize-recover=undefined,nullability -fsanitize-blacklist=/home/libgit2/source/script/sanitizers.supp -fno-optimize-sibling-calls -fno-omit-frame-pointer
151161
CMAKE_OPTIONS: -DCMAKE_PREFIX_PATH=/usr/local -DUSE_HTTPS=OpenSSL -DUSE_SHA1=HTTPS -DREGEX_BACKEND=pcre -DDEPRECATE_HARD=ON -DUSE_BUNDLED_ZLIB=ON -DUSE_SSH=ON
152162
CMAKE_GENERATOR: Ninja
@@ -161,7 +171,7 @@ jobs:
161171
container:
162172
name: noble
163173
env:
164-
CC: clang-17
174+
CC: clang
165175
CFLAGS: -fsanitize=thread -fno-optimize-sibling-calls -fno-omit-frame-pointer
166176
CMAKE_OPTIONS: -DCMAKE_PREFIX_PATH=/usr/local -DUSE_HTTPS=OpenSSL -DUSE_SHA1=HTTPS -DREGEX_BACKEND=pcre -DDEPRECATE_HARD=ON -DUSE_BUNDLED_ZLIB=ON -DUSE_SSH=ON
167177
CMAKE_GENERATOR: Ninja
@@ -314,10 +324,10 @@ jobs:
314324
SKIP_NEGOTIATE_TESTS: true
315325
- name: "Windows (no mmap)"
316326
id: windows-nommap
317-
os: windows-2019
327+
os: windows-2022
318328
env:
319329
ARCH: amd64
320-
CMAKE_GENERATOR: Visual Studio 16 2019
330+
CMAKE_GENERATOR: Visual Studio 17 2022
321331
CFLAGS: -DNO_MMAP
322332
CMAKE_OPTIONS: -A x64 -DDEPRECATE_HARD=ON
323333
SKIP_SSH_TESTS: true
@@ -346,7 +356,7 @@ jobs:
346356
os: ubuntu-latest
347357
- name: "macOS (SHA256)"
348358
id: macos-sha256
349-
os: macos-12
359+
os: macos-13
350360
setup-script: osx
351361
env:
352362
CC: clang
@@ -356,13 +366,24 @@ jobs:
356366
SKIP_NEGOTIATE_TESTS: true
357367
- name: "Windows (SHA256, amd64, Visual Studio)"
358368
id: windows-sha256
359-
os: windows-2019
369+
os: windows-2022
360370
env:
361371
ARCH: amd64
362-
CMAKE_GENERATOR: Visual Studio 16 2019
372+
CMAKE_GENERATOR: Visual Studio 17 2022
363373
CMAKE_OPTIONS: -A x64 -DWIN32_LEAKCHECK=ON -DDEPRECATE_HARD=ON -DEXPERIMENTAL_SHA256=ON
364374
SKIP_SSH_TESTS: true
365375
SKIP_NEGOTIATE_TESTS: true
376+
# TODO: this is a temporary removal
377+
SKIP_GITDAEMON_TESTS: true
378+
- name: "Linux (SHA256, Xenial, Clang, OpenSSL-FIPS)"
379+
id: linux-sha256-fips
380+
container:
381+
name: xenial
382+
env:
383+
CC: clang
384+
CMAKE_GENERATOR: Ninja
385+
CMAKE_OPTIONS: -DUSE_HTTPS=OpenSSL -DDEPRECATE_HARD=ON -DUSE_LEAK_CHECKER=valgrind -DUSE_GSSAPI=ON -DUSE_SSH=ON -DUSE_SHA1=OpenSSL-FIPS -DUSE_SHA256=OpenSSL-FIPS
386+
os: ubuntu-latest
366387
fail-fast: false
367388
env: ${{ matrix.platform.env }}
368389
runs-on: ${{ matrix.platform.os }}
@@ -419,7 +440,7 @@ jobs:
419440
runs-on: ubuntu-latest
420441
steps:
421442
- name: Download test results
422-
uses: actions/download-artifact@v3
443+
uses: actions/download-artifact@v4
423444
- name: Generate test summary
424445
uses: test-summary/action@v2
425446
with:
@@ -471,15 +492,15 @@ jobs:
471492

472493
# Initializes the CodeQL tools for scanning.
473494
- name: Initialize CodeQL
474-
uses: github/codeql-action/init@v2
495+
uses: github/codeql-action/init@v3
475496
with:
476497
languages: 'cpp'
477498

478499
- name: Build
479500
run: |
480501
mkdir build
481502
cd build
482-
cmake .. -DREGEX_BACKEND=pcre -DDEPRECATE_HARD=ON -DUSE_BUNDLED_ZLIB=ON
503+
cmake .. -DDEPRECATE_HARD=ON -DUSE_BUNDLED_ZLIB=ON
483504
cmake --build .
484505
485506
- name: Perform CodeQL Analysis

0 commit comments

Comments
 (0)