1132 lines · 104.7 KB · Markdown
RawDownload

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

0.13.0 (2022-04-03)

Refactor (BREAKING)

  • clarify different repository types much better
  • Remove light* features, add 'lean-async' in its place; remove termion support
  • remove pack-cache from Find::try_find(…) With the new architecture this can be an implementation detail without forcing it to be Sync.
  • move git_pack::data::Object to git_object::Data, massively alter git_odb::Find trait This will break a lot, but has to happen to prepare these traits for the next generation of object databases.

Other

  • Try to make Handle usable for pack creation It's nearly there, but for some reason the boxed dyn traits don't get to be Send even though it's specified.

Bug Fixes

  • Allow resolution of in-pack ref-deltas This finally allows delta tree caches to be used on typical small packs returned by GitHub.

  • keep non "git" repository name extensions When converting a remote URL to a destination directory name, keep extension strings if they are not equal to "git". For example,

  • Avoid the dashmap being cloned for each thread Intead, share it by reference, it's sync after all.

    This issue was introduced when switching to a Send + Clone model, instead of Send + Sync, to allow thread-local caches in database handles of all kinds.

New Features

  • ein tool estimate-hours with shallow clone support
  • ein tool estimate-hours now supports mailmaps
  • gix repository mailmap entries
  • gix mailmap verify command
  • unstable mailmap module
  • ein find with support for worktree checkouts
  • ein find --debug to learn why it is slow
  • --counting-threads flag to configure amount of threads when counting The efficiency of multi-threaded counting is low per core, and despite some speedups might be desirable, one might not want to commit all cores to this amount of waste.
  • in-manifest and in-lib documentation of feature toggles

Changed (BREAKING)

  • file::Store::(try_)find(…, packed) was removed The packed buffer is now handled internally while loading it on demand. When compiled with git-features/parallel the file::Store remains send and sync.

    The packed refs buffer is shared across clones and it's recommended to clone one file::Store instance per thread, each of which can use its own namespace.

  • parallel utilities now use Send + Clone insted of Send + Sync This helps to assure that thread-local computations always work with the kind of types we provide. The ones that are carrying out actions are notably not Sync anymore.

    We cater to that by defining our bounds accordingly, but for those who want to use other utilities that need Sync, using types like Repository and thread_local!() is the only way to make this work.

  • Rename gix->ein and gixp->gix

  • remove Option<impl Progress> in favor of impl Progress

  • multi-index integrity check; use integrity::Outcome for various integrity checks

  • remove unnecessary Arc around should_interrupt flag

  • remove Sha1 mentions in index::verify::Mode::* variants The hash is repository defined and not hard-coded

  • introduce index::File::verify_integrity(…, pack: Option<PackContext>, …), replacing tuple This allows for more documentation on what input is required there and generally makes for an easier to use API.

  • consistently use object_hash instead of hash_kind

Commit Statistics

Commit Details

