Skip to content

Latest commit

 

History

History
2097 lines (1581 loc) · 143 KB

CHANGELOG.md

File metadata and controls

2097 lines (1581 loc) · 143 KB

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.38.0 (2024-10-22)

New Features

  • support for listing worktrees with gix worktree list

  • add first 'debug' version of gix diff tree. It's primarily meant to better understand gix blame.

  • add new gix cat command. It only prints things without fuzz.

    Inspired by https://youtu.be/JYH5ILv5g1g?si=bHLBPFJiZyRUTl6u&t=211.

  • add gix merge-file with similar features as git merge-file

  • gix merge-base for the CLI For now it only supports the standard merge-base, but more derivatives can be added easily on demand.

Bug Fixes

  • Adjust gix clean warning and help for worktree fix
  • Clarify -r/--repositories and --skip-hidden-repositories This adds information to the help text for the git clean options -r/--repositories and --skip-hidden-repositories to make it clearer what their relationship is, avoid creating the false impression that repositories are never deleted in the absence of -r/--repositories, and note that --skip-hidden-repositories is sometimes needed to preserve not only separate repositories but the (probably rarer) case of hidden nested worktrees of the current repository.

Other

  • switch from time to jiff This swaps out time for jiff. It doesn't completely remove time from the dependency tree. The last remaining use of time is in prodash, outside of the gitoxide project.

