1762 lines · 166.1 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.19.0 (2022-11-06)

New Features

  • gix remote ref-map --show-unmapped-remote-refs. That way it's more obvious to see what was filtered out by ref-specs.

    It's also great to validate that server-side filtering via ref-prefix will not send refs that are referred to by symbolic refs that are not filtered out. That should be fine as it's all about objects, it's just something to deal with as we may have to deal with symbolic refs that aren't in the set of refs the server sent to us.

  • ein t hours allows to specify the amount of worker threads.

  • ein tool hours -l|f ignores merge commits entirely. These need special treatment to count correctly, and are out of scope for now.

Bug Fixes

  • collect stderr and print it afterwards to avoid intersection with line progress. Previously it would happen that stderr would be printed directly and mix with the line progress (as in -v) which also prints to stderr.

    Now errors are collected and output at the end once the line renderer was already shutdown.

  • ein t organize won't complain about file:// urls anymore, but skip them.

  • ein tool hours -l should now count lines correctly.

  • ein tool hours now properly calculates per-user lines of code.

New Features (BREAKING)

  • remove gix remote --url in favor of determining the intention similar to git fetch

Commit Statistics

  • 81 commits contributed to the release over the course of 47 calendar days.
  • 47 days passed between releases.
  • 8 commits were understood as conventional.
  • 3 unique issues were worked on: #450, #536, #XXX

Thanks Clippy

Clippy helped 2 times to make code idiomatic.

Commit Details

