1
1
mirror of https://github.com/Byron/gitoxide synced 2025-10-05 16:42:40 +02:00
Files
gitoxide/SHORTCOMINGS.md
Eliah Kagan 1744927d15 doc: Copyedit shortcomings documentation
- Add h1 heading (as most other top-level .md files have them).
- Remove a misplaced empty h4 sub-heading.
- Fix spelling, and slightly adjust hyphenation for clarity.
- Make capitalization consistent and capitalize "Git" in "Git LFS".
- If not a command or binary, replace "git" and "`git`" with "Git".
- Replace "Pack" with "`Pack`" since we're talking about the type.
- Make non-rendered aspects of Markdown code style more consistent.
2025-05-08 16:22:49 -04:00

2.0 KiB

Shortcomings

This file is for tracking features that are less well implemented or less powerful than their Git counterparts for one reason or another.

gix-index

  • The link extension can be read, but won't be written. This effectively disables the use of a split index once a mutating operation is run on it with gitoxide.

gix-protocol

  • Fetches using protocol V1 and stateful connections, i.e. ssh, git, file, may hang
    • This can be fixed by making response parsing.
    • Note that this does not affect cloning, which works fine.

gix-pack

  • Packfiles use memory maps
    • Even though they are comfortable to use and fast, they squelch IO errors.
    • Potential remedy: We could generalize the Pack to make it possible to work on in-memory buffers directly. That way, one would initialize a Pack by reading the whole file into memory, thus not squelching IO errors at the expense of latency as well as memory efficiency.
  • Packfiles cannot load files bigger than 2^31 or 2^32 on 32-bit systems
    • As these systems cannot address more memory than that.
    • Potential remedy: implement a sliding window to map and unmap portions of the file as needed.
      • However, those who need to access big packs on these systems would rather resort to Git itself, allowing our implementation to be simpler and potentially more performant.
  • Objects larger than 32 bits cannot be loaded on 32-bit systems
    • In-memory representations objects cannot handle objects greater than the amount of addressable memory.
    • This will not affect Git LFS though.

gix

  • Object replacements are read once upon opening the repository from their refs and changes to these won't be picked up.

gix-url

  • gix-url might be more restrictive than what Git allows as for the most part, it uses a browser grade URL parser.
    • Thus far there is no proof for this, and as potential remedy we could certainly re-implement exactly what Git does to handle its URLs.