Other

  • Unify style in config support info This builds on b31d6b7 (#1531) by adjusting the capitalization and quoting style of string arguments in progress.rs that help document the status of what configuration options are and are not planned.

    • Since I believe these strings are not usually rendered as Markdown, and most places that code formatting in Markdown would be used were already written with single quotes, this applies that quoting style consistently.

    • This applies initial capitalization, which was sometimes but not always done. It does not apply a consistent style for when a string will end in a ., which seems already to differ deliberately for reasons of clarity. That can be adjusted later.

    • A small amount of minor rewording for clarity is also included.

Commit Statistics

  • 28 commits contributed to the release over the course of 89 calendar days.
  • 91 days passed between releases.
  • 9 commits were understood as conventional.
  • 1 unique issue was worked on: #1572

Commit Details

view details
  • #1572
    • Make clear what gix commit-graph is (49bca2a)
  • Uncategorized
    • Merge pull request #1639 from cruessler/respect-env-variables (48aa74b)
    • Respect env variables when running gix (0bebe52)
    • Merge pull request #1626 from cruessler/add-gix-diff (f186c23)
    • Some minor modifications (6777ecb)
    • Add first 'debug' version of gix diff tree. (0c554e0)
    • Merge pull request #1616 from Byron/git-cat (31bdd2e)
    • Add new gix cat command. (9c8bc03)
    • Merge pull request #1611 from Byron/merge (5ffccd2)
    • Add gix merge-file with similar features as git merge-file (3da2da9)
    • Add all keys for merge-configuration (e0b09d2)
    • Merge pull request #1566 from Byron/merge (d69c617)
    • Merge pull request #1557 from Byron/merge-base (649f588)
    • gix merge-base for the CLI (7249291)
    • Allow empty-docs (beba720)
    • Merge pull request #1546 from nyurik/semilocons (f992fb7)
    • Add missing semicolons (ec69c88)
    • Merge pull request #1537 from EliahKagan/progress-style (472fe5f)
    • Unify style in config support info (786bfec)
    • Merge pull request #1531 from EliahKagan/progress-typos (25a3f1b)
    • Fix typos in config support info (b31d6b7)
    • Merge branch 'ag/jiff' (5871fb1)
    • Switch from time to jiff (28ac657)
    • Merge pull request #1471 from EliahKagan/hidden (a9aac4f)
    • Adjust gix clean warning and help for worktree fix (6eb4ea6)
    • Clarify -r/--repositories and --skip-hidden-repositories (c241422)
    • Merge branch 'fix-clean' (33eacfb)
    • Support for listing worktrees with gix worktree list (c7213bc)

0.37.0 (2024-07-23)

New Features

  • add mailmap check similar to git check-mailmap. That way it becomes a little easier to maybe try out other special cases in the wild.
  • gix clone with --ref support. --ref is similar to --branch, but was renamed as it also supports tags for example.

Other

  • Make it easier to compile gitoxide as dynlib And also optimize compilation time: By making plumbing and porcelain as modules the lib.rs, they can be compiled after the rmeta for the dependencies are generated.

    For the uni.rs which uses both plumbing and porcelain, this would avoid compiling these two modules twice.

Commit Statistics

  • 13 commits contributed to the release.
  • 62 days passed between releases.
  • 3 commits were understood as conventional.
  • 0 issues like '(#ID)' were seen in commit messages

Thanks Clippy

Clippy helped 1 time to make code idiomatic.

Commit Details

view details
  • Uncategorized
    • Merge branch 'fix-mailmap' (f107014)
    • Add descriptive docs for mailmap check (3e08fa3)
    • Add mailmap check similar to git check-mailmap. (2a56387)
    • Merge branch 'main' into config-key-take-2 (9fa1054)
    • Merge branch 'feat/checkout-other-refs' (ecfde07)
    • gix clone with --ref support. (9bf01e4)
    • Merge branch 'status' (2f9f0ac)
    • Thanks clippy (acc1331)
    • Merge pull request #1384 from NobodyXu/feat/easier-to-compile-gix-as-dynlib (bb30e52)
    • Fix clippy warning (bf5a111)
    • Fix compilation error in src/plumbing/main.rs (4596a39)
    • Fix compilation errors (0b5dc74)
    • Make it easier to compile gitoxide as dynlib (202f3e4)

0.36.0 (2024-05-22)

New Features

  • checkout respects options for core.protectHFS and core.protectNTFS. This also adds gitoxide.core.protectWindows as a way to enforce additional restrictions that are usually only available on Windows.

    Note that core.protectNFS is always enabled by default, just like it is in Git.

Bug Fixes

  • more robustness in the face of a trampling-herd of threads loading a single index. The motivating example is here: praetorian-inc/noseyparker#179

    Previously, it was possible for a trampling herd of threads to consolidate the disk state. Most of them would be 'needs-init' threads which could notice that the initialization already happened, and just use that.

    But a thread might be late for the party and somehow manages to not get any newly loaded index, and thus tries to consolidate with what's on disk again. Then it would again determine no change, and return nothing, causing the caller to abort and not find objects it should find because it wouldn't see the index that it should have seen.

    The reason the thread got into this mess is that the 'is-load-ongoing' flagging was racy itself, so it would not wait for ongoing loads and just conclude nothing happened. An extra delay (by yielding) now assures it either seees the loading state and waits for it, sees the newly loaded indices.

    Note that this issue can be reproduced with:

    './target/release/gix -r repo-with-one-pack -t10 --trace odb stats --extra-header-lookup'
    

Commit Statistics

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

Commit Details

view details
  • Uncategorized
    • Merge branch 'various-fixes' (d6cd449)
    • Merge pull request from GHSA-7w47-3wg8-547c (79dce79)
    • Checkout respects options for core.protectHFS and core.protectNTFS. (886d6b5)
    • Mark safety-related core-flags as planned (f3d5a69)
    • Merge branch 'status' (04ef31e)
    • More robustness in the face of a trampling-herd of threads loading a single index. (addf446)

0.35.0 (2024-04-13)

New Features

  • add gix status --ignored support

  • add gix status --index-worktree-renames This enables rename-tracking between worktree and index, something that Git also doesn't do or doesn't do by default. It is, however, available in git2.

  • gix status with submodule and rewrite support. Submodule changes are now picked up as long as the submodule is in the index. Further, it's possible to enable rename-tracking between index and worktree separately.

  • add gix is-clean|is-changed It's a good way to compare the time it takes to run a full status compared to a quick is-dirty check.

  • gix submodules list --dirty-suffix for dirty-information This is a submodule-centric and greatly simplified way of obtaining describe information with dirty-suffix.

    Note that status information is also possible, but it seems hard to display nicely, which this command isn't great at in the first place.

  • add gix commit describe --dirty-suffix That way a suffix will be added depending on the dirty-state of the repository.

Commit Statistics

  • 11 commits contributed to the release.
  • 6 commits were understood as conventional.
  • 0 issues like '(#ID)' were seen in commit messages

Commit Details

view details
  • Uncategorized
    • Merge pull request #1341 from szepeviktor/typos (55f379b)
    • Fix typos (f72ecce)
    • Merge branch 'status' (3e5c974)
    • Add gix status --format to communicate the current format is very simple. (23bea36)
    • Add gix status --ignored support (84c74ff)
    • Add gix status --index-worktree-renames (66e87cd)
    • Fix lints for nightly, and clippy (f8ce3d0)
    • gix status with submodule and rewrite support. (61c002b)
    • Add gix is-clean|is-changed (98b3680)
    • gix submodules list --dirty-suffix for dirty-information (afd20ca)
    • Add gix commit describe --dirty-suffix (58231b4)

0.34.0 (2024-02-25)

New Features

  • add gix clean --patterns-for-entries|-m to help with wildcards.
  • basic gix clean

Commit Statistics

  • 20 commits contributed to the release.
  • 58 days passed between releases.
  • 2 commits were understood as conventional.
  • 0 issues like '(#ID)' were seen in commit messages

Commit Details

view details

0.33.0 (2023-12-29)

New Features

  • Add rev parse --reference. It's similar to git rev-parse --symbolic-full-name.

Bug Fixes (BREAKING)

  • mark gix::interrupt::init_handler() as unsafe The passed interrupt() argument will be called from a signal handler, so that needs to be documented and the call sites need to state that they fulfill the contract.

    Thanks to @Manishearth for pointing this out.

Commit Statistics

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

Commit Details

view details
  • Uncategorized
    • Merge branch 'maintenance' (4454c9d)
    • Upgrade tabled and setup wordwrapping (a78caba)
    • Merge branch 'tracking-branch' (0fe20e8)
    • Add rev parse --reference. (193ffcd)
    • Merge branch 'main' into fix-1183 (1691ba6)
    • Merge branch 'push-yvzxzqrkkvry' (4917beb)
    • Mark gix::interrupt::init_handler() as unsafe (59b8104)

0.32.0 (2023-12-06)

New Features

  • gix rev parse --format to provide different versions of the same content. This only applies to blobs, but allows to obtain different versions of the same blob like:

    • what's stored in Git
  • what would be checked out to the worktree
  • what would be diffed

Bug Fixes

  • in --trace mode, greatly increase message-buffer size. That way, it's much less likely that messages will get lost due to being overwritten before they can be displayed every 100ms or so.
  • set binary name for completions

Bug Fixes (BREAKING)

  • rename GITOXIDE_* environment variables to GIX_#

Commit Statistics

  • 27 commits contributed to the release.
  • 10 commits were understood as conventional.
  • 0 issues like '(#ID)' were seen in commit messages

Commit Details

view details
  • Uncategorized
    • Merge branch 'adjustments-for-cargo' (8156340)
    • Rename GITOXIDE_* environment variables to GIX_# (2189cee)
    • Merge branch 'gix-status' (5fdc9df)
    • gix rev parse --format to provide different versions of the same content. (cf51a4d)
    • J fmt (51c7abc)
    • Merge branch 'gix-status' (dfb3f18)
    • Adapt to changes in gix-diff (1706e23)
    • Add thediff::resource_cache() low-level utility for rapid in-memory diffing of combinations of resources. (4aea9b0)
    • Merge branch 'support_ssl_verify' (5ce9784)
    • In gix read http.sslVerify config value and pass it to gix-transport. (c6e83cf)
    • Merge branch 'check-cfg' (5a0d93e)
    • Remove dead code from non-existent "lean-cli" feature (be1fa2f)
    • Replace all docsrs config by the document-features feature (bb3224c)
    • Merge branch 'feat_basic_connectivity_check' (1f9aca5)
    • Flatten fsck connectivity into just fsck much like git fsck (7ab5c76)
    • Refactor (7a88b42)
    • Add basic connectivity check (8f795e8)
    • Merge branch 'fix-1096' (48ef17e)
    • Allow to print a tree without prettification, using --tree-style raw. (8dfbb4b)
    • Merge branch 'trace-packetlines' (e7de4c7)
    • Automatically enforce strict mode if -c options are given on the command-line. (f9ae1bc)
    • In --trace mode, greatly increase message-buffer size. (b230078)
    • Merge branch 'discover-split-worktree' (16170d9)
    • Add gix free discover to inform about repository discovery. (886289f)
    • Merge branch 'fix_completion-bin-name' (fb81093)
    • Refactor (7f2bc08)
    • Set binary name for completions (eab22bd)

0.31.1 (2023-10-13)

A re-release to deal with breakage in the dependency tree (self-caused).

Commit Statistics

  • 1 commit contributed to the release.
  • 0 commits were understood as conventional.
  • 0 issues like '(#ID)' were seen in commit messages

Commit Details

view details
  • Uncategorized
    • Improve documentation slightly (b7c9275)

0.31.0 (2023-10-12)

This release includes an overhaul of the url parsing implementation, allowing more urls to be parsed correctly and refining the error messages for invalid ones. Improvements include the added support for ssh aliases (github:byron/gitoxide has previously been parsed as local path), adjustments around the interpretation of colons in file names (previously we disallowed colons that were not followed up with a slash character) and some smaller changes that bring the interpretation of file urls more in line with Git's implementation.

There are still many (edge) cases in Git's url parsing implementation which are not handled correctly by Gitoxide. If you notice any such deviation please open a new issue to help us making Gitoxide even more correct.

New Features

  • add shell completions for bash
  • gix status auto-writes changed indices. This prevents expensive operations to re-occour.
  • gix status -s/--statistics to obtain additional information on what happened. This is useful for understanding performance characteristics in detail.

Commit Statistics

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

Commit Details

view details
  • Uncategorized
    • Merge branch 'feat_completions' (681c607)
    • Refactor (fdd2df8)
    • User decides completion output (215c3ac)
    • Add shell completions for bash (70923a0)
    • Merge branch 'reset' (b842691)
    • Trust Ctime again (f929d42)
    • gix status auto-writes changed indices. (46e5919)
    • gix status -s/--statistics to obtain additional information on what happened. (7ba2fa1)

0.30.0 (2023-09-24)

This release contains a security fix which assure URLs like 'ssh://-oProxyCommand=open$IFS-aCalculator/foo' will not execute attacker-controlled strings. The above can, on MacOS, launch the calculator app when using it with gix clone for example, up to v0.29.0.

New Features

  • gix status with basic index-worktree comparison
  • gix free index from-list and gix index from-tree gain --skip-hash. This flag can be derived from options, but thus far we have no higher-level writing of the index so this has to do to see the difference in performance.

Refactor

  • both ein and gix now share some code via the gitoxide library. This can slightly improve compile times as well, even though it wasn't measured.

Chore (BREAKING)

  • update to the latest prodash It makes proper usage of Progress types easier and allows them to be used as dyn traits as well.

Bug Fixes (BREAKING)

  • use dyn trait where possible. This reduces compile time due to avoiding duplication.

Commit Statistics

  • 13 commits contributed to the release over the course of 27 calendar days.
  • 33 days passed between releases.
  • 5 commits were understood as conventional.
  • 2 unique issues were worked on: #987, #992

Thanks Clippy

Clippy helped 1 time to make code idiomatic.

Commit Details

view details
  • #987
    • Use a multi-call binary ('uni') to have only one build step (4ef9a32)
  • #992
    • Both ein and gix now share some code via the gitoxide library. (d3ac691)
  • Uncategorized
    • Merge branch 'reset' (54a8495)
    • gix status with basic index-worktree comparison (f094f71)
    • Merge branch dynification (f658fcc)
    • Use dyn trait where possible. (072ee32)
    • Update to the latest prodash (ed327f6)
    • Merge branch 'adjustments-for-cargo' (b7560a2)
    • Merge branch 'fixes' (4bfd1cc)
    • Thanks clippy (0d6d4ec)
    • Adapt to changes in gix-index and pass skip-hash through for performance.. (713cd59)
    • gix free index from-list and gix index from-tree gain --skip-hash. (3ff5ac0)
    • Add more configuration variables prior to potentially using them; remove index.skipHash (773b6e3)

0.29.0 (2023-08-22)

New Features

  • gix submodule subcommand for simple submodule listing and information retrieval
  • gix index entries --recurse-subomdules to also list submodules.
  • gix index entries with styles and pathspecs. This adds support for more simple git style, which is faster and thus allows for more direct comparisons to git ls-files.
  • use real pathspecs where it was supported before.
  • add gix commit verify-signature to do something akin to git ... --show-signature.

Commit Statistics

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

Commit Details

view details
  • Uncategorized
    • Merge branch 'gix-submodule' (8f3f358)
    • gix submodule subcommand for simple submodule listing and information retrieval (1ccbe16)
    • Just fmt (0d258f4)
    • Merge branch 'submodule-in-gix' (36f7b78)
    • gix index entries --recurse-subomdules to also list submodules. (6bc69e3)
    • Merge branch 'submodule-active' (a3afaa4)
    • Adapt to changes in gix (ca972a2)
    • Use Defaults::from_environment() when parsing pathspecs. (2a99034)
    • Optimize startup times of gix index entries (22477bd)
    • Merge branch 'pathspec-matching' (9f4dfe0)
    • gix index entries with styles and pathspecs. (c30ac0c)
    • Use real pathspecs where it was supported before. (f194cfc)
    • Merge branch 'handlers-mt' (f584d76)
    • Adapt to changes in gix (a201f0d)
    • Merge branch 'extract-signatures' (b37affe)
    • Add gix commit verify-signature to do something akin to git ... --show-signature. (cd6cfe4)
    • Merge branch 'archive-gz' (c7d9129)
    • Adapt to changes in gix-archive (feba76d)
    • Merge branch 'submodules' (b629f8a)
    • .gitmodule file abstraction (6a2e6a4)

0.28.0 (2023-07-22)

New Features

  • add simple CLI for gix archive

Commit Statistics

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

Commit Details

view details
  • Uncategorized
    • Merge branch 'gix-archive' (1dda48b)
    • Allow to create additional entries via the command-line (4a9d0f1)
    • Add compression support to gix archive, which is where it should shine. (567b1a4)
    • Add simple CLI for gix archive (32bbb8b)
    • Merge branch 'integrate-filtering' (b19a56d)
    • Add keys required to deal with worktree conversions and filters. (3fbd7b0)
    • Merge branch 'basic-filtering' (3fd5e16)
    • Add some configuration variables as planned due to relevancy with filters (fa04378)

0.27.0 (2023-06-22)

This release fixes a possibility for V1 fetches to deadlock if negotiation would span multiple rounds (see issue #882) for details.

New Features (BREAKING)

  • list commit-graph entries by graph traversal, move commit-graph up to gix level. This is merely a debug tool to learn about generation numbers. All commit-graph commands now operate on a repository.

New Features

  • gix --trace to also print tree-like instrumentation

  • gix fetch --open-negotiation-graph[=limit] Open the negotiation graph as SVG, after optionally specifying a limit as rendering/layouting can be very slow.

    It's useful to see how the negotiation algorithm is reasoning about each commit.

  • gix fetch --negotiation-info to provide additional information about the negotiation phase.

  • bit revision list --svg to create a visual graph of commits. It's mainly a test of how well layout-rs performs.

Chore

  • Add clippy::redundant-closure-for-method-calls lint

Commit Statistics

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

Thanks Clippy

Clippy helped 1 time to make code idiomatic.

Commit Details

view details
  • Uncategorized
    • Make gitoxide publishable again (c16b1df)
    • Merge branch 'gix-corpus' (5861afb)
    • Add corpus --dry-run and --task-sql-suffix and --repo-sql-suffix (4cef57d)
    • Gix-corpus now respects the --trace flag (0f973ac)
    • Adapt to changes in gix-trace (bd6e3d7)
    • Merge branch 'corpus' (aa16c8c)
    • Thanks clippy (361cf96)
    • gix --trace to also print tree-like instrumentation (c494cfd)
    • Run tasks in parallel (cfd8e88)
    • Refresh a corpus repositories by updating all of them. (a0b4385)
    • Obtain a repository-list with classifiers (a4300c8)
    • Provide all the meta-data that is needed to make a run (and associate it with that) (fcbda1d)
    • A build script to set a gitoxide version according to what's in git (83f6466)
    • A basic command to perform a corpus run (d9e74ff)
    • Merge branch 'gix-revision-graph' (036e60a)
    • gix fetch --open-negotiation-graph[=limit] (452ed6b)
    • gix fetch --negotiation-info to provide additional information about the negotiation phase. (096838f)
    • Make top-level gix docs available when using cargo doc (518159d)
    • bit revision list --svg to create a visual graph of commits. (bd32e39)
    • Merge branch 'help-874-redundant-closures' (fe59956)
    • Merge branch 'fix-commitgraph' (2213321)
    • Bring back the no-repo commitgraph for stress-tests to work (ff8d42a)
    • Move commit-graph implementation into its correct place (750b07a)
    • Add clippy::redundant-closure-for-method-calls lint (bcad5c2)
    • Merge branch 'future-dates' (8d2e6a9)
    • List commit-graph entries by graph traversal, move commit-graph up to gix level. (b82edc8)
    • Add options related to commitgraph to gix config tree (7aaaebf)

0.26.0 (2023-06-07)

The main attraction of this release is support for multi-round negotiations thanks to support for the standard negotiations algorithms. Further, gix index entries now lists attributes as well, and there is the new gix attribute query sub-command in the vain of git check-attrs.

New Features

  • gix attributes validate to validate attributes and ignore against git as baseline. Use this command to test the entire index for ignored paths and their attributes and use git check-attr and git check-ignore to validate that git agrees. Collect all mismatches and print them.
  • --statistics for gix excludes query With it one gets some insights into the work done to fulfil the query.
  • gix attribute query as something similar to git check-attrs.
  • no-repo index from-list to create an index with empty files from the given list. The list could be created with find . -type f for example.
  • add pro-forma library to allow feature documentation of gitoxide on docs.rs

Commit Statistics

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

Commit Details

view details
  • Uncategorized
    • just fmt (ffc1276)
    • Merge branch 'integrate-gix-negotiate' (ae845de)
    • Adapt to changes in gix (7983f6f)
    • Keep track of core.alternateRefsCommand (d925896)
    • Merge branch 'auto-clippy' (dbf8aa1)
    • Include custom clippy settings (b057500)
    • Merge branch 'consecutive-negotiation' (4507f94)
    • Support reading the fetch algorithm from configuration (33b7770)
    • Merge branch 'gix-attributes-validate' (a849da8)
    • gix attributes validate to validate attributes and ignore against git as baseline. (e1fcc7f)
    • Merge branch 'gix-attribute-query' (1d70213)
    • --statistics for gix excludes query (450b232)
    • gix attribute query as something similar to git check-attrs. (bfdcb14)
    • no-repo index from-list to create an index with empty files from the given list. (b8db207)
    • Merge branch 'fix-841' (edeb4de)
    • Add pro-forma libaray to allow feature documentation of gitoxide on docs.rs (13a0f1e)
    • Use unlimited parallelism for jwalk to have a better comparison. (d67551d)

0.25.0 (2023-04-27)

A maintenance release without user-facing changes, just to fix installation

0.24.0 (2023-04-27)

New Features

  • gix index entries also prints attributes.
  • gix clone and gix fetch with controls for shallow repositories.
  • ein t trace-path know accepts the trace-file alias.

Bug Fixes

  • printing to stdout for commands that don't show progress is greatly improved. Previously it would have to lock stdout on each write, now this is done only once.
  • opening repositories without 'strict' mode also ignores IO errors. These will instead be logged, but won't make it impossible to open an otherwise fine repository.

New Features (BREAKING)

  • turn gix free index entries into gix index entries.

Commit Statistics

  • 25 commits contributed to the release.
  • 6 commits were understood as conventional.
  • 2 unique issues were worked on: #301, #790

Commit Details

view details
  • #301
  • #790
    • Opening repositories without 'strict' mode also ignores IO errors. (7bd8823)
  • Uncategorized
    • Merge branch 'index-entries-attrs' (f37a930)
    • gix index entries also prints attributes. (08e8fc2)
    • Printing to stdout for commands that don't show progress is greatly improved. (dd14a80)
    • Turn gix free index entries into gix index entries. (ca8ebdf)
    • Merge branch 'attributes-cache' (3456c84)
    • Adjust to changes in gix-worktree (13a070f)
    • Merge branch 'fix-819' (69faad0)
    • Add information about configuration flags related to fsync usage (8d5762c)
    • Merge branch 'main' into dev (23ee47f)
    • Merge branch 'worktree-stack' (3d47919)
    • Assure we load all gitattributes when needed. (9237121)
    • Merge branch 'fix-790' (ee36e5b)
    • Add group headings to all shallow-related arguments. (bbb4cb0)
    • Keep track of index.skipHash (f29f35c)
    • Make fmt (3836cc0)
    • Merge branch 'various-fixes' (cc0f506)
    • Fix clap derive declaration of conflicts (c502fa8)
    • Merge branch 'shallow-protocol' (531dd19)
    • gix clone and gix fetch with controls for shallow repositories. (9723e1a)
    • Improve error handling and reporting of ein t query (d5616b6)
    • Make fmt (8ef1cb2)
    • Merge branch 'rename-tracking' (3827ac6)
    • ein t trace-path know accepts the trace-file alias. (f93e964)

0.23.0 (2023-02-24)

This release adds the new ein tool query analytics engine, which maintains a database of a git repository as acceleration data structure to run useful queries on. It's nothing more than an MVP, and was inspired by a program to accelerate Git-Heat-Map.

New Features

  • ein tool query - a git analytics engine. A tool to build and efficiently maintain a database of information contained in a git repository, preferably the kind of information that is expensive to obtain, in order to facilitate queries that would be prohibitive without an accelerating data structure.
  • gix tree entries with rev-spec support. Previously it wanted a tree-id, now it can derive it itself.

Commit Statistics

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

Commit Details

view details
  • Uncategorized
    • Merge branch 'rename-tracking' (550144a)
    • ein tool query - a git analytics engine. (f8cc623)
    • gix tree entries with rev-spec support. (49520d1)
    • Fix journey tests; improve panic handling when --progress is used. (571121c)

0.22.1 (2023-02-17)

Bug Fixes

  • re-enable local-time support for all binaries The time improved the way one can opt-in to potential unsoundness in their local time support, forcing the application to make that decision at runtime.

Commit Statistics

  • 1 commit contributed to the release.
  • 1 commit was understood as conventional.
  • 0 issues like '(#ID)' were seen in commit messages

Commit Details

view details
  • Uncategorized
    • Re-enable local-time support for all binaries (73372d0)

0.22.0 (2023-02-17)

A maintenance release without user-facing changes.

Commit Statistics

  • 7 commits contributed to the release.
  • 7 days passed between releases.
  • 0 commits were understood as conventional.
  • 0 issues like '(#ID)' were seen in commit messages

Commit Details

view details
  • Uncategorized
    • Merge branch 'rename-crates' into inform-about-gix-rename (c9275b9)
    • Adjust to renaming for git-protocol to gix-protocol (823795a)
    • Adjust to renaming of git-features to gix-features (e2dd68a)
    • Merge branch 'rename-crates' (6461c3d)
    • Rename git-repository to gix (7bed2a9)
    • Merge branch 'rename-tracking' (9e7d792)
    • Keep track of all keys relevant renaming when merging and obtaining status (0f2ed59)

0.21.0 (2023-02-09)

Chore

  • upgrade to clap 4.1

New Features

  • gix clone <url> is now permitted without specifying a destination directory. Note that the implementation doesn't take into account potential redirects and renames as it's implemented only with the first URL it sees (not the redirected ones).
  • make more HTTP options available
    • http.schannelCheckRevoke

Commit Statistics

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

Thanks Clippy

Clippy helped 2 times to make code idiomatic.

Commit Details

view details
  • #683
    • gix clone <url> is now permitted without specifying a destination directory. (b81f650)
  • Uncategorized
    • Make fmt (e22080e)
    • Merge branch 'adjustments-for-cargo' (7bba270)
    • gix progress now usees the configuration tree as basis for data. (ea76bf5)
    • Thanks clippy (f7b8794)
    • Upgrade to clap 4.1 (1d9a5e9)
    • Merge branch 'patch-1' (b93f0c4)
    • Thanks clippy (9e04685)
    • Upgrade tabled (7aed326)
    • Merge branch 'gix-clone-improvements' (76c99f3)
    • Merge branch 'adjustments-for-cargo' (f8c562a)
    • Adapt to changes in git-repository and git-transport (d336368)
    • Update planned usage of ssh related configuration variables. (3f91088)
    • Merge branch 'adjustments-for-cargo' (d821fc5)
    • Make more HTTP options available (38ae61a)

0.20.0 (2022-12-22)

This release also fixes compatibility issues that formerly prevented to fetch or clone form https://googlesource.com.

Changed

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

New Features

  • auto-enabled verbosity for gix fetch/clone and add --no-verbose. I found myself always adding (and having to remember to add) the -v flag for long-running operations so these should be able to default to a higher verbosity level.

    To counter that, there is a new --no-verbose flag to turn that off.

  • add --strict option to enforce strict checking of configuration.

  • gix odb stats to calculate statistics on the object database. This includes the amount of objects along with a listing of where they are located.

  • gix clone --no-tags support. This is the same as git clone --no-tags.

Changed (BREAKING)

  • 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)

  • 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.

Commit Statistics

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

Commit Details

view details
  • Uncategorized
    • Fix label for ein t estimate-hours command (4c93de1)
    • Merge branch 'read-header' (3d01252)
    • gix odb stats to calculate statistics on the object database. (8c9c243)
    • Merge branch 'main' into read-split-index (c57bdde)
    • Merge branch 'adjustments-for-cargo' (083909b)
    • gix clone --no-tags support. (e2b8c5d)
    • Update gix progress to inform about remote.<name>.tagOpt (3ebb340)
    • Merge branch 'adjustments-for-cargo' (70ccbb2)
    • Upgrade to prodash v22 for API improvements (77ab98d)
    • Auto-enabled verbosity for gix fetch/clone and add --no-verbose. (9814369)
    • Switch from atty to is-terminal (7304bc1)
    • Adapt to changes in git-repository (c4f68bf)
    • 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)
    • Adapt to changes in git-repository (f1a4c8b)
    • Update progress of http.proxyAuthMethod (872dc1a)
    • Add --strict option to enforce strict checking of configuration. (aeb4a1d)
    • Don't lock stdout/stderr as it will deadlock on dbg-printing (62cae0e)
    • Adapt to changes in git-config (1c2e755)
    • Merge branch 'main' into http-config (bcd9654)

