[RFC] transition to gitoxide#112
Conversation
| cfg-if = "1" | ||
| enum-iterator = "0" | ||
| getset = "0" | ||
| git-repository = { version = "0.16.0", optional = true, default-features = false, git = "https://github.com/Byron/gitoxide", branch = "main" } |
There was a problem hiding this comment.
Note that his is only for the time being - when it's clear this PR should go ahead it will be switched to the published version on crates.io.
|
In the related ticket in the |
|
Note that given the communication with the
|
This PR shows how a first step towards transitioning to `gitoxide` could look like. It adds a `gitoxide` feature toggle which if set uses `gitoxide` to fill in all `git` related values. It works additively. The best way for me to see how useful `gitoxide` is for applications and libraries is to seek out mature projects that use `git2` and see how `gitoxide` fits in there. `vergen` was special as it brought the notion of MSRV support into [`gitoxide''s understanding of stability](https://github.com/Byron/gitoxide/blob/498072ea42dca7b9d00bedba42829bdac92195b9/STABILITY.md#L124) and required it to run on and work on various targets that aren't typically tested in its own CI. Users of `vergen` expect stability and compilation in a variety of environment and `gitoxide` wants to cater to that. - `gitoxide` is generally faster than `git2` and uses less system resources. - `gitoxide` aims to support all features of `git` focussing on correctness, usability and performance, in that order. - `gitoxide` supports a minimal pure Rust build. - In case of issues, one deals with only a single project, whereas with `git2` there is `libgit2` and `git2`. - `gitoxide` guarantees to hide breaking changes behind major/minor version bumps to never break downstream. Changing the MSRV is considered a breaking change. All this is described in the [Stability Guide](https://github.com/Byron/gitoxide/blob/498072ea42dca7b9d00bedba42829bdac92195b9/STABILITY.md). - The maintainers of `gitoxide` are happy to maintain the `gitoxide` integration until it's first major release. - after the transition period a major version bump for `vergen` is required to allow removing the `gitoxide` feature toggle, unless it should stay a no-op. - compile times for `gitoxide` are higher overall. - …there is probably more that I can't think of. What's missing is to obtain a worktree status, effectively a diff between index and worktree, to support the optional 'dirty' suffix in the semver description key. The above is a writeup of all I know about this transition, and I hope it can serve as foundation for figuring out how (or if) to proceed with this. Thanks for sharing your thoughts.
Maybe it's better to refer to a stable version from crates now.
|
Is there a chance for feedback here? If not I am happy to close this PR as well. |
|
@CraZySacX Is there anything that can be done to make progress here ? I would love to use vergen + gitoxide in my projects. |
|
Sorry for the delay here. Let me take a closer look at |
Last time the folks over at If you have any questions or suggestions, I will be happy to help. |
|
There is a bit of a nasty conflict resolution on this PR. I could work through it, but I think I'm going to go down this path instead:
As |
|
Thanks for taking the time to review the PR, it's much appreciated! The planned path forward looks sound. Implementing
|
Ok, will keep the command based implementation on regular |
|
I have published |
This PR shows how a first step towards transitioning to
gitoxidecould look like.It adds a
gitoxidefeature toggle which if set usesgitoxideto fill in allgitrelated values. It works additively.Motivation
The best way for me to see how useful
gitoxideis for applications and libraries is to seek out mature projects that usegit2and see howgitoxidefits in there.vergenwas special as it brought the notion of MSRV support into `gitoxide''s understanding ofstability and required it to run on and work on various targets that aren't typically tested in its own CI.
Users of
vergenexpect stability and compilation in a variety of environment andgitoxidewants to cater to that.Benefits for
vergento usegitoxidegitoxideis generally faster thangit2and uses less system resources.gitoxideaims to support all features ofgitfocussing correctness, usability and performance, in that order.gitoxidesupports a minimal pure Rust build.git2there islibgit2andgit2.gitoxideguarantees to hide breaking changes behind major/minor version bumps to never break downstream. Changing the MSRV is considered a breaking change. All this is described in the StabilityGuide.
gitoxideare happy to maintain thegitoxideintegration until it's first major release.Downsides
vergenis required to allow removing thegitoxidefeature toggle, unless it should stay a no-op.gitoxideare higher overall.What missing in
gitoxidefor feature parity withgit2What's missing is to obtain a worktree status, effectively a diff between index and worktree, to support the optional 'dirty' suffix in the semver description key.
Request for feedback
The above is a writeup of all I know about such a transition, and I hope it can serve as foundation for figuring out how to proceed with this. Even though I'd love this to be interesting for you, I would fully understand that it might not fit into the plans you have for
vergen- in any casegitoxidegot so much better merely by preparing for this RFC so I am happy either way.Thanks for sharing your thoughts.