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

2 years ago

New Features

  • Url::try_from(path: &std::path::Path) for more convenient instantiation.
  • make some private methods public to give callers more flexibility.
    This allows to implement the fetch-negotiation part oneself and break
    free from constraints of the delegate.
  • add config::SnapshotMut::commit() to make clear it's transactional.
  • add config::SnapshotMut::forget() to forget all changes before applying them.
    The documentation was update to make clear when the changes are applied.
  • add Repository::find_default_remote() which works on detached heads as well.
  • Remote::rem_map() now specifies ref-prefixes to the remote.
    This can greatly reduce the amount of refs sent.

Other

  • try to make the transport configurable after being boxed, but…
    …that would force it to be 'static, which is something we excplicitly
    cannot have. We need references to be contained within, if I remember
    correctly.

Changed (BREAKING)

  • All methods editing references don't take the author as parameter anymore.
    Instead, these are taken from the git configuration and can be
    configured on the fly with temporarily altered configuration.
  • remote lock_mode from all methods dealing with reference edits.
    It is now read from core.filesRefLockTimeout accordingly.

New Features (BREAKING)

  • make jwalk fully optional
  • add fetch::Transport::configure to generically configure any transport.

Commit Statistics

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

Thanks Clippy

Clippy helped 8 times to make code idiomatic.

Commit Details