0.19.0 (2022-11-21)

New Features

  • Make reqwest TLS backend configuration easy. We provide the choice of native-tls or rust-tls. If none is provided, the user can configure on their on similar to how it's done in gix.

    Please note that a choice now has to be made or HTTPS will not be available, so use one of…

    • blocking-http-transport-reqwest-rust-tls
  • blocking-http-transport-reqwest-native-tls

Commit Statistics

  • 1 commit contributed to the release.
  • 4 days passed between releases.
  • 1 commit was understood as conventional.
  • 0 issues like '(#ID)' were seen in commit messages

Commit Details

view details
  • Uncategorized
    • Make reqwest TLS backend configuration easy. (3ddbd2d)

0.18.0 (2022-11-17)

This releases fixes gix fetch so that it is able to clone or fetch pytorch or other repositories on case-insensitive file systems.

It's also an attempt to trigger CI to build binary releases.

Commit Statistics

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

Commit Details

view details
  • Uncategorized
    • Merge branch 'http-config' (665b53e)
    • Document that histogram is now the default diff algorithm (c76572b)
    • Introduce new gitoxide.http.connectTimeout for more control for git clients (2ab80e4)
    • Keep track of no_proxy environment variable support (f0625de)
    • Update progress (3d9fb6c)
    • Don't forget to update 'progress' (0ec5220)
    • Update progress with gitoxide.userAgent (1c012f4)
    • Plan for user agent string configuration (f5499a5)
    • Keep track of http related configuration keys. (1afaebd)