view details
  • #215
    • Remove light* features, add 'lean-async' in its place; remove termion support (4d2d433)
  • #247
    • Rename gix->ein and gixp->gix (e8b0919)
  • #263
    • Adjust to chagne signature of peel_to_id_in_place (again?) (dd5341f)
    • file::Store::(try_)find(…, packed) was removed (15d429b)
    • parallel utilities now use Send + Clone insted of Send + Sync (e7526b2)
    • A mad attempt to use thread-local everywhere and avoid Sync… (0af5077)
  • #266
    • upgrade dependencies (c301abe)
    • Make single-threaded programs possible to use with git-repository (dde5c6b)
    • Use new store in git-repository (2f9e342)
    • Use handle with default cache configuration in 'ein hours' (f71806f)
    • adapt to changes in git-repository (fae309b)
    • Adjust object-acess to test new contains method (8488b41)
    • Adjustments to match changes in git-repository (117d5f8)
    • Adapt to changes in git-repository (3ab9b03)
    • Adapt to changes in git-repository (3266c47)
    • Adjust pack-create to changes in git-pack (12db899)
    • Cache-creators are indeed shared across threads, must be sync (c326cb3)
    • Try to make Handle usable for pack creation (424c9b3)
    • Inform when multi-threaded counting is rejected (cc3b070)
    • remove pack-cache from Find::try_find(…) (ebc7f47)
    • move git_pack::data::Object to git_object::Data, massively alter git_odb::Find trait (2290d00)
  • #279
    • Fast-path multi-pack index verification in the CLI (bcde935)
    • Add a less thorough and faster way of verifying multi-indices (7517482)
    • Handle large multi-pack indices correctly (4f6b030)
    • Fix progress and handling of large of multi-pack index offsets (5dc1f81)
    • Basic multi-pack index creation (89428b2)
    • Add frame for writing a multi-pack index (9ce1e7f)
    • adjust to changes in git_pack (7907ca8)
    • even nicer printing (d2bea27)
    • nicer printing of index verification results (e3dfa12)
    • very first experimental support for multi-pack index verification (bb35c69)
    • remove Option<impl Progress> in favor of impl Progress (bf04644)
    • multi-index integrity check; use integrity::Outcome for various integrity checks (6829e5e)
    • remove unnecessary Arc around should_interrupt flag (d851bed)
    • remove Sha1 mentions in index::verify::Mode::* variants (c2679a0)
    • introduce index::File::verify_integrity(…, pack: Option<PackContext>, …), replacing tuple (80b120d)
    • refactor (005fba7)
    • consistently use object_hash instead of hash_kind (de4fa64)
    • Adjust to changes in git-odb (710780c)
    • adapt to changes in git-pack (28dba20)
    • Deal with changes to git-odb Write trait (4d67122)
    • adapt to changes to git-odb (5b0e2b9)
    • adapt to changes in git-hash (82fec95)
  • #287
    • lower-case json fields for consistency (f6c0e6d)
    • basic output for 'repo verify' json only (9f8d61f)
    • share and pass cli arguments for pack verification (db43e47)
    • Allow resolution of in-pack ref-deltas (84ade1d)
    • Very rough version of repository verification (80a4a7a)
    • frame for loose-db validation (a24307d)
    • Adjustments to deal with changes to git-pack/git-odb (fcf8fde)
  • #293
    • Assert store tree cache matches actual source objects (b062bec)
    • Sketch a surprisingly difficult way of loading objects in verify_extension() (3baeab4)
    • Also verify the index of the default workspace (15b8372)
    • First stab at tree verification (f928350)
    • Add 'index verify' subcommand to 'gix' (1ac2c21)
    • Now we are able to load indices correctly (762efa3)
    • refactor (3541e33)
    • Print extension names instead of count (1cc07e0)
    • Flag to hide extension details (34ea001)
    • refactor (d0725bd)
    • Fix tree-extension loading for empty trees (2e13989)
    • Print basic index information, including the tree extension (9277cf8)
    • Basic entry information (239e7b2)
    • refactor (8bf585d)
    • JSON output for index entries (3fc1622)
    • fix build (e3977fe)
    • refactor (9b28b18)
  • #298
  • #301
    • pass thread-limit along to checkout (07e9081)
    • conversions from Rc to arc for Handle (c19331e)
    • proper handling of interruptions during checkout (7575a58)
    • add thread-count and chunk-size computation; interrupt capability (8cbe85d)
    • refactor (542f49b)
    • return proper errors during checkout object lookup (f9beac0)
    • more safety around recursion and invariants when resolving ref-deltas (dddb4a5)
    • elaborate odb info and simple entries printing (0f65282)
    • a first sketch of access odb information using a sub-command (89b628a)
    • sub-command to print multi-index entries (6c10e09)
    • pack multi-index info subcommand (21c2dd5)
    • bring back more detailed errors in case of keep-going (8198817)
    • use progress to print errors right when they happen (af03686)
    • detailed report about issues after checkout (613483b)
    • keep-going support on the command-line (73a7393)
    • add tree-info subcommand to more easily test actual tree-traversal performance (29fb0c8)
    • fix 'tree entries' performance by not decoding every object (53e79c8)
    • first basic tree visualization with --recursive and flat display (111400f)
    • frame for traversing tree entries (0e55fbb)
    • fix progress - there is no max value for bytes written (537e5aa)
    • allow writing empty files during checkout but also query the odb (5388d80)
    • support for repo to write actual objects (5494fb3)
    • basic version of index checkout via command-line (f23b8d2)
  • #329
    • in-manifest and in-lib documentation of feature toggles (aa3795d)
    • Document all features related to serde1 (72b97f2)
  • #333
    • Use git_features::path everywhere where there is a path conversion (2e1437c)
    • remove os-str-bytes everywhere (71a086a)
    • gitoxide-core without os-str-bytes (909aa14)
  • #364
    • add some precaution to avoid strange interactions with packs (b052a9a)
    • ein tool estimate-hours with shallow clone support (30b22a8)
    • simplify estimate-hours by just looking at the author signature (beb478f)
    • Adjust to breaking changes in git-traverse (d79b506)
    • Full error handling for CommitRefIter (b94471a)
  • #366
    • ein tool estimate-hours now supports mailmaps (def80df)
    • gix repository mailmap entries (d2388d8)
    • frame for printing mailmap entries using git-repository (2a01f47)
    • gix mailmap verify can now detect collisions (f89fe2f)
    • gix mailmap verify command (384ed66)
    • unstable mailmap module (e3bc1b4)
  • #67
    • --counting-threads flag to configure amount of threads when counting (0090961)
    • Avoid the dashmap being cloned for each thread (6d3f52d)
  • Uncategorized
    • Merge branch 'for-onefetch' (8e5cb65)
    • Release git-hash v0.9.3, git-features v0.20.0, git-config v0.2.0, safety bump 12 crates (f0cbb24)
    • Merge branch 'svetli-n-refactor_git_config_tests' (babaa9f)
    • make fmt (7cf3545)
    • adapt to breaking changes in git-actor (40c48c3)
    • ein find with support for worktree checkouts (3f28e20)
    • ein find --debug to learn why it is slow (70109be)
    • thanks clippy (804d5f1)
    • thanks clippy (5db3993)
    • Release git-tempfile v2.0.0, safety bump 6 crates (90b1c42)
    • upgrade document-features (c35e62e)
    • Merge branch 'AP2008-implement-worktree' (f32c669)
    • Release git-hash v0.9.2, git-object v0.17.1, git-pack v0.16.1 (0db19b8)
    • Merge branch 'index-verification' (ad3c803)
    • Release git-config v0.1.11 (a605b67)
    • Merge branch 'index-information' (025f157)
    • thanks clippy (3aba4b4)
    • Release git-hash v0.9.1, git-features v0.19.1, git-actor v0.8.0, git-config v0.1.10, git-object v0.17.0, git-diff v0.13.0, git-tempfile v1.0.4, git-chunk v0.3.0, git-traverse v0.12.0, git-pack v0.16.0, git-odb v0.26.0, git-packetline v0.12.3, git-url v0.3.5, git-transport v0.15.0, git-protocol v0.14.0, git-ref v0.11.0, git-repository v0.14.0, cargo-smart-release v0.8.0, safety bump 4 crates (373cbc8)
    • thanks clippy (5a68d2f)
    • Merge branch 'use-midx-in-store' (338521b)
    • keep non "git" repository name extensions (d33795f)
    • thanks clippy (533a532)
    • Release git-chunk v0.2.0, safety bump 4 crates (b792fab)
    • Merge branch 'oknozor-feat/traversal-sort-by-committer-date' (6add377)
    • Fix pack/create (4d8de93)
    • Release git-features v0.18.0, git-actor v0.7.0, git-config v0.1.9, git-object v0.16.0, git-diff v0.12.0, git-traverse v0.11.0, git-pack v0.15.0, git-odb v0.25.0, git-packetline v0.12.2, git-transport v0.14.0, git-protocol v0.13.0, git-ref v0.10.0, git-repository v0.13.0, cargo-smart-release v0.7.0, safety bump 12 crates (acd3737)
    • Adjust changelogs prior to release (ec38950)
    • Merge branch 'git-loose-objects' of https://github.com/xmo-odoo/gitoxide into xmo-odoo-git-loose-objects (ee737cd)
    • Adjusting changelogs prior to release of git-config v0.1.8, git-object v0.15.1, git-diff v0.11.1, git-traverse v0.10.1, git-pack v0.14.0, git-odb v0.24.0, git-packetline v0.12.1, git-transport v0.13.1, git-protocol v0.12.1, git-ref v0.9.1, git-repository v0.12.0, cargo-smart-release v0.6.0, safety bump 5 crates (39b40c8)
    • Merge branch 'header-field-multi-improve' of https://github.com/xmo-odoo/gitoxide into xmo-odoo-header-field-multi-improve (d88e377)

