github GitoxideLabs/gitoxide git-repository-v0.30.0
git-repository v0.30.0

23 months ago

Changed

  • represent GIT_(COMMITTER|AUTHOR)_(NAME|EMAIL|DATE) with git configuration.
    That way it becomes more obvious where values are coming from.

New Features

  • expose git-features crate at root under features.
    That way application developers can use more of the utilities
    that power most of the gitoxide plumbing crates.

  • Remote knows about its tagOpt configuration.
    That way it's clear if it should or shouldn't fetch included/reachable
    tags automatically.

    The default setting for this is to include tags, similar to git.

    The fetch_tags() accessor allows to query this information, and the
    with_fetch_tags() builder method allows to set the value comfortably
    right after creating the Remote instance.

    The tagOpt key will also be written as part of the remote's git
    configuration.

    Clone operations can set the Tags setting when configuring the
    remote in a callback.

    This also comes with a fix to assure that ref-updates aren't skipped
    just because there was no pack to receive. That way, locally missing
    refs or tags will automatically be put back.

  • network related Error type support is_spurious() method.
    That way the caller can determine more easily if it makes sense
    to try again.

  • Make prodash::tree avaialble as progress::tree.

  • read worktree specific configuration to override the one from the shared repository.
    This is intensively used when space checkouts are created, along with
    Cone mode. Thus it's the basis for properly interpreting sparse checkout
    options which are set on a per-worktree basis.

  • add permissions::Environment::http_transport.
    That way it's possible to deny using environment variables that affect
    the HTTP transport, like setting the proxy.

  • open::Options::modify() as general pattern to allow builder methods usage in &mut self.
    That way it's easier to configure both the full and the partial trust instances
    of discovery options.

  • Add Repository::commit_as(committer, author, …) convenience method.
    That way it's, very much beyond convenience, possible to set the time
    of a commit.

    Many thanks to @epage for the suggestion.

  • upgrade to prodash 21.1 and add Ids to all progress instances.
    That way callers can identify progress they are interested in, say, for
    selective visualizations.

Bug Fixes

  • provide a clearer error message when trying to open a git repository that isn't one.

  • http transports can now reuse a connection.
    This makes connections more efficient generally and cargo relies
    on that behaviour in their tests as well.

  • allow to open a Repository from if 'config' file is missing.
    In this case, treat it similar to having an empty repository configuration
    file and assume defaults everywhere.

  • improve error verbosity when fetching and cloning

  • tree::diff::Platform::for_each_to_obtain_tree() now properly surfaces user provided errors.
    Previously it would squelch them unintentionally.

    First discovered via Byron/crates-index-diff-rs#35.

  • when fetching from file://, don't upset windows by trying d:/foo, use d:\\foo instead.

  • config::CommitAutoRollback now implements DerefMut.

Changed (BREAKING)

  • default features are set to max-performance-safe to assure compatibility.
    Previously the max-performance setting might have caused issues during compilation
    or issues at runtime if libraries like git2 are used in the same binary, and the
    new default feature settings maximizes compatbility so this won't happen.

    For best performance, however, one will have to activate the max-performance
    feature on top of that.

  • environment variable permissions are per topic.
    Now Permissions for environment variables are so that they
    are by topic instead of by prefix, by default. That way
    it's easier to allow or deny particular sets of related
    environment variables.

    The catch-all permissions by prefix are still present for all
    other variables that aren't contained in one particular topic.

  • open::ReplacementObjects is removed in favor of two custom git-configuration flags.
    Now it's possible to map the environment variables GIT_REPLACE_REF_BASE and GIT_NO_REPLACE_OBJECTS
    to custom git configuration keys which can also be set, namely gitoxide.odb.replaceObjectsRefBase
    and gitoxide.odb.noReplaceObjects.

    Along with the possibility of disabling the usage of GIT_ prefixed environment variables one
    reaches the previous level of control without making object replacement a special case.

New Features (BREAKING)

  • interrupts::init_handler() can now be undone.
    This can be done by calling deregister() or auto_deregister() on the return value
    of interrupts::init_handler(…).

    That way it's possible to temporarily do interrupt handling only while some methods
    that rquire it are running.

  • represent object cache configuration like GITOXIDE_PACK_CACHE_MEMORY in git-configuration.
    That way there is a unified system for how to set values, which may be overridable by configuration
    variables or not.

    With this changes, the explicit application of environment variables for setting the cache
    isn't required anymore as everything happens using git-configuration, and automatically,
    while providing full control like before.

  • remove SnapshotMut::apply_cli_overrides() in favor of open::Options::cli_overrides().

  • more type-safety for remote names by making clear they can be named after URLs.

Other (BREAKING)

  • Remote::with_refspec() to Remote::with_refspecs() to allow adding more than one refspec as part of the builder.

Commit Statistics

  • 74 commits contributed to the release over the course of 27 calendar days.
  • 27 days passed between releases.
  • 25 commits were understood as conventional.
  • 0 issues like '(#ID)' were seen in commit messages

Thanks Clippy

