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.
-
ein tool hours -s
was split into-f|--file-stats
and-l|line-stats
. That way more information is generated at increasingly high costs.
-
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]
.
- 26 commits contributed to the release over the course of 27 calendar days.
- 27 days passed between releases.
- 3 commits were understood as conventional.
- 2 unique issues were worked on: #450, #470
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
)
- refactor (
- #470
- Uncategorized
- use rev-specs instead of ref-names (
cf7182e
) ein tool hours -b
ignores bots. (5d0332f
)- Merge branch 'index-from-tree' (
172f73c
) - make fmt (
535e967
) - Merge branch 'main' into filter-refs-by-spec (
9aa1d3d
) - Merge branch 'main' into filter-refs-by-spec (
1f6e5ab
) - Merge branch 'git_date_parse' (
75591fb
) - Merge branch 'main' into filter-refs-by-spec (
51dc828
) - Merge branch 'macos-exfat' (
f256f8f
) - Merge branch 'main' into filter-refs-by-spec (
56ba481
) - A basic implementation of rev-list without anything fancy (
791dd66
) - Merge branch 'main' into filter-refs-by-spec (
a36c05d
) - Merge branch 'main' into filter-refs-by-spec (
cef0b51
) - Merge branch 'main' into filter-refs-by-spec (
dbfa328
) - Merge branch 'main' into filter-refs-by-spec (
cfa1440
)
- use rev-specs instead of ref-names (
- uniformize deny attributes
- Support for
-c/--config
ingix
-
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
- remove
gix free remote ref-list
in favor ofgix 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.
- 15 commits contributed to the release over the course of 3 calendar days.
- 6 days passed between releases.
- 5 commits were understood as conventional.
- 1 unique issue was worked on: #450
Clippy helped 1 time to make code idiomatic.
view details
- #450
- Support for -c CLI config overrides in
gix config
. (19c1746
) - remove
gix free remote ref-list
in favor ofgix remote refs
(dda9957
) - Support for
-c/--config
ingix
(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
)
- Support for -c CLI config overrides in
- Uncategorized
- Merge branch 'example-write-blob' (
afedd7f
) - Merge pull request #494 from ultrasaurus/patch-1 (
86fe22c
) - Merge branch 'main' into remote-ls-refs (
95f2f4f
) - Merge branch 'example-new-repo' (
946dd3a
) - thanks clippy (
bb6813a
) - use docsrs feature in code to show what is feature-gated automatically on docs.rs (
b1c40b0
) - uniformize deny attributes (
f7f136d
)
- Merge branch 'example-write-blob' (
- Invert behaviour to
open::Options::strict_config()
, with lenient being the default. This means API users will get libgit2 behaviour but commands likegix
can change options to emulategit
behaviour.
-
--cat-file
flag forgix rev parse
to cat instead of resolving. -
gix rev previous-branches
subcommand
-
ein tools
toein tool
for as it's more intuitive
-
gix rev resolve --explain
- 15 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
view details
- #427
- Uncategorized
- 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
) ein tools
toein tool
for as it's more intuitive (edf73dd
)- add aliases to make revision sub-commands more accessible (
a6d79e3
) - Merge branch 'write-index-files' into write-index-v2 (
cddc2ca
) - Merge branch 'write-index-files' into rev-parse-delegate (
370110d
) - Merge branch 'main' into rev-parse-delegate (
4ae2bed
) - Merge branch 'main' into rev-parse-delegate (
6da8250
) - make fmt (
47724c0
) - Fix typos (
e9fcb70
)
- Control which command is lenient or not. That way
-
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.
- 38 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
Clippy helped 3 times to make code idiomatic.
view details
- #301
- Allow reading patterns from stdin (
0c597fe
) - Add
--show-ignore-patterns
togix 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
)
- Allow reading patterns from stdin (
- #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
)
- fix journey tests after
- #427
- Uncategorized
- Add
gix repo commit describe
It supports typical but basic flags mostly similar to the ones in git.
- 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
view details
Adapt to changes in git-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
).
- Remove light* features, add 'lean-async' in its place; remove termion support
- remove
Option<impl Progress>
in favor ofimpl Progress
- remove unnecessary
Arc
aroundshould_interrupt
flag - remove Sha1 mentions in
index::verify::Mode::*
variants The hash is repository defined and not hard-coded - Remove lean plumbing CLI
- Collect all stdout messages in line renderer as well Otherwise the threaded line renderer will interfere with genuine program output.
-
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 abinary only crate. One could consider throwing in a lib just for good measure.
- 61 commits contributed to the release over the course of 126 calendar days.
- 165 days passed between releases.
- 10 commits were understood as conventional.
- 12 unique issues were worked on: #215, #263, #266, #279, #287, #289, #293, #298, #301, #329, #366, #67
view details
- #215
- #263
- #266
- Provide handle with a snapshot of the store's state (
6e0cd6d
)
- Provide handle with a snapshot of the store's state (
- #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 ofimpl Progress
(bf04644
) - remove unnecessary
Arc
aroundshould_interrupt
flag (d851bed
) - remove Sha1 mentions in
index::verify::Mode::*
variants (c2679a0
)
- Fast-path multi-pack index verification in the CLI (
- #287
- #289
- #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
)
- faster writing to stdout/stderr for plumbing commands (
- #298
- #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
)
- greatly simplify render-line logic (
- #329
- in-manifest and in-bin documentation of feature toggles (
25da30f
)
- in-manifest and in-bin documentation of feature toggles (
- #366
- #67
- --counting-threads flag to configure amount of threads when counting (
0090961
)
- --counting-threads flag to configure amount of threads when counting (
- 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
)- Merge branch 'short-id' (
5849d5b
) - fix clap warnings (
aa51e05
) - Merge branch 'AP2008-implement-worktree' (
f32c669
) - improve CLI docs (
866530a
) - rename 'gix commitgraph' back to 'gix commit-graph' (
d6a72e7
) - thanks clippy (
b0f7328
)
- make fmt (
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.
- 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
A first usable version of git-repository
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.
git-repository
as hub crate for application development with focus on usability without sacrificing any knob to tune performance.- opt-in
async
forgit-packetline
,git-transport
andgit-protocol
for fully async git clients, along with thelight-async
feature toggle to build agix 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.
git-tempfile
crategit-lock
crategit-ref
crate with complete loose-ref, packed-ref and transaction support.
- 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
. git-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.
- control pack and object cache size in megabytes in some sub-commands
- 4 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
This is a maintenance release.
- 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)' where seen in commit messages
- 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)' where seen in commit messages
- 43 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
Clippy helped 1 time to make code idiomatic.
- 33 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)' where seen in commit messages
Clippy helped 3 times to make code idiomatic.
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 git-hash
crate to break a dependency cycle between git-object
and git-features
caused
yet another maintenance release.
Maintenance release without any new features.
- 3 commits contributed to the release over the course of 65 calendar days.
- 84 days passed between releases.
- 0 commits were understood as conventional.
- 0 issues like '(#ID)' where seen in commit messages
view details
- 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)' where seen in commit messages
- fix installation via
cargo install
- 2 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)' where seen in commit messages
view details
- add
remote-ref-list
andpack-receive
subcommands to gix
- rename plumbing sub-command from
index-from-pack
topack-index-from-data
- 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)' where seen in commit messages
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
)
- [clone] refs can now be written into a specified directory (
- add
pack-explode
andpack-index-from-data
sub-commands - massive speed improvements for
pack-verify
Many small and possibly breaking changes are not mentioned here.
- 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)' where seen in commit messages
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
)
- Make obvious that interrupt request was received (
- Initial release with
pack-verify
- 53 commits contributed to the release over the course of 765 calendar days.
- 0 commits were understood as conventional.
- 0 issues like '(#ID)' where seen in commit messages
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
) - 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
)
- bring color back to 'max' versions (