Skip to content

SHA and Inflate abstractions

Compare
Choose a tag to compare
@samoht samoht released this 10 Aug 17:10
· 2034 commits to main since this release
  • Changes to the Search API:
    • Remove find_exn
    • the type t has a new case Tree_root to represent tree roots
    • the type path is now structured (not a list of strings anymore).
      this removes the confusing semantics of empty strings in paths.
  • Changes to the Global_graph API:
    • closure takes an optional full argument to work over
      commit objects only
    • All the arguments of pack are labelled and its result type
      has changed.
    • Add keys to return the topological sort of keys in the graph.
  • Improve the size of pack files received when fetching (#115)
    • advertise the fact that ocaml-git clients support ofs-delta
      and thin-pack
    • Compute a minimal set of haves to send to the server after
      the discovery phase, where we already know all the server
      references (#114)
  • Unpack shallow pack files after a fetch
  • Full support for shallow packs (#81)
  • During fetch, we now respect the "allow-reachable-sha1-in-want"
    server (non-)capability. A proper error is reported to the client
    if that's not the case.
  • Parametrize the codebase over the Inflate implementation. Useful
    to change the inflate algorithm (or to not use any at all, which
    would be what we want for big files and/or for efficient writes)
    and to simplify the port to other backends. Store.S implementations
    now expose their Inflate implementation.
  • Parametrize the codebase over the SHA implementation. Useful to change
    the SHA algorihm (the unix backend provides SHA256) or simplify the
    port to other backends (the mirage backend uses a pure OCaml implementation
    extracted from uuidm). Store.S implementations now expose their Digest
    implementation (#68)
  • Better sync API (#113)
    • Change the arguments of Sync.fetch
    • Remove Sync.clone
    • Add Sync.populate to be called after a fetch to properly populate
      the local Git repository (similar to what git clone does).
    • Add ogit clone --no-checkout and make ogit clone --bare more similar
      to the same git command.
  • Support Github http(s) URLs without .git (#111)
  • Add a dot_git optional parameter to Store.create to specify where
    the Git metadata should be stored (default is still <root>/.git). This
    is useful to properly support bare repositories (#110)
  • Full support for 32 bit platform (ie. continue the patch started in 1.6.2).
  • Rework the Git.Pack and Git.Pack_index API to speed-up random access.
  • Add a Git.SHA.Array module to work with contiguous arrays of SHA1.
  • Rename Git.SHA.lenght to Git.SHA.hex_length to avoid confusion.
  • Expose Git.SHA.of_short_hex to create short hashes. Git.SHA.of_hex now
    only accept 40 characters hexa-decimal strings.
  • Improve the output of ogit clone by showing progress when the pack file
    is downloaded and when the delta are resolved.