v0.12.0 (2021-10-19)

A maintenance release to properly dealing with previously breaking changes in git-hash.

Commit Statistics

  • 3 commits contributed to the release.
  • 3 days passed between releases.
  • 0 commits where understood as conventional.
  • 1 unique issue was worked on: #222

Commit Details

view details
  • #222
    • stabilize changelogs (920e832)
    • Update changelogs prior to release (b3e2252)
  • Uncategorized
    • Release git-hash v0.8.0, git-features v0.17.0, git-actor v0.6.0, git-object v0.15.0, git-diff v0.11.0, git-traverse v0.10.0, git-pack v0.13.0, git-odb v0.23.0, git-packetline v0.12.0, git-transport v0.13.0, git-protocol v0.12.0, git-ref v0.9.0, git-repository v0.11.0, git-commitgraph v0.6.0, gitoxide-core v0.12.0, gitoxide v0.10.0, cargo-smart-release v0.5.0, safety bump 16 crates (0e02953)

v0.11.0 (2021-10-15)

This is a maintenance release signalling breaking changes because some of the crates it depends on have breaking changes.

Refactor

  • Use 'cache::Object' trait where it matters
  • split data::output::count::objects into files

Other

  • try to create persistent Easy iterator, but can't make it Send… …which is fair as it contains borrowed RefCells, which really would have to be owned to work for this, which would in turn require the Ancestor's struct to be kind of self-referential
  • set package cache via RepositoryAccessExt
  • prepare for configurable pack cache