0.17.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.

  • diff algorithm is controlled by git configuration diff.algorithm

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

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.

Changed (BREAKING)

  • remote lock_mode from all methods dealing with reference edits. It is now read from core.filesRefLockTimeout accordingly.

New Features (BREAKING)

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

Commit Statistics

  • 65 commits contributed to the release.
  • 6 commits were understood as conventional.
  • 2 unique issues were worked on: #450, #536

Thanks Clippy

Clippy helped 1 time to make code idiomatic.

Commit Details

view details
  • #450
    • Keep track of several branch related keys (443a75a)
    • gix remote ref-map --show-unmapped-remote-refs. (e973dfe)
    • Update progress as we now respect diff.algorithm (30d32e7)
    • Apply configuration overrides to newborn repo during clone (c8ef759)
    • Collect stderr and print it afterwards to avoid intersection with line progress. (3a05328)
    • Reduce verbosity of clone and print once entire clone is done (9a476df)
    • First rough sketch of gix clone (23a5e8b)
    • Progress totals (planned, devitaion) (63947ae)
    • Prepare attribute-group setup as far as possible. (f5e2eeb)
    • Update usage of core.checkState (8b2aba1)
    • Update progress based on filesystem config usage (de13c66)
    • Inform about even more keys in gix progress (0e9bd41)
    • Plan more core filesystem attributes (d10a82e)
    • Update init.defaultBranch - now used by custom initialization. (4d6d7bb)
    • Support for handshake information in gix fetch (c47dcc6)
    • Fix build (d034882)
    • 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)
    • Update progress information to include packedRefsTimeout (fd18320)
    • Remote lock_mode from all methods dealing with reference edits. (3a0fb1b)
    • Add information about planned lock timeout support (from configuration) (7076891)
    • Add remotes. as planned feature for remotes (3c188b2)
    • Slightly nicer styling of config keys (eade88f)
    • Complete listing of records based on current usage, probably (6abd5a4)
    • Add more records (5c0d0ab)
    • Add tabled for nicer printing (65e6496)
    • Refactor (b42b08a)
    • Add support for more types of configurations (317e02a)
    • A very first version of gix progress show (92e082a)
  • #536
    • ein t hours allows to specify the amount of worker threads. (20259da)
  • Uncategorized
    • Merge branch 'write-sparse-index' (ba17db0)
    • Plan index.version for when we can write V4 indices. (da96d34)
    • Notes about the split-index extension. (ad44982)
    • Take note of additional options for promisor packs and partial clone filters (1ec27f8)
    • Make note of extension.worktreeConfig (fe1e646)
    • Merge branch 'main' into write-sparse-index (c4e6849)
    • Add init.templateDir to gix progress (9fab050)
    • Make fmt (ea2136b)
    • Merge branch 'gix-clone' (def53b3)
    • Diff algorithm is controlled by git configuration diff.algorithm (b1edb9e)
    • 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)
    • Update gix progress records (b05a2e7)
    • Merge branch 'main' into gix-clone (de4fe06)
    • Mark the upcoming usage of init.defaultBranch. (6225f35)
    • Merge branch 'fix-gix-index-from-tree' (da5f63c)
    • Write index without output path to memory only. (c8d0345)
    • Merge branch 'gix-index-from-tree' (8c24386)
    • Refactor (67f2247)
    • Refactor (01ab5ca)
    • Update with various configuration variables relevant to checking out worktrees (09d767a)
    • Merge branch 'clone' (507dc7e)
    • Update usage of clone related configuration (1a1e862)
    • Update progress with intended uses of clone. variables (8b804a3)
    • Merge branch 'main' into new-http-impl (702a161)
    • Make fmt (53acf25)
    • Merge branch 'fetch-pack' (f47c891)
    • Merge branch 'fetch-pack' (3c49400)
    • Update docs (c5c0ac5)
    • Input id can now be a commit or tree as prefix or full object id (8ef3fcb)
    • Thanks clippy (8dadd70)
    • Merge branch 'fix-odb-race' (b862fc5)
    • Merge branch 'diff' (25a7726)

