You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This is a fun research project to potentially drive feature development one day to allow replacing git2 with gitoxide.
In order to migrate, not all features would have to be present at first at the cost of compiling both gitoxide and git2 (Something which probably should be avoided).
Features used
repository discovery
open repository (without discovery)
repository init with options
list submodules (like here for example) and open their repo. Assure worktree and submodule APIs are similar.
git gc (maybe, for registry) - note that this is shelled out to git, and it's about reducing the amount of pack files which we can already do pretty well I think, and loose objects could be included in the pack as well (even though undeltified)
respect fetch.unpackLimit to keep repositories clean (cargo runs gc occasionally as well)
Owned tree objects alongside their owning repository with 'static lifetime (maybe that kind of caching isn't required). They do this with unsafe though.
git checkout
local clones that hard-link files (and bypass the git protocol) as used in cargo git-dependency checkouts (worktrees would be preferred to me)
gitoxide must build (and be tested on) 32 bit systems
Shortcomings of gitoxide in comparison to git2
dependencies to binaries make it less usable on windows
depends on git binary for file:// protocol due to lack of native upload-pack functionality. Remedy is planned with Rust Foundation grant (stretch goal)
depends on ssh binary for ssh connection
Note that replacing clone/fetch related features is tracked in #449 .
Locations and purpose
cd cargo && rg git2:: -l
Potential issues
cargo supports 32bit system, which limits mmap to 2Gb usually. For now this is alright but one day cursor based pack access probably needs to be implemented (behind a feature toggle, of course, or automatically configured depending on arch)
The text was updated successfully, but these errors were encountered:
This is a fun research project to potentially drive feature development one day to allow replacing git2 with gitoxide.
In order to migrate, not all features would have to be present at first at the cost of compiling both gitoxide and git2 (Something which probably should be avoided).
Features used
worktree
andsubmodule
APIs are similar.git status
(requires index comparison with working tree and head to index)file
protocol #734git
, and it's about reducing the amount of pack files which we can already do pretty well I think, and loose objects could be included in the pack as well (even though undeltified)fetch.unpackLimit
to keep repositories clean (cargo
runs gc occasionally as well)git2::Cred::default()
)gitoxide
must build (and be tested on) 32 bit systemsShortcomings of
gitoxide
in comparison togit2
git
binary forfile://
protocol due to lack of nativeupload-pack
functionality. Remedy is planned with Rust Foundation grant (stretch goal)ssh
binary forssh
connectionNote that replacing clone/fetch related features is tracked in #449 .
Locations and purpose
cd cargo && rg git2:: -l
Potential issues
The text was updated successfully, but these errors were encountered: