github Byron/gitoxide git-repository-v0.26.0
git-repository v0.26.0

18 months ago

New Features

  • diff algorithm is controlled by git configuration diff.algorithm

  • Query of core.logAllRefUpdates is now fallible.
    This is the same behaviour as shown by git, which requires valid
    values or aborts.

  • automatically handle .keep files after writing a pack bundle to disk.
    The logic implemented here tries to do the right thing, that is when
    we have reason to believe that the objects in the pack are linked up
    with a ref, we delete the keep file automatically.

    However, if there was no local ref edit as the ref specs didn't contain
    local destinations, or if the pack was empty, then keep the .keep file
    and leave it to the caller to handle.

  • Use core.askpass when building the credential helper.
    Previously it would only consider the environment variable, which can
    still override the provided git-configuration at core.askpass .

  • remote::fetch::Prepare::handshake_outcome() to obtain server information right after listing refs.

  • open::Options::config_overrides() for early configuration; support for init.defaultBranch.

Bug Fixes

  • don't allow non-bare repositories to be initialized into non-empty directories.

  • init_bare() now creates the destination directory if it doesn't exist.

  • build correct path for $HOME/.config/… files.
    The special per-user ignore and attributes files can also be
    defaulted if some environment variables are set and may be accessed.

    Previously the default for $HOME was incorrect, as it was missing the
    intermediate .config/ directory. This is now present to build paths
    exactly like git.

  • ref-map filtering now uses correct prefixes.
    Previously specs could get filtered out server-side as a matching prefix
    was entirely missing.

Changed (BREAKING)

  • Repository::branch_remote_name() returns reference::remote::Name.
    That way it's made clear the remote can also be a URL, while rejecting
    illformed UTF8. The latter isn't valid for remote names anyway as these
    only support a very limited character set.

    Note that this error currently is degenerated, making it appear if the
    remote name doesn't exists if illformed UTF-8 is found in what appears
    to be a symbolic ref.

  • be specific about the kind of diff::Error, moving it to diff::for_each::Error.

New Features (BREAKING)

  • Tree::lookup_entry*() returns attached Entry type.
    That way chaining gets even easier.

Bug Fixes (BREAKING)

  • create::into(…) takes create::Kind to determine if it's bare or not.
    First of all, bare is not an option anymore, but a parameter as
    it can't be defaulted.
    Other public signatures change as well to accomodate for it.

Other (BREAKING)

  • DiffPlatform::text() to *::lines().
    This is more specific as one could also do character changes in a single
    line, and it adapts the signature to the new imra-diff powered
    mechanism, for a 2x speed boost.

Commit Statistics

  • 113 commits contributed to the release over the course of 27 calendar days.
  • 27 days passed between releases.
  • 15 commits were understood as conventional.
  • 1 unique issue was worked on: #450

Thanks Clippy

Clippy helped 12 times to make code idiomatic.

Commit Details