Clippy helped 2 times to make code idiomatic.

Commit Details

view details
  • Uncategorized
    • prepare chnagelogs prior to git-repository release (7114bbb)
    • Merge branch 'read-header' (3d01252)
    • expose git-features crate at root under features. (1683a84)
    • adjust to changes in git-odb (50ea7fb)
    • Merge branch 'patch-1' (fbce7bb)
    • Use specific Iter constructors in stats example (0a72c18)
    • Merge branch 'adjustments-for-cargo' (083909b)
    • thanks clippy (f1160fb)
    • adapt to changes in git-features::fs. (35f7d59)
    • Remote knows about its tagOpt configuration. (90ef6fc)
    • adjust to changes in git-testtools (4eb842c)
    • Merge branch 'adjustments-for-cargo' (94750e1)
    • improve docs related to authentication when fetching (5979503)
    • provide a clearer error message when trying to open a git repository that isn't one. (d659bda)
    • http transports can now reuse a connection. (ff0332e)
    • allow to open a Repository from if 'config' file is missing. (9079b9d)
    • Merge branch 'adjustments-for-cargo' (70ccbb2)
    • upgrade clru, remove it from git-repository dependencies (unused) (7e7547d)
    • Merge branch 'main' into adjustments-for-cargo (bb60d3d)
    • adapt to changes in git-repository (89230f4)
    • improve error verbosity when fetching and cloning (40f7379)
    • network related Error type support is_spurious() method. (28e4808)
    • Merge branch 'paulyoung/scheme-ext' (3e27550)
    • realign test expectations (93e6d71)
    • tree::diff::Platform::for_each_to_obtain_tree() now properly surfaces user provided errors. (b77fc86)
    • when fetching from file://, don't upset windows by trying d:/foo, use d:\\foo instead. (5386eed)
    • Remote::with_refspec() to Remote::with_refspecs() to allow adding more than one refspec as part of the builder. (fceee74)
    • default features are set to max-performance-safe to assure compatibility. (3c84ceb)
    • interrupts::init_handler() can now be undone. (f8a2bfb)
    • Make prodash::tree avaialble as progress::tree. (457c2e0)
    • read worktree specific configuration to override the one from the shared repository. (d1b7ec6)
    • refactor (2d83222)
    • move tests::repository::config::worktree to tests::repository::open::worktree (62afb7b)
    • improve documentation about the configuration we always load (75488a7)
    • Assure that worktree configuration is marked as such with Source::Worktree. (a191948)
    • test to check if worktree overrides shared configs (b69f219)
    • remove canonicalize calls from test… (bea689a)
    • fix type - prevent creating a fixture archive (33992ab)
    • exclude fixture archive from being uploaded… (5c2b44c)
    • refactor… (ae812bd)
    • refactor… (394aab9)
    • remove worktree permission configuration option… (7ebf229)
    • load worktree config if necessary (760e736)
    • add test for worktree configs (23d8474)
    • Release git-hash v0.10.1, git-hashtable v0.1.0 (7717170)
    • Merge branch 'remove-lines-parsing' (9d8e32d)
    • environment variable permissions are per topic. (5fe6aa3)
    • make fmt (747008d)
    • switch from atty to is-terminal (7304bc1)
    • Merge branch 'main' into http-config (6b9632e)
    • represent object cache configuration like GITOXIDE_PACK_CACHE_MEMORY in git-configuration. (becbd8d)
    • represent GIT_(COMMITTER|AUTHOR)_(NAME|EMAIL|DATE) with git configuration. (a4ac9cf)
    • open::ReplacementObjects is removed in favor of two custom git-configuration flags. (49f39d6)
    • apply related environment variables as config overrides (9441c26)
    • add permissions::Environment::http_transport. (fc64693)
    • refactor (603f341)
    • open::Options::modify() as general pattern to allow builder methods usage in &mut self. (0ce29a9)
    • remove SnapshotMut::apply_cli_overrides() in favor of open::Options::cli_overrides(). (f16e361)
    • Merge branch 'optimize_hashtables' (95ad56c)
    • use newly added git-hashtable (50cb436)
    • Merge branch 'path-normalize' (805329a)
    • switch to custom Hasher implementation (269d59e)
    • Release git-features v0.24.1, git-actor v0.14.1, git-index v0.9.1 (7893502)
    • more faithfully parse http.followRedirect (b84ae6a)
    • adjust for changes in git-path (cf25e35)
    • thanks clippy (10f4f21)
    • Allow remote overrides for http options (340dcad)
    • more type-safety for remote names by making clear they can be named after URLs. (84d594c)
    • Add Repository::commit_as(committer, author, …) convenience method. (8482f90)
    • upgrade to prodash 21.1 and add Ids to all progress instances. (c8835c6)
    • Merge branch 'http-config' (a4ff140)
    • config::CommitAutoRollback now implements DerefMut. (363ac7a)
    • Merge branch 'main' into http-config (bcd9654)
    • make fmt (0abab7d)

Don't miss a new gitoxide release

NewReleases is sending notifications on new releases.