0.16.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 --stat to collect additional statistics per author. Note that these are expensive and unconditionally use threads to speed up these computations.
  • ein tool hours -b ignores bots. For now it only considers bots with names containing [bot].

Commit Statistics

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

Commit Details

view details
  • #450
    • Refactor (11851f3)
    • Option to print server information about the connection (4720666)
    • Show fixes as well (2237495)
    • Correct printing of tag information (even though it doesn't look great) (f4d8198)
    • Wire up the ref-map sub-command. (94c2b78)
    • Select gix commands will now load the git installation configuration (23d2dec)
    • Refactor (7abc0a3)
    • Add sketch of gix credential (642e21f)
  • #470
    • ein tool hours -s was split into -f|--file-stats and -l|line-stats. (3c7c9a7)
    • Upgrade to prodash 20.1 for Progress::counter() feature (0ac4a2c)
    • ein tool hours --stat to collect additional statistics per author. (28c4cae)
  • Uncategorized
    • Merge branch 'hours-upgrade' (26489d1)
    • Use rev-specs instead of ref-names (cf7182e)
    • ein tool hours -b ignores bots. (5d0332f)
    • Merge branch 'filter-refs' (3773b92)
    • Implement gix index from-tree (2fbd3df)
    • Make fmt (535e967)
    • Merge branch 'filter-refs-by-spec' (5c05198)
    • Merge branch 'main' into index-from-tree (bc64b96)
    • Merge branch 'main' into filter-refs-by-spec (56ba481)
    • A basic implementation of rev-list without anything fancy (791dd66)

0.15.0 (2022-08-24)

Chore

  • uniformize deny attributes

New Features

  • Support for -c/--config in gix
  • 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

Changed (BREAKING)

  • remove gix free remote ref-list in favor of gix remote refs The functionality 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

  • 15 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

Thanks Clippy

Clippy helped 1 time to make code idiomatic.

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)
    • Support for -c/--config in gix (45a30f0)
    • 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
    • Merge branch 'remote-ls-refs' (39d585d)
    • Thanks clippy (bb6813a)
    • 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)
    • Merge branch 'main' into remote-ls-refs (bd5f3e8)

