x-maintenance-intent (@hannesm, #648)ocaml-git (@hannesm, #650)paf (@dinosaure, #651)git-unix with mimic-happy-eyeballs.0.0.8 (@dinosaure, #642)ocaml-git to mirage-flow.4.0.0 (@hannesm, #634)unix as a dependency of some ocaml-git's targets (@dinosaure, b2288c2)have and want (@plangesd, @dinosaure, #626)done or a flush (@plangesd, #628)ack and handle empty request (@plangesd, @Julow, #629)http) when we clone (@dinosaure, @hannesm, #631)git.2.41.0+ (@metanivek, #622)batch_write (@dinosaure, #619)mirage-crypto-rng (@Zimmi48, #612)awa.0.2.0 (@hannesm, #613)ocaml-git (@Et7f3, #600, #473)Smart_git.Endpoint.of_string (@reynir, @dinosaure, #605, #604)main reference (#586, @hannesm, @dinosaure)git-paf with paf.0.2.0 (#587, @dinosaure)x509.0.16.2 which raise an explanation if it's a bad argument (#594, @hannesm, @dinosaure)bigarray-compat package and mmap (@dinosaure, @hannesm)ocaml-git with OCaml 5.00.0 (@dinosaure, @stedolan, #559)cmdliner.1.1.0 (@MisterDA, @dinosaure, #558)reset function and properly delete PACK files (@dinosaure, @patricoferris, @dinakajoy, #561)guit (@maiste, @dinosaure, #560)happy-eyeballs layer needed by MirageOS into mimic.0.0.5 (@dinosaure, #563)git-mirage with awa.0.1.0 (@hannesm, #553)git into tests (@dinosaure, #532, #554)Store.read_opt for finding Git object (@CraigFe, #551)git-mirage-http and git-mirage-ssh about the authenticator (@dinosaure, @hannesm, #538, #555)mirage-protocols dependency (@hannesm, #537)mirage-protocols.7.0.0 (@dinosaure, #541)Lwt.pause instead of Lwt_unix.yield (@dinosaure, #542)logs.fmt (@MisterDA, #544)fmt deprecation functions (@dinosaure, #534)dns (6.0.0) (@dinosaure, @hannesm, #531)paf.cohttp dependency from MirageOS stack (@dinosaure, #519)Cstruct.length instead of Cstruct.len (@dinosaure. #522)tls.0.14.0 (@dinosaure, #529)git-unix (@dinosaure, @sternenseemann, #488)git-unix (@dinosaure, @jnavila, #490, #489)curl (@dinosaure, #491)Git_unix.ctx (@dinosaure, #493)carton.0.4.1 and git (@dinosaure, #493)Git_unix to start a connection (@dinosaure, #498)fmt and logs on several dune files (@CraigFe, @dinosaure, #499)search.ml (@dinosaure, #501)alcotest.1.4.0 (@dinosaure, #504)mimic from the distribution (now available on https://github.com/dinosaure/mimic) (@dinosaure, #505)non-stream API of decompress for loose objects (@clecat, @dinosaure, #502)git-paf and paf.0.0.2 instead of CoHTTP (@dinosaure, #508)cstruct_append/O_TRUNC (#481, @dinosaure)find_common.ml (#465, @ulugbekna, @dinosaure)Uri.t (#469, @dinosaure)breaking changes Commit object must have a double LF to separate the header and the body. This format changes hashes of commit and invalid old commits generated by ocaml-git. It seems that on the Git side, the format is not fully respected - and it's why Git did not complain about that on our tests for a long time.
However, git fsck does this check and an HTTP push to GitHub run git fsck at the end. To be able to push (or run our unikernel over HTTP/S), we must generate right commits.
So, we advise users to make a fake commit with Git (git commit --allow-empty -m.) on repositories used by ocaml-git and fetch it with depth:1. Otherwise, this new version of ocaml-git will refute older commits - due to the inherent isomorphism between decoder/encoder in ocaml-git.
For Irmin users, this breaking changes does not change anything when irmin reformats correctly the message to put the second LF. However, a breaking change exists on the API level when the Git commit (and a Git tag) expects a string option now (instead of a simple `string).
For more details and tests, see #470 (@dinosaure)
dune subst (@dinosaure, @kit-ty-kate, #446)Lwt_io module intests (@dinosaure, @ulugbekna, #447)Mirage_flow.S (@dinosaure, #450)ctx (@dinosaure, @hannesm, #452)mmap (see carton) (@dinosaure, #454)git-mirage support with functoria (@dinosaure, #459)git-unix and PACK files location (@dinosaure, #444, #443)git) correctly (add an HEAD reference, at least) (@dinosaure, #443)ocaml-git (@dinosaure, #395)git-cohttp-unix and git-cohttp-mirage) and update to the last version of CoHTTP (@hannesm, #407)Cstruct_append implementation (@dinosaure, #401)conduit.3.0.0 (@dinosaure, #408) (deleted by the integration of mimic)ocurl (@dinosaure, #410)git-mirage package (@hannesm, #411)conduit.3.0.0 (@dinosaure, #412)ogit-fetch as an example (@ulugbekna, #406)nss to git-nss (@dinosaure, #415)git-nss (@ulugbekna, #416)Fmt functions (@ulugbekna, #421)prelude argument by uses_git_transport (@ulugbekna, #423)fmt.0.8.7 (@dinosaure, #425)git-nss (@dinosaure, #427)conduit.3.0.0 and replace it by mimic (@dinosaure, #428)verify function on fetch and push (@dinosaure, #429)pin-depends on awa (@dinosaure, #431)encoder.0.5 (#393, @dinosaure)angstrom.0.14.0 (#384, @sternenseemann)Resolver_mirage.Make_with_stack (#389, @talex5)mirage-crypto instead nocrypto (#382, @hannesm)dune package (@kit-ty-kate)git to use, at least, checkseum.0.0.9 (#373, @dinosaure)stdlib-shims virtual package (@dinosaure, #372)pp_fetch_one and pp_update_and_create (@dinosaure, @pascutto, @samoht, #370)git-mirage depends on conduit-mirage instead mirage-conduit (@dinosaure, #371)mirage-fs-unix useless dependencydecompress.0.9.0decompress (@dinosaure, #366)mmap package (@dinosaure, #347, #360)trim the window used to pack (@pqwy, @dinosaure, #357, #358)lru.0.3.0 (@pqwy, @dinosaure, #352, #356)Issues #335, #342, #346
sexplib dependency (@samoht, #349)ls-remote (bug found by @hannesm, fixed by @dinosaure, #348)io-page-unix as dependency to tests git-mirage (@dinosaure, #345)Cstruct.add_len (replaced by ke) (@dinosaure, #345)Uri.user_info to be able to be authentified by a service like GitHub (@linse, review by @dinosaure, #341, #343)digestif.c and digestif.ocaml implementation (same for checkseum)remove implementation dependencies on git-unix and git-mirage (bug found by @hannesm and @linse, fixed by @dinosaure, #339)
This update should be fixed by dune's variants and >= digestif.0.7.2 and >= checkseum.0.1.0
etmp as already-allocated buffer to encode Git object (@dinosaure, #336)ke.0.3 as new dependencyogit binary on some package configurations (#225, @samoht)ogit add-commit-parent to add a new parent to a given commit (#208, @samoht)Better Windows support (#187, @samoht)
git, git-http, git-unix and git-mirage (#189, @samoht)ocaml-crc anymore: less C code means, easier to port to other MirageOS backends (#166, @g2p)Git.SHA into Git.Hash (@samoht)Git.Sync.populate but add Git.Sync.clone to replace the previous fetch+populate (#122, @samoht)Store.size. Before, the only way to get the size of a file was to decompress the whole thing. The main win comes from getting the size of raw packed objects without decompressing. (#143, @talex5)IO.rec_file and thus the watch mechanism on Unix to leak memory (#146, @samoht)Store.S as parameter. (#120)Changes to the Search API:
find_exnt has a new case Tree_root to represent tree rootspath 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 onlypack are labelled and its result type has changed.keys to return the topological sort of keys in the graph.Improve the size of pack files received when fetching (#115)
ocaml-git clients support ofs-delta and thin-packhaves to send to the server after the discovery phase, where we already know all the server references (#114)Store.S implementations now expose their Inflate implementation.Store.S implementations now expose their Digest implementation (#68)Better sync API (#113)
Sync.fetchSync.cloneSync.populate to be called after a fetch to properly populate the local Git repository (similar to what git clone does).ogit clone --no-checkout and make ogit clone --bare more similar to the same git command.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)Git.Pack and Git.Pack_index API to speed-up random access.Git.SHA.Array module to work with contiguous arrays of SHA1.Git.SHA.lenght to Git.SHA.hex_length to avoid confusion.Git.SHA.of_short_hex to create short hashes. Git.SHA.of_hex now only accept 40 characters hexa-decimal strings.ogit clone by showing progress when the pack file is downloaded and when the delta are resolved.ogit pull using the smart HTTP protocol when the HTTP temporary buffer could sometimes be overfill.mirage-git package.Reference.pp_head_contents and Reference.equal_head_contents.Store.clear and replace it by Memory.clear, Memory.clear_all and FS.remove. This let users have a finer control over the memory consumption of the program over time (related to #90)pp_hum functions into pp.Sync.fetch and add unit-tests (running only in slow mode)..git/HEAD when the contents is a commit hash.Stringext for all the extra string function needed.Git.Packed_value.PIC.prettyGit_unix.FS.remove1.5.* (#90)ogitcohttp.0.18. (#80 by @rgrinberg)conduit 0.8.4 (breaking API changes)ogit cat-file to behave exactly as git cat-file The previous command is renamed to ogit cat (#75 by @codinuum)ogit now supports short hashes instead of full SHA1 (#75 by @codinuum)Git.Pack.Raw.read to read raw pack files (#75 by @codinuum)Git.Pack_index.t now uses a cache of entries. This is more efficient than the previous representation (#75 by @codinuum)Git.Pack_index.mem to find an entry in the pack index cache (#75 by @codinuum)Git.Pack_index.find_offset to find an offset in the pack index cache (#75 by @codinuum)Git.Packed_value.to_value to unpack a value stored in a pack file (#75 by @codinuum)git.http library for abstracting away bits of the smart HTTP protocol.User-Agent in the headers of the smart HTTP protocol. This makes bitbucket.org happy. (#66, patch from @vklquevs)OGITTMPDIR and alway store temp files under git/tmp (mirage/irmin#132)ogit cat-file which were displaying nothing for small objects.Git.write_index now takes an optional index argumentOGITTMPDIR if set, then Filename.get_temp_dir_name -- as it was in 1.4.5, see #51Git.Value.Cache.set_size to change the LRU cache sizegit.top to load toplevel printers for Git valuespacked-refs files, to read references packed by git gc (reported by Gregory Tsipenyuk){write,read}_cache to {write,read}_indexGit_unix and Git_mirage in their own subdirs as it was causing issues to oasis (#5, Simon Cruanes)Bytes instead of String (#5, Simon Cruanes)Git_unix.IO.write_file to work on empty filesogit --version (#22)ocaml-hexcore_kernelocaml-nocrypto instead of ocaml-sha1V1_LWT.FS signature to generate a persistent store. This allows to store Git repos directly inside raw block devices (no need of filesystem anymore).git and git.unix..dot file representing the Git repoocaml-conduit to set-up connections with remote repositoriesocaml-uri to specify Git Remote Identifiersogit clone now correctly set-up the cache file (which means that git status and git diff will now work as expected on a repository created by ogit)ogit read-tree COMMITogit ls-files [--all]GitTypes.S.mem_referenceGitTypes.S.remove_referenceGitTypes.S.mem to check if an object exists in the storeogit cat-fileogit ls-remoteogit fetchogit clone