Chore

  • fix immediate dereference warning

New Features

  • control pack and object cache size in megabytes in some sub-commands
  • object cache size is configurable in some sub-commands

Commit Statistics

  • 25 commits contributed to the release over the course of 34 calendar days.
  • 35 days passed between releases.
  • 12 commits where understood as conventional.
  • 5 unique issues were worked on: #164, #198, #200, #205, #67

Commit Details

view details
  • #164
    • rename path::is_git to path::is (ac3b9ef)
    • rename ObjectIdExt::ancestors_iter() to *::ancestors() (a19567e)
  • #198
    • A changelog for gitoxide-core (b9f6a37)
    • Fixup remaining changelogs… (2f75db2)
    • set package cache via RepositoryAccessExt (66292fd)
    • prepare for configurable pack cache (7d2b6b6)
  • #200
    • feat: Add --reference/-r flag to gixp pack-receive (637d12c)
  • #205
    • '(null)' symref targets are turned into direct refs instead… (c77bd7a)
    • fetch::Ref::Symbolic::target is now an option… (da68bfb)
  • #67
    • control pack and object cache size in megabytes (60c9fad)
    • Use 'cache::Object' trait where it matters (71c628d)
    • split data::output::count::objects into files (8fe4612)
    • object cache size is configurable (5a8c2da)
    • Count ref-deltas in thin packs as well (80c6994)
    • Use Easy in the one spot where it is possible… (6a97bfa)
    • try to create persistent Easy iterator, but can't make it Send… (54a64a5)
    • Add '--thin' flag to pack-create and pass it on (2664d73)
  • Uncategorized
    • Release git-commitgraph v0.5.0, gitoxide-core v0.11.0, gitoxide v0.9.0 (960eb0e)
    • Adjusting changelogs prior to release of git-hash v0.7.0, git-features v0.16.5, git-actor v0.5.3, git-validate v0.5.3, git-object v0.14.1, git-diff v0.10.0, git-tempfile v1.0.3, git-lock v1.0.1, git-traverse v0.9.0, git-pack v0.12.0, git-odb v0.22.0, git-packetline v0.11.0, git-url v0.3.4, git-transport v0.12.0, git-protocol v0.11.0, git-ref v0.8.0, git-repository v0.10.0, cargo-smart-release v0.4.0, safety bump 3 crates (a474395)
    • make fmt, but now it picked up some parts that usually don't get altered… (01f7b72)
    • fix immediate dereference warning (0456312)
    • Merge branch 'changelog-generation' (bf0106e)
    • Merge branch 'main' into changelog-generation (c956f33)
    • Bump git-repository v0.10.0 (5a10dde)
    • Release git-repository v0.9.1 (262c122)