view details
  • #450
    • fix build (f5155e0)
    • refactor (4dd67db)
    • adapt to changes in git-protocol (f409e4a)
    • adapt to changes in git-protocol (64db0b2)
    • adjust to changes in git-protocol (ffefe88)
    • gix remote ref-map --show-unmapped-remote-refs. (e973dfe)
    • adjust to changes in git-repository (fc26e4c)
    • apply configuration overrides to newborn repo during clone (c8ef759)
    • collect stderr and print it afterwards to avoid intersection with line progress. (3a05328)
    • inform about conflicts after checking out a clone (91798ae)
    • avoid showing thread progress during clone-pack-resolution (056f4dd)
    • adjust to changes in git-repository (d2ebe34)
    • less noisy way of writing trait bounds (b593806)
    • fix async build (ae3ced2)
    • reduce verbosity of clone and print once entire clone is done (9a476df)
    • upgrade to prodash v21 (a0655dc)
    • Make it possible to ignore specs that don't match when iterating mappings. (bc991ff)
    • first rough sketch of gix clone (23a5e8b)
    • also inform about the location of the new pack and index files (d782ff0)
    • adjust fetch-progress range (6e2a237)
    • support for handshake information in gix fetch (c47dcc6)
    • first sketch of printing fetch results, but… (13ac9ba)
    • first basic printing of result when no change was found (cd1d2aa)
    • better error messages if no ref-specs are provided where needed (981488b)
    • fix journeytests (9c9df03)
    • fix build (d034882)
    • Fetch works, but needs more printing of information after the fact (57fab9a)
    • a sketch of how fetching could work, but it fails with the line-reader for some reason (ac17e11)
    • remove gix remote --url in favor of determining the intention similar to git fetch (92bbe33)
    • support for --url for arbitrary urls when fetching (8c7351c)
    • Frame for gix fetch (5b72d27)
    • adapt to changes in git-pack (474156f)
    • adapt to changes in git-pack (d5254c2)
    • fix build (d1cb6cc)
    • Allow to turn remote-filtering off. (38373bc)
  • #536
    • ein t hours allows to specify the amount of worker threads. (20259da)
  • #XXX
    • ein tool hours -l should now count lines correctly. (69ef31f)
  • Uncategorized
    • prepare changelogs prior to release (423af90)
    • Merge branch 'main' into write-sparse-index (c4e6849)
    • make fmt (ea2136b)
    • Merge branch 'gix-clone' (def53b3)
    • fix build and docs (971fe0c)
    • Merge branch 'main' into gix-clone (fa27570)
    • Merge branch 'imra-diff' (f53f942)
    • adapt to changes in git-diff for a 2x speedup when calculating line changes (296f3b6)
    • Merge branch 'main' into gix-clone (de4fe06)
    • Merge branch 'fix-gix-index-from-tree' (da5f63c)
    • write index without output path to memory only. (c8d0345)
    • thanks clippy (59dfc7e)
    • Use git::File::write* methods to write the index (3efc6dc)
    • adjust to changes in git-index (fc65db0)
    • adjust to changes in git-index (fa6bcde)
    • adjust to changes in git-index (b77a390)
    • adjust to changes in git-index (dab3a45)
    • thanks clippy (6be3207)
    • Merge branch 'gix-index-from-tree' (8c24386)
    • Auto-tree conversion in index from-tree (bae4589)
    • refactor (67f2247)
    • refactor (01ab5ca)
    • Release git-hash v0.9.11, git-features v0.23.0, git-actor v0.13.0, git-attributes v0.5.0, git-object v0.22.0, git-ref v0.17.0, git-sec v0.4.1, git-config v0.9.0, git-url v0.10.0, git-credentials v0.6.0, git-diff v0.20.0, git-discover v0.6.0, git-traverse v0.18.0, git-index v0.6.0, git-mailmap v0.5.0, git-pack v0.24.0, git-odb v0.34.0, git-packetline v0.13.1, git-transport v0.21.0, git-protocol v0.21.0, git-revision v0.6.0, git-refspec v0.3.0, git-worktree v0.6.0, git-repository v0.25.0, safety bump 24 crates (104d922)
    • Merge branch 'clone' (507dc7e)
    • fix build (314b5e0)
    • Merge branch 'main' into new-http-impl (702a161)
    • Merge branch 'crates-index-diff-fixes' (b09bad7)
    • adapt to changes in git-pack (4edaec8)
    • make fmt (53acf25)
    • Merge branch 'fetch-pack' (f47c891)
    • Merge branch 'fetch-pack' (3c49400)
    • refactor… (f9f5f6a)
    • input id can now be a commit or tree as prefix or full object id (8ef3fcb)
    • print information about filtered ref-specs as well. (8b6ecb2)
    • Properly compute progress range of stat commits by considering skipped merges (2637587)
    • don't account for main thread which won't be busy quickly. (5f4215f)
    • Merge branch 'fix-odb-race' (b862fc5)
    • Merge branch 'main' into fix-odb-race (30712dc)
    • ein tool hours -l|f ignores merge commits entirely. (23f8402)
    • ein t organize won't complain about file:// urls anymore, but skip them. (05387a6)
    • refactor (17b0462)
    • Also inform about files/lines remaining (bd76cbd)
    • ein tool hours now properly calculates per-user lines of code. (4feca8e)
    • Merge branch 'diff' (25a7726)

0.18.0 (2022-09-20)

Changed

  • ein tool hours -s was split into -f|--file-stats and -l|line-stats. That way more information is generated at increasingly high costs.

New Features

  • ein tool hours -s shows statistics about files added/removed/modified.
  • ein tool hours --stat to collect additional statistics per author. Note that these are expensive and unconditionally use threads to speed up these computations.
  • ein tool hours is (even) faster and uses half the peak memory. On the linux kernel, this causes a peak memory usage of 120MB, whereas git hovers at 1.4GB.
  • ein tool hours -b ignores bots. For now it only considers bots with names containing [bot].
  • ein tool hours -p now shows the percentage of hours worked as well. That way it's easier to tell how much time was invested per author.
  • protocol::Context::to_bstring(), and use it in example/git-credential-lite

New Features (BREAKING)

  • git-diff is now included by default as part of core functionality

Commit Statistics

  • 70 commits contributed to the release over the course of 27 calendar days.
  • 27 days passed between releases.
  • 8 commits were understood as conventional.
  • 3 unique issues were worked on: #450, #470, #XXX

Commit Details