0.14.0 (2022-08-17)

Changed

  • Invert behaviour to open::Options::strict_config(), with lenient being the default. This means API users will get libgit2 behaviour but commands like gix can change options to emulate git behaviour.

New Features

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

Changed (BREAKING)

  • ein tools to ein tool for as it's more intuitive

New Features (BREAKING)

  • gix rev resolve --explain

Commit Statistics

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

Commit Details

view details
  • #427
    • --cat-file flag for gix rev parse to cat instead of resolving. (b83f6bd)
    • gix rev resolve --explain (c5846e0)
    • gix rev previous-branches subcommand (e972aad)
    • Support for parsing multiple specs in one invocation (84b5448)
    • Support overriding cache settings with environment variables in gix (b838202)
  • Uncategorized
    • Merge branch 'core-abbrev-handling' (dbaff13)
    • Control which command is lenient or not. That way gix-config can be lenient. (6a9c58f)
    • Invert behaviour to open::Options::strict_config(), with lenient being the default. (0235111)
    • Merge branch 'main' into remote-ls-refs (c4bf958)
    • Merge branch 'index-write-refactor' (805f432)
    • ein tools to ein tool for as it's more intuitive (edf73dd)
    • Merge branch 'main' into write-index-v2 (a938986)
    • Add aliases to make revision sub-commands more accessible (a6d79e3)
    • 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.13.0 (2022-07-22)

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.

Commit Statistics

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

Thanks Clippy

Clippy helped 3 times to make code idiomatic.

Commit Details

view details
  • #301
    • 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)
    • Fix build (cb56f12)
    • Refactor (3ff991d)
    • Frame for gix repo exclude query (a331314)
    • Make fmt (50ff7aa)
  • #331
    • Fix journey tests after gix restructuring (59b95c9)
    • gix config with section and sub-section filtering. (eda39ec)
    • gix config lists all entries of all configuration files git considers. (d99453e)
    • Refactor (a437abe)
    • Move 'exclude' up one level and dissolve 'repo' subcommand (8e5b796)
    • Move 'mailmap' up one level (5cf08ce)
    • Move 'odb' up one level (0ed65da)
    • Move 'tree' up one level (38a8350)
    • Move 'commit' up one level (72876f1)
    • Move 'verify' up one level (ac7d99a)
    • Move 'revision' one level up (c9c78e8)
    • Move 'remote' to 'free' (8967fcd)
    • Move commitgraph to 'free' (f99c3b2)
    • Move index to 'free' (83585bd)
    • Move 'pack' to 'free' (1cdecbc)
    • Migrate mailmap to the new 'free' section (141c5f1)
    • First step towards moving all repository-commands one level up. (f4e1810)
    • Make obvious what plumbing and porcelain really are (faaf791)
    • Adjustments due to breaking changes in git_path (4420ae9)
  • #427
    • Add rough but working version of rev-parse (f3f176d)
    • Basic infrastructure for delegate implementation (d3c0bc6)
    • Hookup explain command (1049b00)
    • Frame for gix repo rev explain (12e6277)
  • Uncategorized
    • Merge branch 'gix-repo-config' (afecb63)
    • Thanks clippy (48b3f4a)
    • Merge pull request #1 from Byron/main (085e76b)
    • Make fmt (0700b09)
    • Merge branch 'main' into pathspec (89ea12b)
    • Merge branch 'main' into cont_include_if (0e9df36)
    • Use git_path::realpath in all places that allow it right now (229dc91)
    • Merge branch 'main' into cont_include_if (41ea8ba)
    • Merge branch 'main' into git_includeif (05eb340)
    • Merge branch 'main' into msrv-for-windows (7cb1972)
    • Make fmt (251b6df)
    • Merge branch 'worktree-stack' (98da8ba)
    • Thanks clippy (056e8d2)
    • Thanks clippy (fdec111)
    • Merge branch 'main' into repo-status (4086335)
    • Merge branch 'worktree-stack' (e90d3fd)

0.12.0 (2022-04-05)

New Features

  • Add gix repo commit describe It supports typical but basic flags mostly similar to the ones in git.

Commit Statistics

  • 5 commits contributed to the release over the course of 1 calendar day.
  • 2 days passed between releases.
  • 1 commit was understood as conventional.
  • 1 unique issue was worked on: #298

Commit Details

view details
  • #298
    • Use all tags by default, instead of requiring annotated tags (00c42ca)
    • Support for the --max-candidates flag (b9e6754)
    • Reduce amount of max candidates, add --debug flag (c8c13e3)
    • Add gix repo commit describe (7e99e6a)
    • A first sketch of the gix repo describe plumbing command (2d6ccef)

0.11.0 (2022-04-03)

Adapt to changes in gix-features which change Send + Sync to Send + Clone. This happens to allow non-sync implementations (i.e. thread-local), along with Sync ones which usually are Clone too as they are passed by immutable reference (which is Clone + Copy).

Refactor (BREAKING)

  • Remove light* features, add 'lean-async' in its place; remove termion support

Changed (BREAKING)

  • remove Option<impl Progress> in favor of impl Progress
  • remove unnecessary Arc around should_interrupt flag
  • remove Sha1 mentions in index::verify::Mode::* variants The hash is repository defined and not hard-coded
  • Remove lean plumbing CLI

Bug Fixes

  • Collect all stdout messages in line renderer as well Otherwise the threaded line renderer will interfere with genuine program output.

New Features

  • gix mailmap verify command
  • 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-bin documentation of feature toggles Unfortunately, these don't show up on docs.rs due to it being a binary only crate. One could consider throwing in a lib just for good measure.

Commit Statistics

Commit Details