v0.10.5 (2021-09-10)

Commit Statistics

  • 3 commits contributed to the release over the course of 1 calendar day.
  • 3 days passed between releases.
  • 0 commits where understood as conventional.
  • 0 issues like '(#ID)' where seen in commit messages

Commit Details

view details
  • Uncategorized
    • Release gitoxide-core v0.10.5 (590e59b)
    • Bump git-repository v0.9.0 (b797fc1)
    • [repository #193] Add feature flags for async/blocking (57f482c)

v0.10.4 (2021-09-07)

Commit Statistics

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

Commit Details

view details
  • Uncategorized
    • Release gitoxide-core v0.10.4 (5ae584c)
    • [repository #185] support for initializing bare repositories (9e8a39e)
    • [repository #185] refactor (63089ff)
    • [repository #185] refactor repository initialization… (5ff7eaa)

v0.10.3 (2021-08-29)

Commit Statistics

  • 36 commits contributed to the release over the course of 11 calendar days.
  • 12 days passed between releases.
  • 0 commits where understood as conventional.
  • 0 issues like '(#ID)' where seen in commit messages

Thanks Clippy

Clippy helped 1 time to make code idiomatic.

Commit Details

view details
  • Uncategorized
    • Release gitoxide-core v0.10.3 (e132680)
    • [various #184] configure docs.rs build features (cc50249)
    • Bump git-repository v0.8.0 (cdb45ff)
    • [ref #190] move remaining file store functions to extension trait (60fc215)
    • Bump git-protocol v0.10.0 (82d5a0b)
    • [odb #180] refactor (eff21da)
    • [pack #179] refactor bundle (420dca2)
    • [pack #179] refactor (ab6554b)
    • [object #177] cleanup CommitRefIter imports and git_object::Error (058f68a)
    • [object #177] commit::RefIter -> CommitRefIter (e603306)
    • [various #190] rename 'local-offset' to 'local-time-support' (3a7d379)
    • [repository #190] Make local-offset available on demand only… (1927be7)
    • [object #177] move immutable::* to crate::*Ref, start iter adjustments (461dc53)
    • [object #177] rename immutable::* to immutable::*Ref (6deb012)
    • [ref #175] follow (try_)find(_what) naming convention (679895c)
    • Merge pull request #172 from mellowagain/main (61aebbf)
    • [pack #170] there can only be one (dce4f97)
    • [pack #170] clru allows for free lists, reducing allocation pressure... (4d820d2)
    • Revert "[pack #67] Don't pre-fetch packed objects during counting" (811bb54)
    • [stability #171] Simply commit on git-ref/git-config stability tier 1… (f6560ff)
    • [pack #67] Don't pre-fetch packed objects during counting (d08b673)
    • [pack #67] refactor (14717f6)
    • [pack #67] Optimize caches based on cache debugging (1271c01)
    • Merge branch 'main' into stability (11bae43)
    • cleanup imports (e669303)
    • Merge branch 'main' into 162-repo-design-sketch (e63b634)
    • [stability #171] Don't leak unstable plumbing crates in git-repository… (71eb30f)
    • [pack #167] a single-threaded special case for counting… (65e29de)
    • [pack #167] Error handling for object input (0aac40c)
    • [ref #165] refactor (66624c3)
    • [pack #167] remove iterator based count objects impl… (7ec2f2b)
    • [pack] A non-iterator version of parallel object counting… (04fe855)
    • [repository #165] prepare for writing light docs for Easy (f8834c9)
    • [repository #165] refactor (3a0160e)
    • thanks clippy (1f2d458)
    • [smart-release #162] rename git-repository::object -> objs (ac70d81)

v0.10.2 (2021-08-17)

Commit Statistics

  • 3 commits contributed to the release over the course of 1 calendar day.
  • 2 days passed between releases.
  • 0 commits where understood as conventional.
  • 0 issues like '(#ID)' where seen in commit messages

Commit Details

view details
  • Uncategorized
    • Release gitoxide-core v0.10.2 (b96a518)
    • bump git-protocol to v0.9.0 as there are breaking changes (b4e3340)
    • Apply nightly rustfmt rules. (5e0edba)

v0.10.1 (2021-08-15)

Lines 1–500 of 1132.