Skip to content

Commit 3095675

Browse files
author
Paulo Gomes
authored
Merge pull request #961 from pjbgf/release-0.32.0
Release 0.32.0
2 parents 0b8e663 + 5c0d9bd commit 3095675

File tree

2 files changed

+51
-2
lines changed

2 files changed

+51
-2
lines changed

CHANGELOG.md

+49
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,55 @@
22

33
All notable changes to this project are documented in this file.
44

5+
## 0.32.0
6+
7+
**Release date:** 2022-11-17
8+
9+
This prerelease comes with a major refactoring of the controller's Git operations.
10+
The `go-git` implementation now supports all Git servers, including
11+
Azure DevOps, which previously was only supported by `libgit2`.
12+
13+
This version initiates the soft deprecation of the `libgit2` implementation.
14+
The motivation for removing support for `libgit2` being:
15+
- Reliability: over the past months we managed to substantially reduce the
16+
issues users experienced, but there are still crashes happening when the controller
17+
runs over longer periods of time, or when under intense GC pressure.
18+
- Performance: due to the inherit nature of `libgit2` implementation, which
19+
is a C library called via CGO through `git2go`, it will never perform as well as
20+
a pure Go implementations. At scale, memory pressure insues which then triggers
21+
the reliability issues above.
22+
- Lack of Shallow Clone Support.
23+
- Maintainability: supporting two Git implementations is a big task, even more
24+
so when one of them is in a complete different tech stack. Given its nature, to
25+
support `libgit2`, we have to maintain an additional repository. Statically built
26+
`libgit2` libraries need to be cross-compiled for all our supported platforms.
27+
And a lot of "unnecessary" code has to be in place to make building, testing and
28+
fuzzing work seamlessly.
29+
30+
As a result the field `spec.gitImplementation` is ignored and the
31+
reconciliations will use `go-git`. To opt-out from this behaviour, start
32+
the controller with: `--feature-gates=ForceGoGitImplementation=false`.
33+
34+
Users having any issues with `go-git` should report it to the Flux team,
35+
so any issues can be resolved before support for `libgit2` is completely
36+
removed from the codebase.
37+
38+
Improvements:
39+
- Refactor Git operations and introduce go-git support for Azure DevOps and AWS CodeCommit
40+
[#944](https://github.com/fluxcd/source-controller/pull/944)
41+
- Use Flux Event API v1beta1
42+
[#952](https://github.com/fluxcd/source-controller/pull/952)
43+
- gogit: Add new ForceGoGitImplementation FeatureGate
44+
[#945](https://github.com/fluxcd/source-controller/pull/945)
45+
- Remove nsswitch.conf creation from Dockerfile
46+
[#958](https://github.com/fluxcd/source-controller/pull/958)
47+
- Update dependencies
48+
[#960](https://github.com/fluxcd/source-controller/pull/960)
49+
[#950](https://github.com/fluxcd/source-controller/pull/950)
50+
[#959](https://github.com/fluxcd/source-controller/pull/959)
51+
- Upgrade to azure-sdk-for-go/storage/azblob v0.5.1
52+
[#931](https://github.com/fluxcd/source-controller/pull/931)
53+
554
## 0.31.0
655

756
**Release date:** 2022-10-21

docs/spec/v1beta2/gitrepositories.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -385,8 +385,8 @@ resume.
385385

386386
### Git implementation
387387

388-
> **_NOTE:_** `libgit2` is being deprecated. When it is used the controllers
389-
are known to panic over long periods of time, or when under high GC pressure.
388+
**Note:** `libgit2` is being deprecated, as its use is known to cause controllers
389+
to panic when running over long periods of time, or when under high GC pressure.
390390
A new opt-out feature gate `ForceGoGitImplementation` was introduced, which will
391391
use `go-git` regardless of the value defined at `.spec.gitImplementation`.
392392
This can be disabled by starting the controller with the additional flag below:

0 commit comments

Comments
 (0)