view details
  • #450
    • refactor (11851f3)
    • option to print server information about the connection (4720666)
    • don't print tags as target, as it's misleading (098961f)
    • nicer printing of fixes (fec6db8)
    • adapt to changes in git-refspec (91d1a3a)
    • show fixes as well (2237495)
    • Correct printing of tag information (even though it doesn't look great) (f4d8198)
    • better refmap printing (6f60a79)
    • first basic implementation of ref-map (4dbfa4c)
    • wire up the ref-map sub-command. (94c2b78)
    • adjust to changes in git-protocol (06d45ff)
    • remove quick-error in favor of thiserror (ea84e62)
    • Use repository configuration for calling credential helper (8e07784)
    • refactor (7abc0a3)
    • Add sketch of gix credential (642e21f)
    • protocol::Context::to_bstring(), and use it in example/git-credential-lite (15f1afc)
    • adjust to deal with changes to git-repository (b99b6bf)
    • adjust to changes in git-credentials (dc32898)
    • adjust to changes in git-credentials (cabe40a)
  • #470
    • update changelogs prior to release (caa7a1b)
    • percentages for files and lines added (bf63a13)
    • only diff files that are probably not a binary file (as per extension). (2a3c5b0)
    • replace flume with crossbeam-channel as it's already in the dependency graph (e27b65a)
    • refactor (e3e3211)
    • make stat extractions interruptable (cb53324)
    • collect changes lines as well (84eb777)
    • show discovered file chnages in real-time (0614318)
    • ein tool hours -s was split into -f|--file-stats and -l|line-stats. (3c7c9a7)
    • avoid binary search if there is nothing to find (ffd4f0f)
    • ein tool hours -s shows statistics about files added/removed/modified. (b8f2f8b)
    • working progress printing (67ec2c7)
    • First attempt to get progress information from stat worker. (0947c70)
    • ein tool hours --stat to collect additional statistics per author. (28c4cae)
  • #XXX
    • git-diff is now included by default as part of core functionality (e090f84)
  • Uncategorized
    • Release git-command v0.1.0, git-prompt v0.1.0, git-url v0.9.0, git-credentials v0.5.0, git-diff v0.19.0, git-mailmap v0.4.0, git-chunk v0.3.2, git-pack v0.23.0, git-odb v0.33.0, git-packetline v0.13.0, git-transport v0.20.0, git-protocol v0.20.0, git-revision v0.5.0, git-refspec v0.2.0, git-repository v0.24.0, git-commitgraph v0.9.0, gitoxide-core v0.18.0, gitoxide v0.16.0 (f5c36d8)
    • Release git-hash v0.9.10, git-features v0.22.5, git-date v0.2.0, git-actor v0.12.0, git-glob v0.4.0, git-path v0.5.0, git-quote v0.3.0, git-attributes v0.4.0, git-config-value v0.8.0, git-tempfile v2.0.5, git-validate v0.6.0, git-object v0.21.0, git-ref v0.16.0, git-sec v0.4.0, git-config v0.8.0, git-discover v0.5.0, git-traverse v0.17.0, git-index v0.5.0, git-worktree v0.5.0, git-testtools v0.9.0, git-command v0.1.0, git-prompt v0.1.0, git-url v0.9.0, git-credentials v0.5.0, git-diff v0.19.0, git-mailmap v0.4.0, git-chunk v0.3.2, git-pack v0.23.0, git-odb v0.33.0, git-packetline v0.13.0, git-transport v0.20.0, git-protocol v0.20.0, git-revision v0.5.0, git-refspec v0.2.0, git-repository v0.24.0, git-commitgraph v0.9.0, gitoxide-core v0.18.0, gitoxide v0.16.0, safety bump 28 crates (29a043b)
    • Speed up ein t hours even more by optimizing git-mailmap. (2549195)
    • Merge branch 'hours-upgrade' (26489d1)
    • ein tool hours is (even) faster and uses half the peak memory. (4d0977d)
    • ein t hours: introduce string heap for cutting peak memory in half (d79133b)
    • prepare for deduplicating strings (98465a6)
    • remove rayon in favor of a simple worker thread (5d70f87)
    • use rev-specs instead of ref-names (cf7182e)
    • make fmt (429cccc)
    • ein tool hours -b ignores bots. (5d0332f)
    • ein tool hours -p now shows the percentage of hours worked as well. (f28783b)
    • Merge branch 'filter-refs' (3773b92)
    • implement gix index from-tree (2fbd3df)
    • Merge branch 'index-from-tree' (172f73c)
    • use rev_parse_single() instead of rev_parse().single() (09948a5)
    • Merge branch 'gix_rev_parse_time_format' (9399fc9)
    • remove explicit git-features crate (c41c94b)
    • remove git-config dependency (cf63d87)
    • remove unnecessary git-date dependency (cbc9ba9)
    • gix rev parse uses ISO8601 time format. (efefac4)
    • make fmt (535e967)
    • Merge branch 'filter-refs-by-spec' (5c05198)
    • Merge branch 'main' into filter-refs-by-spec (9aa1d3d)
    • Release git-features v0.22.4, git-url v0.8.0, safety bump 4 crates (1d4600a)
    • Merge branch 'main' into index-from-tree (bc64b96)
    • Merge branch 'main' into filter-refs-by-spec (51dc828)
    • Release git-diff v0.18.1, git-discover v0.4.2, git-traverse v0.16.4, git-repository v0.23.1 (2571831)
    • Merge branch 'main' into filter-refs-by-spec (56ba481)
    • Make sure we start out at a commit for the traversal to work (ce01093)
    • A basic implementation of rev-list without anything fancy (791dd66)
    • Merge branch 'main' into filter-refs-by-spec (cef0b51)
    • Release git-object v0.20.3, git-ref v0.15.4, git-config v0.7.1, git-diff v0.18.0, git-traverse v0.16.3, git-pack v0.22.0, git-odb v0.32.0, git-url v0.7.3, git-transport v0.19.3, git-protocol v0.19.1, git-refspec v0.1.1, git-repository v0.23.0, safety bump 6 crates (85a3bed)
    • Release git-features v0.22.3, git-revision v0.4.4 (c2660e2)
    • Merge branch 'main' into filter-refs-by-spec (cfa1440)
    • Merge branch 'fix-ci-installation' (9245083)

0.17.0 (2022-08-24)

Chore

  • uniformize deny attributes

New Features

  • gix remote refs to list all remote references of a suitable remote. This takes into account either a named remote, or the remote associated with the current branch, or the default remote it could deduce or obtain from the configuration.
  • use docsrs feature in code to show what is feature-gated automatically on docs.rs
  • pass --cfg docsrs when compiling for https://docs.rs

Changed (BREAKING)

  • remove gix free remote ref-list in favor of gix remote refs The functinality is the same, but the latter is built on top of a repository which is slightly less flexible, but preferable over maintaining a non-repo version.

Commit Statistics

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

Commit Details

view details
  • #450
    • Support for -c CLI config overrides in gix config. (19c1746)
    • remove gix free remote ref-list in favor of gix remote refs (dda9957)
    • refactor (e0be6e9)
    • Add support for passing urls directly to bypass all remote repository logic. (df3cf18)
    • gix remote refs to list all remote references of a suitable remote. (5d6d5ca)
    • Try to use maybe async for the simplest of possibly blocking remote interactions (db4df25)
    • basic parsing of gix remote refs without any implementation. (f8f1249)
  • Uncategorized
    • Release git-date v0.1.0, git-actor v0.11.4, git-revision v0.4.3, git-repository v0.22.1, cargo-smart-release v0.11.0, git-commitgraph v0.8.2, gitoxide-core v0.17.0, gitoxide v0.15.0 (1fb931a)
    • update changelogs prior to release (23cb58f)
    • Release git-date v0.0.5, git-hash v0.9.8, git-features v0.22.2, git-actor v0.11.3, git-glob v0.3.2, git-quote v0.2.1, git-attributes v0.3.2, git-tempfile v2.0.4, git-lock v2.1.1, git-validate v0.5.5, git-object v0.20.2, git-ref v0.15.2, git-sec v0.3.1, git-config v0.7.0, git-credentials v0.4.0, git-diff v0.17.2, git-discover v0.4.1, git-bitmap v0.1.2, git-index v0.4.2, git-mailmap v0.3.2, git-chunk v0.3.1, git-traverse v0.16.2, git-pack v0.21.2, git-odb v0.31.2, git-packetline v0.12.7, git-url v0.7.2, git-transport v0.19.2, git-protocol v0.19.0, git-revision v0.4.2, git-refspec v0.1.0, git-worktree v0.4.2, git-repository v0.22.0, safety bump 4 crates (4974eca)
    • Merge branch 'remote-ls-refs' (39d585d)
    • Merge branch 'main' into remote-ls-refs (e2ee3de)
    • Merge branch 'docsrs-show-features' (31c2351)
    • use docsrs feature in code to show what is feature-gated automatically on docs.rs (b1c40b0)
    • uniformize deny attributes (f7f136d)
    • pass --cfg docsrs when compiling for https://docs.rs (5176771)
    • Merge branch 'main' into remote-ls-refs (c82bbfa)
    • prepare for release of git-repository (8aa5389)
    • Merge branch 'main' into remote-ls-refs (bd5f3e8)
    • greatly improve gix commit describe performance by adding an object cache (d07daaa)

0.16.0 (2022-08-17)

New Features

  • --cat-file flag for gix rev parse to cat instead of resolving.
  • gix rev previous-branches subcommand

Changed (BREAKING)

  • remove Repository::load_index() in favor of repo.worktree().open_index().

  • git_revision is now available in revision::plumbing. That way it won't clash with the higher-level constructs on top of it which use the same names.

  • adapt to changes in git-url and use BString to represent URLs. They can contain paths, which is why String can't repsent a URL losslessly.

    For HTTP urls these are ultimately UTF-8 strings though.

New Features (BREAKING)

  • gix rev resolve --explain
  • Repository::rev_parse() returns a RevSpec. This lays the foundation for actually handling rev-specs faithfully. Previous users should use rev_parse().single() to obtain a single object id which was the only supported usecase previously.

Commit Statistics

  • 45 commits contributed to the release over the course of 26 calendar days.
  • 26 days passed between releases.
  • 7 commits were understood as conventional.
  • 3 unique issues were worked on: #427, #450, #482

Thanks Clippy

Clippy helped 1 time to make code idiomatic.

Commit Details

view details
  • #427
    • --cat-file flag for gix rev parse to cat instead of resolving. (b83f6bd)
    • gix rev resolve --explain (c5846e0)
    • make fmt (4b320e7)
    • gix rev previous-branches subcommand (e972aad)
    • support for parsing multiple specs in one invocation (84b5448)
    • adapt to changes in git-repository (ebb788c)
    • remove Repository::load_index() in favor of repo.worktree().open_index(). (ea35183)
    • Assure desirable performance by assuring an object cache exists. (af32128)
    • Use Display for revision printing instead of Debug (d194f15)
    • git_revision is now available in revision::plumbing. (4fd0968)
    • Make use of git-revision::Spec in RevSpec data structure. (004915e)
    • adjust to change in git-revision (51762bb)
    • adjust to changes in git-revision (df7da1f)
    • adjust to changes in git-revision (a70f262)
    • gix rev parse now uses Repository::rev_parse() (e191681)
    • Repository::rev_parse() returns a RevSpec. (e2aff28)
  • #450
  • #482
    • Bring back conversion from discovery kind to git-repository::Kind (ebb5bee)
  • Uncategorized
    • Release git-commitgraph v0.8.1, gitoxide-core v0.16.0, gitoxide v0.14.0 (183c048)
    • prepare for gitoxide release (6305d52)
    • Release git-date v0.0.3, git-actor v0.11.1, git-attributes v0.3.1, git-tempfile v2.0.3, git-object v0.20.1, git-ref v0.15.1, git-config v0.6.1, git-diff v0.17.1, git-discover v0.4.0, git-bitmap v0.1.1, git-index v0.4.1, git-mailmap v0.3.1, git-traverse v0.16.1, git-pack v0.21.1, git-odb v0.31.1, git-packetline v0.12.6, git-url v0.7.1, git-transport v0.19.1, git-protocol v0.18.1, git-revision v0.4.0, git-worktree v0.4.1, git-repository v0.21.0, safety bump 5 crates (c96473d)
    • Merge branch 'submodule-open' (8f5f3ab)
    • Release git-hash v0.9.7, git-features v0.22.1 (232784a)
    • Merge branch 'main' into remote-ls-refs (c4bf958)
    • Merge branch 'index-write-refactor' (805f432)
    • fix tree ext reading and writing; round-trip with long path works now (f93febe)
    • Merge branch 'main' into write-index-v2 (a938986)
    • Merge branch 'main' into remote-ls-refs (de61c4d)
    • thanks clippy (4bd747c)
    • Merge branch 'parse-refspec' (2ba338e)
    • Merge branch 'rev-parse-delegate' (2f506c7)
    • Merge pull request #2 from SidneyDouw/main (ce885ad)
    • Merge branch 'Byron:main' into main (9b9ea02)
    • Merge branch 'main' into rev-parse-delegate (6da8250)
    • Merge branch 'main' into pathspec (7b61506)
    • make fmt (47724c0)
    • Merge branch 'kianmeng-fix-typos' (4e7b343)
    • Fix typos (e9fcb70)

0.15.0 (2022-07-22)

Changed (BREAKING)

  • remove local-time-support feature toggle. We treat local time as default feature without a lot of fuzz, and will eventually document that definitive support needs a compile time switch in the compiler (--cfg unsound_local_offset or something).

    One day it will perish. Failure is possible anyway and we will write code to deal with it while minimizing the amount of system time fetches when asking for the current local time.

  • Associate file::Metadata with each File. This is the first step towards knowing more about the source of each value to filter them based on some properties.

    This breaks various methods handling the instantiation of configuration files as file::Metadata typically has to be provided by the caller now or be associated with each path to read configuration from.

New Features

  • gix config with section and sub-section filtering.
  • gix config lists all entries of all configuration files git considers. Filters allow to narrow down the output.
  • Use git-config to write config file on initialization, including logallrefupdates and precomposeunicode.

Bug Fixes

  • ein tool organize now ignores worktrees. Previously it would report an error due to invalid assumptions. The new behaviour acknowledges that worktrees are placed by hand and moving them is almost always not what the user would want, even ignoring the added complexity in doing so correctly.
  • improve error messages related to object decoding

Commit Statistics

  • 81 commits contributed to the release over the course of 101 calendar days.
  • 108 days passed between releases.
  • 7 commits were understood as conventional.
  • 3 unique issues were worked on: #301, #331, #427

Thanks Clippy

Clippy helped 2 times to make code idiomatic.

Commit Details

view details
  • #301
    • fix build (d7dac11)
    • refactor (7b5fe1d)
    • adjust to changes in git-repository (e1dbf85)
    • fix build (40b8d4c)
    • Allow reading patterns from stdin (0c597fe)
    • Add --show-ignore-patterns to gix repo exclude query (09f904b)
    • Basic prefix support as well the first working version of exclude query (9cb8385)
    • Support for overrides on the command-line (7d98b21)
    • preliminary access to a fully configured exclusion cache (259d015)
    • fix build (cb56f12)
    • sketch open_index() on Worktree, but… (ff76261)
    • a sketch of basic Worktree support (732f6fb)
    • refactor (3ff991d)
    • frame for gix repo exclude query (a331314)
    • adapt to changes in git-path (cc2d810)

Lines 1–500 of 1762.