view details
  • #450
    • make last test work to allow us to clone properly (3890f1a)
    • initail implementation of writing branch tracking information (e2a5714)
    • adapt to changes in git-protocol (d61eb2c)
    • Don't deviate by creating strange reflogs (with null-source & null-destination) (f1b5570)
    • Support unborn remotes and pick up their default branch name. (619fd61)
    • adapt to changes in git-protocol (179ccd7)
    • prepare test for handling the 'unborn' lsrefs extension (547e450)
    • fix: support for proper identification of '.' remote paths in reference::remote::Name (b219033)
    • Repository::branch_remote_name() returns reference::remote::Name. (449ff06)
    • failing test for us setting up remote information after cloning (07efbce)
    • update docs (c788b51)
    • refactor (7bd5263)
    • definitely write all non-symbolic refs into packed-refs (b62d5b4)
    • auto-pack references when creating them during clone (a9a621e)
    • refactor (728f688)
    • use tempfile via git-testools (2c9edff)
    • failing test to show we don't pack refs yet (58cc01a)
    • sort out last test-case to assure setting symbolic refs is safe (d06900d)
    • adjust to changes in git-ref (669249a)
    • assure that inital refs are placed into the correct spot (3e4c0cb)
    • and show that we don't manage to write the reflog for some reason (a70a6aa)
    • the first successful test showing that we can write symbolic refs (2330305)
    • figure out more details on how to handle symbolic refs just enough (86a18bd)
    • finally figure out how symbolic ref updates should work (376829a)
    • first step towards supporting writing of symbolic refs locally (61cd430)
    • failing test to check for presence of remote HEAD (2f649e9)
    • thanks clippy (767fb7b)
    • Use correct diff algorithm when diffing text (6fe93c2)
    • refactor (71c6a20)
    • be specific about the kind of diff::Error, moving it to diff::for_each::Error. (71f15fc)
    • initial support for obtaining the diff.algorithm lazily (f362ab2)
    • refactor (af0c28d)
    • proper reflog entries for all other updated refs during cloning (ff4412e)
    • show that HEAD's referent also has the correct reflog (c25cb00)
    • the first test to prove that HEAD reflogs are correct (1e7fd4e)
    • canonicalize URL right away for it to manifest in the changelog (3cfe13d)
    • Query of core.logAllRefUpdates is now fallible. (072f5bc)
    • Fully reload in-memory configuration after configuration changes… (bc5b4e7)
    • allow to re-read the logallrefupdates config after overrides (ff06de4)
    • re-apply overrides more correctly after clone, however… (372e9d4)
    • validate that the remote HEAD branch overrides local init.defaultBranch settings (1c3dd3a)
    • assure stored file urls are absolute (5d7a055)
    • make it possible to clone empty remote repositories (e97eeda)
    • refactor (d29bb62)
    • test for cloning empty repositories (0aa97fe)
    • checkout returns index checkout result (2ef8d53)
    • avoid showing thread progress during clone-pack-resolution (056f4dd)
    • create::into(…) takes create::Kind to determine if it's bare or not. (2bece79)
    • less noisy way of writing trait bounds (b593806)
    • upgrade to prodash v21 (a0655dc)
    • don't allow non-bare repositories to be initialized into non-empty directories. (f869b22)
    • assure the reflog settings aren't permanently overidden during init/fetch (bc5e3e4)
    • Make it possible to ignore specs that don't match when iterating mappings. (bc991ff)
    • init_bare() now creates the destination directory if it doesn't exist. (91baefa)
    • first rough sketch of gix clone (23a5e8b)
    • the first working checkout as per simple simple test (9ce28ac)
    • finally perform actual checkout, but test fails without clear reason (3821b4f)
    • prepare attribute-group setup as far as possible. (f5e2eeb)
    • build correct path for $HOME/.config/… files. (5c11b84)
    • sketch access to the attributes file, realize that there is an issue to be fixed first (0081e2f)
    • refactor (28de9df)
    • read core.checkstat to configure the checkout as well (05a666c)
    • refactor (2f1c9dc)
    • don't be lenient towards paths that can't be interpolated in case of excludes file (3df7788)
    • collect all filesystem attributes affecting checkout (91b360f)
    • prepare to move checkout_options into config (e731757)
    • Use core.askpass when building the credential helper. (8b9fbd4)
    • obtain worker count from configuration; prep for more options (d947d8b)
    • write index from root tree and get ready for checkout (485a252)
    • prepare checkout, but needs to be able to create an index from a tree (e462bd5)
    • also update the HEAD reference after a fetch (e561021)
    • ref-map filtering now uses correct prefixes. (275e80f)
    • prepare for handling the server object-format correctly. (54c91eb)
    • a sketch to check and update the object format upon cloning. (ebfd7d6)
    • refactor (36c5ca9)
    • remote::fetch::Prepare::handshake_outcome() to obtain server information right after listing refs. (a9d1449)
    • refactor (992522a)
    • open::Options::config_overrides() for early configuration; support for init.defaultBranch. (0b5c53e)
  • Uncategorized
    • prepare changelogs prior to release (423af90)
    • Merge branch 'main' into write-sparse-index (upgrade to Rust 1.65) (5406630)
    • fix tests on windows (f2a8a45)
    • thanks clippy (04cfa63)
    • Merge branch 'main' into write-sparse-index (c4e6849)
    • make fmt (ea2136b)
    • Merge branch 'gix-clone' (def53b3)
    • thanks clippy (3495c56)
    • fix build and docs (971fe0c)
    • diff algorithm is controlled by git configuration diff.algorithm (b1edb9e)
    • Merge branch 'main' into gix-clone (fa27570)
    • Merge branch 'imra-diff' (f53f942)
    • fix docs (7d5fb3c)
    • thanks clippy (24254a4)
    • DiffPlatform::text() to *::lines(). (c6f92c1)
    • thanks clippy (d2f56df)
    • Merge branch 'main' into gix-clone (3b48317)
    • thanks clippy (93e7691)
    • automatically handle .keep files after writing a pack bundle to disk. (2eaf69e)
    • thanks clippy (6f8356c)
    • thanks clippy (700cc2d)
    • thanks clippy (73b6ec0)
    • thanks clippy (f22bdc0)
    • Merge branch 'main' into gix-clone (de4fe06)
    • thanks clippy (6ac6580)
    • thanks clippy (c6e7663)
    • Mark the upcoming usage of init.defaultBranch. (6225f35)
    • realize that we don't know hot to set HEAD correctly just yet (11d636c)
    • Merge branch 'fix-gix-index-from-tree' (da5f63c)
    • adjust to changes in git-index (fa6bcde)
    • fix docs (34b3e03)
    • sketch of method to checkout the main worktree (a88d5a3)
    • finish sketch of fetch_and_checkout() (e39a9d5)
    • sketch checkout API and refactor (9145a32)
    • Tree::lookup_entry*() returns attached Entry type. (7413a28)

Don't miss a new gitoxide release

NewReleases is sending notifications on new releases.