view details
  • #450
    • fix test expectations to handle V1/V2 differences. (e616174)
    • no need to fetch the whole pack in dry-run mode, even in V1. (1777fa1)
    • fix hang in V1 mode (ce9b591)
    • Display for remote::fetch::update::refs::Mode (169a979)
    • better error messages if no ref-specs are provided where needed (981488b)
    • Improve error description with local context (8e9e0b2)
    • always perform fast-forward checks even if force is specified. (a34370c)
    • refactor (c0d3ced)
    • refactor (8334148)
    • add test to validate actual fast-forwards, without dry-run (e3b937e)
    • first non-fastforward tests in dry-run mode (2d0d782)
    • dry-run mode for fetch (ef9fa98)
    • test all reflog messages that are expected, sans fast-forward (2a76908)
    • support reflog message prefix (6ebbbc1)
    • refactor (9a072bd)
    • facilities to test reflog messages (91859d5)
    • assure objects exist before setting them. (d79a7a6)
    • no-clobber special case for tags (ba41b6c)
    • refactor (18581d0)
    • reject updating checked-out branches (5a6c102)
    • add failing test to validate worktree-checkout check (870b680)
    • fix docs (2a67531)
    • further harden tests to only allow environment variables for those who need it. (9704c2f)
    • unset other variables that we know may affect some functions that need stability. (25d6106)
    • more robust tests that depend on time. (6981b71)
    • isolate test properly (005469c)
    • more tests for SnapshotMut and now it's working properly (dde9e63)
    • more robust assignment of re-evaluated cached values (b514966)
    • Add test for commit-and-rollback method, and fix it (cc75647)
    • adapt to changes in git-ref (d40beb3)
    • refactor (f47a31d)
    • read core.excludesFile lazily (and don't cache it yet) (830c450)
    • auto-update previously cached values after changing the configuration (da147bf)
    • All methods editing references don't take the author as parameter anymore. (e88de0f)
    • remote lock_mode from all methods dealing with reference edits. (3a0fb1b)
    • prepare for worktree-aware checked-out branch handling… (1bb910e)
    • actually apply ref updates (8fe4bf4)
    • Add failing test to show we need to respect dry-run mode (or the lack thereof) (e25460b)
    • tests for all the cases excluding fast-forwards (7ced240)
    • the first successful test (e4edc18)
    • Make fetch::refs::update() private again, move tests accordingly. (9f9b610)
    • Provide refspecs to refs::update() to obtain force information (a9f2c45)
    • a big step towards ref updates, now it needs specs (c101d50)
    • more update tests (2828674)
    • the first somewhat synthetic test to check for no changes. (c355823)
    • fix build (8e1555d)
    • make remote::fetch::refs::update() public to facilitate testing (4a5d3b4)
    • lay the ground-works for testing the update of refs (1f2d609)
    • refactor (96f2fd8)
    • greatly improved performance for write-test. (2ec8175)
    • improve naieve algorithm to be a bit better in our test-case (0387794)
    • try to make naive negotiation better, but… (d5c1f92)
    • speed up fetch tests by giving them their own repo-fixture (ce1a373)
    • A first sketch of validating a fetch. (2962dc2)
    • Don't degenerate information in case there is no update needed. (5f73b25)
    • A first test for validating nothing-new is a no-op (aad17ba)
    • port part of the negotation logic over, but a lot is still missing (4997e56)
    • make some private methods public to give callers more flexibility. (31a7089)
    • refactor (5e93ef5)
    • complete pack generation options based on configuration (97a5e97)
    • also extract index threads (8d17dc6)
    • obtain configuration for index version (with respect for lenient config) (5a3155a)
    • add config::SnapshotMut::commit() to make clear it's transactional. (4367994)
    • add config::SnapshotMut::forget() to forget all changes before applying them. (d2bea00)
    • sketch the receive() method to finally receive a pack. (67801a3)
    • allow stopping fetches after preparing it (249c54e)
    • add Repository::find_default_remote() which works on detached heads as well. (4b1e3b3)
    • refactor (f8fb04a)
    • fix build (7993f6a)
    • remove connect_http() method to encourage changing settings using transport_mut().configure(). (9b86a1f)
    • add fetch::Transport::configure to generically configure any transport. (78ad3df)
    • sketch of 'Prepare' struct to configure fetch after ref-map was obtained. (f0f4db6)
    • don't fail if we can't indicate the end of interaction to the server (47d5cd6)
    • Make it easier to connect to http if well-known to allow additional configuration. (211e65d)
    • Revert "FAIL: try to make the transport configurable after being boxed, but…" (fbb96e4)
    • try to make the transport configurable after being boxed, but… (5bef0a0)
    • first sktech of fetch module (0dc7206)
    • pass extra handshake parameters via options in ref-map (5475cc2)
    • Allow to turn remote-filtering off. (38373bc)
    • Remote::rem_map() now specifies ref-prefixes to the remote. (25f0640)
  • Uncategorized
    • prepare changelogs for release (d232567)
    • Merge branch 'fix-smart-release' (aa80b60)
    • make fmt (7b9c065)
    • move fetch::Error one level up (f6b1368)
    • Merge branch 'clone' (507dc7e)
    • fix docs (4474352)
    • validate default remote name as well and show minimal clone without worktree (dff66e8)
    • validate the outcome of the fetch as well (3865aea)
    • adjust to changes in git-refspec (c62f37a)
    • thanks clippy (bc2710f)
    • the first successful test for cloning a bare repository (5ecc965)
    • Complete implementation of fetch_only, even though configuration isn't handled correctly yet (b0f5836)
    • sketch and test for clone::Prepare::fetch_only() (f993cd4)
    • thanks clippy (f65a1f4)
    • make it possible to renmae the remote (3f8b0e5)
    • properly validate remotes when instantiating them and when naming them (1fb97fb)
    • adjust to changes in git-features (3155197)
    • make jwalk fully optional (3b29fc1)
    • thanks clippy (8c8fba2)
    • start adding support for naming the remote, but… (6cbea96)
    • sketch a way to configure remotes (615a3a9)
    • refactor (d7f495d)
    • Api sketch to show how clones and bare clones can be done. (ef1e783)
    • Url::try_from(path: &std::path::Path) for more convenient instantiation. (22d3b37)
    • adjust to changes in git-url (a1068a3)
    • add test to assert on lossless saving of existing named remotes (884b6e9)
    • adapt to changes in git-config (058473d)
    • assure unrelated and unwritten keys are not touched (ca5bb5e)
    • thanks clippy (d82a08d)
    • remove prior existing values for remotes before saving (4126d99)
    • save all data we currently use on a Remote (79a4952)
    • test another prerequisite (1375368)
    • A basic save_to() implementation for url and push-url (e1f7c5f)
    • Merge branch 'main' into new-http-impl (702a161)
    • thanks clippy (1cba50f)
    • layout save API for remotes (50fbcca)
    • Merge branch 'crates-index-diff-fixes' (b09bad7)
    • Add test to validate empty fetches are OK (cb9973b)
    • Make fetch::prepare::Error publicly accessible (9aa2ab2)
    • make fmt (53acf25)
    • Merge branch 'fetch-pack' (f47c891)
    • thanks clippy (83f2156)
    • Merge branch 'fetch-pack' (3c49400)
    • thanks clippy (b521748)
    • thanks clippy (8499c3e)
    • Merge branch 'fix-git-features' (82fd251)
    • improve docs around into_remote() to explain why it returns an Option (71146ad)
    • Merge branch 'diff' (25a7726)

Don't miss a new gitoxide release

NewReleases is sending notifications on new releases.