view details
  • #215
    • Collect all stdout messages in line renderer as well (57ca045)
    • Fix compile warning (e4514a8)
    • Remove reference of pretty-cli in code tree (4bd2f29)
    • Remove lean plumbing CLI (51bf03f)
    • Remove light* features, add 'lean-async' in its place; remove termion support (4d2d433)
  • #263
    • Fmt (fbeddeb)
    • A mad attempt to use thread-local everywhere and avoid Sync… (0af5077)
  • #266
    • Provide handle with a snapshot of the store's state (6e0cd6d)
  • #279
    • Fast-path multi-pack index verification in the CLI (bcde935)
    • Basic multi-pack index creation (89428b2)
    • 'index' with its own sub-commands (c4c5678)
    • Even nicer printing (d2bea27)
    • Remove Option<impl Progress> in favor of impl Progress (bf04644)
    • Remove unnecessary Arc around should_interrupt flag (d851bed)
    • Remove Sha1 mentions in index::verify::Mode::* variants (c2679a0)
  • #287
    • Share and pass cli arguments for pack verification (db43e47)
    • Very rough version of repository verification (80a4a7a)
    • Adjustments to deal with changes to git-pack/git-odb (fcf8fde)
  • #289
    • 'pack' with its own sub-commands (fb64af4)
    • 'remote' with its own sub-commands (8677f7e)
    • 'commitgraph' with its own sub-commands (db0251e)
  • #293
    • Faster writing to stdout/stderr for plumbing commands (d04dc01)
    • Add 'index verify' subcommand to 'gix' (1ac2c21)
    • Flag to hide extension details (34ea001)
    • Print basic index information, including the tree extension (9277cf8)
    • Basic entry information (239e7b2)
    • Refactor (8bf585d)
    • JSON output for index entries (3fc1622)
  • #298
    • Simplify command-line options declaration (f790a55)
    • Frame for printing index information (9ea98fd)
  • #301
    • Greatly simplify render-line logic (a8fa53a)
    • Pass thread-limit along to checkout (07e9081)
    • Add thread-count and chunk-size computation; interrupt capability (8cbe85d)
    • 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)
    • Refactor (e6a3d43)
    • 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)
    • Frame for traversing tree entries (0e55fbb)
    • Properly use 'max-performance' feature toggle to get pack caches :D (a39d476)
    • 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)
    • Support for unicode-precomposition for gix apps (e90c123)
  • #329
    • In-manifest and in-bin documentation of feature toggles (25da30f)
  • #366
    • Frame for printing mailmap entries using git-repository (2a01f47)
    • Gix mailmap verify can now detect collisions (f89fe2f)
    • gix mailmap verify command (384ed66)
  • #67
    • --counting-threads flag to configure amount of threads when counting (0090961)
  • Uncategorized
    • Make fmt (7cf3545)
    • Small build now uses the line renderer as well (652a0ac)
    • Upgrade to prodash 19 (90c6c5a)
    • ein find --debug to learn why it is slow (70109be)
    • Fix clap warnings (aa51e05)
    • Merge branch 'index-verification' (ad3c803)
    • Merge branch 'index-information' (025f157)
    • Improve CLI docs (866530a)
    • Rename 'gix commitgraph' back to 'gix commit-graph' (d6a72e7)
    • Merge branch 'use-midx-in-store' (338521b)
    • Merge branch 'sync-db-draft' (7d2e20c)
    • Thanks clippy (b0f7328)

v0.10.0 (2021-10-20)

This release pins beta versions of clap to avoid it to automatically fetch the latest one during installation.

This is made possible due to clap itself pinning its dependency to the clap-derive crate.

Commit Statistics

  • 1 commit contributed to the release over the course of 1 calendar day.
  • 4 days passed between releases.
  • 0 commits were understood as conventional.
  • 1 unique issue was worked on: #222

Commit Details

view details

v0.9.0 (2021-10-15)

A first usable version of gix to make using gitoxide from your applications so much easier. It serves as a one-stop shop for application developers without sacrificing performance by default while making common use-cases more convenient.

Feature list

  • gix as hub crate for application development with focus on usability without sacrificing any knob to tune performance.
  • opt-in async for gix-packetline, gix-transport and gix-protocol for fully async git clients, along with the light-async feature toggle to build a gix pack-receive with an async client instead of a blocking one.
  • Statistics for gix pack-create with the -s/--statistics flag to have data indicating the cost of the operation. Currently it's doing a lot of work that has to be avoided in order to be useable in production and the numbers underline that. Future iterations will cause key metrics to go down.
  • Packs are now reproducible by default, which means that the same tip will always generate a pack with the same hash. This may be a desirable property for some kinds of packs, but not for others which is why it can be turned off for a considerable speed boost.
  • gix-tempfile crate
  • gix-lock crate
  • gix-ref crate with complete loose-ref, packed-ref and transaction support.

Performance

  • On M1, thanks to a new release, Sha1 is now computed much faster which unlocks a massive performance boost. In my test, verifying/decoding the entire linux kernel pack now happens in 17s, as compared to 37s for canonical git.
  • gix-object parsing is a few percent faster thanks a reworked error handling for objects. By default, error collection is disabled entirely making the error case zero-sized. If needed, verbose and stacked errors can be turned on using a feature toggle for applications who expect repositories with malformed objects and need detailed diagnostics.

New Features

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

Commit Statistics

  • 5 commits contributed to the release over the course of 26 calendar days.
  • 35 days passed between releases.
  • 1 commit was understood as conventional.
  • 2 unique issues were worked on: #200, #67

v0.8.4 (2021-09-10)

This is a maintenance release.

v0.8.3 (2021-09-07)

Commit Statistics

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

v0.8.2 (2021-08-17)

Commit Statistics

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

v0.8.1 (2021-08-15)

Commit Statistics

  • 42 commits contributed to the release over the course of 95 calendar days.
  • 98 days passed between releases.
  • 0 commits were understood as conventional.
  • 1 unique issue was worked on: #83

Thanks Clippy

Clippy helped 1 time to make code idiomatic.

v0.7.0 (2021-05-09)

Commit Statistics

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

Thanks Clippy

Clippy helped 3 times to make code idiomatic.

v0.6.0 (2020-12-16)

Maintenance release without any new features.

These are created to account for breaking changes within the dependency graph of gitoxide crates. Due to some blunders in the past the version on crates.io could not be installed anymore. This was eventually fixed with new minor releases across the ecosystem.

Finally, yet another breaking change due to the introduction of the gix-hash crate to break a dependency cycle between gix-object and gix-features caused yet another maintenance release.

v0.5.0 (2020-12-15)

Maintenance release without any new features.

Commit Statistics

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

Commit Details

view details
  • Uncategorized
    • Merge branch 'commit-graph' into main (9cb09b2)
    • Add lean-plumbing docs for path of commit-graph-verify (5c7b52d)
    • [commitgraph] Implement basic commit-graph file verification. (2571113)
    • [commitgraph] Stub out commit-graph-verify plumbing command. (aacf0f0)
    • Merge branch 'main' into commit-graph (ca5b801)

v0.4.3 (2020-09-22)

Commit Statistics

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

v0.4.1 (2020-09-18)

  • fix installation via cargo install

Commit Statistics

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

Commit Details

view details
  • Uncategorized
    • Merge from main. (b59bd5e)
    • Finish removal of rust 2018 idioms (0d1699e)
    • Provide terminal dimensions to better use horizontal space (11f6b84)

v0.4.0 (2020-09-12)

  • add remote-ref-list and pack-receive subcommands to gix

CLI Breaking

  • rename plumbing sub-command from index-from-pack to pack-index-from-data

