Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
fd713e7
Migrate SwiftGit2 project to Swift Package Manager
mbernson Feb 29, 2024
9c85a90
Build and test on macOS and iOS
mbernson Mar 2, 2024
ac324ac
Code style fix: change class SwiftGit2 to caseless enum
mbernson Aug 16, 2024
baa2b43
Add libgit2 as a git submodule
mbernson Oct 18, 2024
f693cdb
Add back CI test matrix
mbernson Oct 18, 2024
b360c05
Add Mac Catalyst platform
mbernson Oct 18, 2024
995ae7d
Update readme
mbernson Oct 18, 2024
a6190fc
Set macOS deployment target to 10.13
mbernson Nov 18, 2024
20b46e7
Fix compilation on macOS 10.13+ and Xcode 15 (#210)
hannesa2 Nov 18, 2024
f4ba5cd
Shell improvement (#215)
hannesa2 Nov 19, 2024
ca3d5ab
Merge remote-tracking branch 'upstream/master' into swift-package-man…
mbernson Nov 19, 2024
89b0870
Use an arm64 runner for CI (#212)
hannesa2 Dec 6, 2024
8526e58
Rename libgit2 import back to Clibgit2
mbernson Dec 31, 2024
6d29624
Update test repo URL
mbernson Dec 31, 2024
ed77676
Merge remote-tracking branch 'upstream/master' into swift-package-man…
mbernson Dec 31, 2024
be0600a
Convert init and shutdown to freestanding functions
mbernson Mar 7, 2025
deb46a1
Fix Xcode selection on CI
mbernson Mar 7, 2025
0505abc
Fix build with XCode 16 (#216)
hannesa2 Apr 29, 2025
2e17a86
Merge branch 'master' into swift-package-manager
DivineDominion Apr 29, 2025
9c2b20a
Update BuildPR.yml
DivineDominion Apr 29, 2025
1fd5721
Fix build on macOS 15 with Xcode 16
mbernson Apr 29, 2025
412d1de
Use mxcl/xcodebuild GitHub Action
mbernson Apr 30, 2025
e37a385
Add notice to README regarding SPM migration
mbernson Sep 24, 2025
c14e0fb
Use the correct function names in README
mbernson Sep 24, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
64 changes: 41 additions & 23 deletions .github/workflows/BuildPR.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: pull request
name: Tests

on:
push:
Expand All @@ -7,35 +7,53 @@ on:
pull_request:

jobs:
build:
build-macos:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
xcode: [ Xcode_14.1.0, Xcode_13.3 ]
os: [ macos-12 ]
architecture: [ x86_64 ]
# include:
# - xcode: Xcode
# os: ARM64
# architecture: arm64
xcode:
# The '^' stands for a semantic version range
- ^15
- ^16
os:
- macos-14
- macos-15
steps:
- name: ls Xcode
run: ls -la /Applications/Xcode*
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: recursive
- name: Set XCode Version
run: sudo xcode-select -s /Applications/${{ matrix.xcode }}.app
- name: schemes list
run: xcodebuild -workspace SwiftGit2.xcworkspace -list
- name: update_libgit2
run: script/update_libgit2
- name: bootstrap
run: script/bootstrap
# - name: cibuild
# run: script/cibuild
- name: Build project
run: xcodebuild -workspace SwiftGit2.xcworkspace -scheme SwiftGit2-OSX -archivePath ./SwiftGit2 archive ARCHS="${{ matrix.architecture }}"
- name: Build and test on macOS
uses: mxcl/xcodebuild@v3
with:
xcode: ${{ matrix.xcode }}
platform: macOS

build-ios:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
xcode:
- ^16
os:
- macos-15
platform:
- iOS
platform-version:
# The '^' stands for a semantic version range
- ^18
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: recursive
- name: Build and test on iOS
uses: mxcl/xcodebuild@v3
with:
platform-version: ${{ matrix.platform-version }}
platform: ${{ matrix.platform }}
xcode: ${{ matrix.xcode }}
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
.vscode/
.build/
.swiftpm/

# Xcode
#
Expand Down
22 changes: 2 additions & 20 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,21 +1,3 @@
[submodule "External/libgit2"]
path = External/libgit2
[submodule "libgit2"]
path = libgit2
url = https://github.com/libgit2/libgit2.git
[submodule "Carthage/Checkouts/Nimble"]
path = Carthage/Checkouts/Nimble
url = https://github.com/Quick/Nimble.git
[submodule "Carthage/Checkouts/Quick"]
path = Carthage/Checkouts/Quick
url = https://github.com/Quick/Quick.git
[submodule "Carthage/Checkouts/xcconfigs"]
path = Carthage/Checkouts/xcconfigs
url = https://github.com/jspahrsummers/xcconfigs.git
[submodule "Carthage/Checkouts/ZipArchive"]
path = Carthage/Checkouts/ZipArchive
url = https://github.com/ZipArchive/ZipArchive.git
[submodule "External/libssh2"]
path = External/libssh2
url = https://github.com/libssh2/libssh2.git
[submodule "External/openssl"]
path = External/openssl
url = https://github.com/openssl/openssl.git
30 changes: 0 additions & 30 deletions .travis.yml

This file was deleted.

4 changes: 0 additions & 4 deletions Cartfile.private

This file was deleted.

4 changes: 0 additions & 4 deletions Cartfile.resolved

This file was deleted.

1 change: 0 additions & 1 deletion Carthage/Checkouts/Nimble
Submodule Nimble deleted from 7a46a5
1 change: 0 additions & 1 deletion Carthage/Checkouts/Quick
Submodule Quick deleted from 09b3be
1 change: 0 additions & 1 deletion Carthage/Checkouts/ZipArchive
Submodule ZipArchive deleted from f3379e
1 change: 0 additions & 1 deletion Carthage/Checkouts/xcconfigs
Submodule xcconfigs deleted from 4ced0a
1 change: 0 additions & 1 deletion External/libcrypto.a

This file was deleted.

1 change: 0 additions & 1 deletion External/libgit2
Submodule libgit2 deleted from 7f4fa1
1 change: 0 additions & 1 deletion External/libssh2
Submodule libssh2 deleted from 30e9c1
1 change: 0 additions & 1 deletion External/libssl.a

This file was deleted.

1 change: 0 additions & 1 deletion External/openssl
Submodule openssl deleted from e71ebf
50 changes: 50 additions & 0 deletions Package.resolved

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

126 changes: 126 additions & 0 deletions Package.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
// swift-tools-version: 5.9

import PackageDescription

let package = Package(
name: "SwiftGit2",
platforms: [
.macOS(.v10_13),
.iOS("15.5"),
.tvOS(.v13),
.visionOS(.v1),
.macCatalyst(.v15),
],
products: [
.library(
name: "SwiftGit2",
targets: ["SwiftGit2"]
),
],
dependencies: [
.package(url: "https://github.com/Quick/Quick.git", from: "7.0.0"),
.package(url: "https://github.com/Quick/Nimble.git", from: "13.0.0"),
.package(url: "https://github.com/ZipArchive/ZipArchive.git", from: "2.5.5"),
],
targets: [
.target(
name: "SwiftGit2",
dependencies: ["Clibgit2"]
),
.testTarget(
name: "SwiftGit2Tests",
dependencies: ["SwiftGit2", "Clibgit2", "Quick", "Nimble", "ZipArchive"],
resources: [.copy("Fixtures")]
),
.target(
name: "Clibgit2",
path: "libgit2",
exclude: [
"deps/llhttp/CMakeLists.txt",
"deps/llhttp/LICENSE-MIT",
"deps/pcre/CMakeLists.txt",
"deps/pcre/COPYING",
"deps/pcre/LICENCE",
"deps/pcre/cmake",
"deps/pcre/config.h.in",
"deps/xdiff/CMakeLists.txt",
"deps/zlib/CMakeLists.txt",
"deps/zlib/LICENSE",
"src/libgit2/CMakeLists.txt",
"src/libgit2/config.cmake.in",
"src/libgit2/experimental.h.in",
"src/libgit2/git2.rc",
"src/util/CMakeLists.txt",
"src/util/git2_features.h.in",
"src/util/hash/builtin.c",
"src/util/hash/builtin.h",
"src/util/hash/collisiondetect.c",
"src/util/hash/collisiondetect.h",
"src/util/hash/openssl.c",
"src/util/hash/openssl.h",
"src/util/hash/win32.c",
"src/util/hash/win32.h",
"src/util/win32",
],
sources: [
"deps/llhttp",
"deps/pcre",
"deps/xdiff",
"deps/zlib",
"src/libgit2",
"src/util",
],
publicHeadersPath: "include",
cSettings: [
.unsafeFlags([
// Disable -fmodules flag. Clang finds (`struct entry`) in a different file (`search.h`).
"-fno-modules",
// Disable warning: "implicit conversion loses integer precision"
"-Wno-single-bit-bitfield-constant-conversion",
// Disable warning: "a function definition without a prototype is deprecated"
"-Wno-deprecated-non-prototype",
]),

.headerSearchPath("deps/llhttp"),
.headerSearchPath("deps/pcre"),
.headerSearchPath("deps/xdiff"),
.headerSearchPath("deps/zlib"),
.headerSearchPath("src/libgit2"),
.headerSearchPath("src/util"),

.define("LIBGIT2_NO_FEATURES_H"),
.define("GIT_ARCH_64", to: "1"),
.define("GIT_QSORT_BSD", to: "1"),
.define("GIT_IO_POLL", to: "1"),

// Git regex configuration
.define("GIT_REGEX_BUILTIN", to: "1"),
.define("PCRE_LINK_SIZE", to: "2"),
.define("SUPPORT_PCRE8", to: "1"),
.define("LINK_SIZE", to: "2"),
.define("PARENS_NEST_LIMIT", to: "250"),
.define("MATCH_LIMIT", to: "10000000"),
.define("MATCH_LIMIT_RECURSION", to: "10000000"),
.define("NEWLINE", to: "10"), // LF
.define("NO_RECURSE", to: "1"),
.define("POSIX_MALLOC_THRESHOLD", to: "10"),
.define("BSR_ANYCRLF", to: "0"),
.define("MAX_NAME_SIZE", to: "32"),
.define("MAX_NAME_COUNT", to: "10000"),

// Git SSH transport configuration
.define("GIT_SSH", to: "1"),
.define("GIT_SSH_EXEC", to: "1"),

// Git HTTPS transport configuration
.define("GIT_HTTPS", to: "1"),
.define("GIT_HTTPPARSER_BUILTIN", to: "1"),
.define("GIT_SECURE_TRANSPORT", to: "1"),

// Git cryptography configuration
.define("GIT_SHA1_COMMON_CRYPTO", to: "1"),
.define("GIT_SHA256_COMMON_CRYPTO", to: "1"),
]
),
]
)
Loading
Loading