Commit Statistics

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

Commit Details

view details
  • Uncategorized
    • [clone] refs can now be written into a specified directory (fb1f048)
    • [clone] First version of writing references, but… (445be27)
    • [clone] first journey test for pack-receive (46a3511)
    • [clone] This actually works: first MVP of retrieving packs via clone (c06d819)
    • [ref-ls] add pretty version for ls-refs (487d06d)
    • [ref-ls] Fix progress display (2fcb557)
    • Refactor (b38290e)
    • [ref-ls] refactor (35e26fc)
    • Refactor (f90b92f)
    • [ref-ls] Frame for remote-ref-ls command in gitoxide-core (161e7df)
    • [clone] link up lean plumbing command with gitoxide-core: pack-receive (5ea49c8)
    • Refactor (40a6412)
    • Less ambiguous name for 'index-from-pack': 'pack-index-from-data' (386673c)
    • Refactor (b4a6e16)

v0.3.0 (2020-08-12)

  • add pack-explode and pack-index-from-data sub-commands
  • massive speed improvements for pack-verify

Many small and possibly breaking changes are not mentioned here.

Commit Statistics

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

Commit Details

view details
  • Uncategorized
    • Make obvious that interrupt request was received (34b2373)
    • Make interrupt handler work reliably (e71da0f)
    • Unify used ranges for line renderer amond pretty and lean interface (f59f66e)
    • Add percentage and throughput to tasks that matter (763d7ca)
    • Upgrade to latest iteration of prodash (3a4faec)
    • Support for JSON format output (1931575)
    • First pieces of the index-from-pack journey tests (181d69c)
    • Add versions back to main command, remove from sub-commands (e509373)
    • Ditch structopt in favor of clap 3.0 beta1 (d7591e2)
    • Move common flags to common plac (c0352c2)
    • Write about user interfaces and the use/non-use of async (91ba045)
    • Interrupt support for pretty plumbing (bca7ce2)
    • Revert "Less memory for look up mode, faster start" - too slow (584350a)
    • Less memory for look up mode, faster start (395c7e7)
    • Remove memory mode entirely (and some complexity with it) (8812e91)
    • Turns out you never want to keep deltas in memory (657aa2c)
    • Remove support for keeping compressed memory to reduce the index size (1e2ec7e)
    • …but there seem to be issues with the kernel pack… (cc147bc)
    • Minor fixes after first local tests - it's up to twice as fast!! (43c7fd1)
    • Quick and dirty impl of lean command-line for index-from-pack (9660bbf)
    • Upgrade dependencies (44b8221)
    • Remove invalid clap configuration (665696f)
    • Prepare full 'verify' implementation (ee45c7f)
    • Refactor (0a33b24)
    • Allow sink-compress configuration; choose best algorithm (29b9c23)
    • Nice error message on failure (adbc82c)
    • The first 'explode' implementation… (0d31ad1)
    • Get all pieces ready for action (1805d64)
    • Pass option for safety checks down to explode(…) (0bcb790)
    • Refactor (f66b116)
    • Basic tests and CLI args for explode pack (f932256)
    • Rename verify-pack to pack-verify (keeping it more formal) (ec8c48a)
    • Refactor (d3c00c8)
    • Change bin names from 'gio' to 'gix' and 'gixp' (5e23137)
    • Revert "Invert --statitics switch to become --no-statistics" (93a9b30)
    • Invert --statitics switch to become --no-statistics (aeb8778)
    • Use faster algorithm by default (bb45c3d)
    • Fix clippy (ec40e09)
    • Change course and do pack streaming first (bcb275e)
    • Get rid of annoying warnings - there is no better and easier way (41f38c4)
    • Fully implement --encode and --re-encode flags (a7cfac8)
    • Prepare for re-encoding each pack object (afae684)
    • Fix naming change, which was introduced accidentally (fbb9f98)
    • Refactor (2888f1b)
    • Pass threadlimit down from CLIs (f98c5b1)
    • Add new Context argument to support more configuration options (7c5d8b8)

v0.1.0 (2020-07-12)

  • Initial release with pack-verify

Commit Statistics

  • 54 commits contributed to the release.
  • 0 commits were understood as conventional.
  • 0 issues like '(#ID)' were seen in commit messages

Commit Details

view details
  • Uncategorized
    • Bring color back to 'max' versions (c68d9ab)
    • Support for disabling the cursor in the pretty line renderer (48c4bbd)
    • Allow TUI to terminate action properly (1f1b725)
    • Refactor (cce71aa)
    • Refactor (f276a05)
    • Preliminary support for line renderer in max version (4aa8022)
    • Unify frame rate across plumbing (and later potentially porcelain) (e2a7bdd)
    • Refactor (41e01a5)
    • Proper implementation of line renderer into 'lean' CLI (e98e7c2)
    • Mild improvements to look of verbose log (5fff552)
    • First very basic version of line renderer progress - works… (0cc1bf2)
    • Prepare for optional addition of line renderer for lean version (aac0d34)
    • Upgrade to prodash version 7 (af02b46)
    • Make --version flags work as expected. (a4d978c)
    • Merge branch 'release' (a1a0b13)
    • Rename 'pretty' target into 'max', a better fit for what it is (5acecc5)
    • Make gio commands less cumbersome, self-document their build type (pretty, lean) (1f9bc03)
    • Allow to limit the logging depth for less cluttered output (fce7035)
    • Support for json in pretty-plumbing and gitoxide (on demand) (b3780f8)
    • Simplify the 'keep open' logic of TUI progress window (13cd8ce)
    • Attempt to implement progress with a mode enum (ac490c2)
    • Allow for more screen space when formatting (6794300)
    • Assure pretty progress doesn't occlude the output (122d69f)
    • Fix pretty build (6adf615)
    • Pass average stats through to the top level (5b4979c)
    • Refactor (7add82c)
    • Now ACTUALLY stop TUI when there is no progress anymore :D (3bf3321)
    • Automatically close the TUI when there is no progress anymore. (c416152)
    • Assure we wait for GUI thread to finish (60eaea0)
    • Pretty progress in a generalized form (caa883b)
    • Neater progress log messages: don't show the module it originates from (026a0dd)
    • Refactor (30925e6)
    • Support for logging in pretty binaries (67026e4)
    • --verbose flag for lean plumbing binary (aaf4825)
    • First very basic progress implementation (b820717)
    • Pass progress everywhere, for now just to discard it (da3ae1c)
    • Split plumbing into separate binary (b1e51d6)
    • Refactor (0fbba9f)
    • Refactor (ba6a8ef)
    • Add initial version of 'lean-cli' feature toggle, but… (f01c298)
    • Support for verifying pack files and index files (b09b4e1)
    • Reorganize crates to make 'gitoxide' the CLI, and 'gitoxide-core' the library (0ac9c5a)
    • Add simple pack verification to gio (8c0e0b5)
    • Goodbye git-core, hello git-repository (7cec2b6)
    • Document existing use of unsafe, deny everywhere else (41f4bce)
    • Cargo clippy (1179ac1)
    • Move parsing tests close to actual parsing (3ca2c59)
    • Color for all grit commands/subcommands (aa8efdd)
    • Use structopt instead of clap (eb7388c)
    • Remove failure from grit binary, too (417c34b)
    • Refactor (87c8a2e)
    • Cargo fmt (2aa0857)
    • Implement git-init (57737c2)
    • Initial commit - based on standard project template (c3d319f)