You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -19,72 +19,151 @@ and itself relies on all `gix-*` crates. It's not meant for consumption, for app
19
19
*[x]**estimate-hours** - estimate the time invested into a repository by evaluating commit dates.
20
20
* Based on the [git-hours] algorithm.
21
21
* See the [discussion][git-hours-discussion] for some performance data.
22
-
***the `gix` program**_(plumbing)_ - lower level commands for use in automation
23
-
***progress** - provide an overview of what works and what doesn't from the perspective of the git configuration.
24
-
This is likely to change a lot over time depending on actual needs, but maybe useful for you to see
25
-
if particular git-configuration is picked up and where it deviates.
26
-
***config** - list the complete git configuration in human-readable form and optionally filter sections by name.
27
-
***exclude**
28
-
*[x]**query** - check if path specs are excluded via gits exclusion rules like `.gitignore`.
29
-
***verify** - validate a whole repository, for now only the object database.
30
-
***commit**
31
-
*[x]**describe** - identify a commit by its closest tag in its past
32
-
***tree**
33
-
*[x]**entries** - list tree entries for a single tree or recursively
34
-
*[x]**info** - display tree statistics
35
-
***odb**
36
-
*[x]**info** - display odb statistics
37
-
*[x]**entries** - display all object ids in the object database
38
-
***mailmap**
39
-
*[x]**entries** - display all entries of the aggregated mailmap git would use for substitution
40
-
***revision**
41
-
*[x]**list** - list plain revision hashes from a starting point, similar to a very simple version of `git rev-list`.
42
-
*[x]**explain** - show what would be done while parsing a revision specification like `HEAD~1`
43
-
*[x]**resolve** - show which objects a revspec resolves to, similar to `git rev-parse` but faster and with much better error handling
44
-
*[x]**previous-branches** - list all previously checked out branches, powered by the ref-log.
45
-
***remote**
46
-
*[x]**refs** - list all references available on the remote based on the current remote configuration.
47
-
*[x]**ref-map** - show how remote references relate to their local tracking branches as mapped by refspecs.
48
-
*[x]**fetch** - fetch the current remote or the given one, optionally just as dry-run.
49
-
***clone**
50
-
*[x] initialize a new **bare** repository and fetch all objects.
51
-
*[x] initialize a new repository, fetch all objects and checkout the main worktree.
52
-
***credential**
53
-
*[x]**fill/approve/reject** - The same as `git credential`, but implemented in Rust, calling helpers only when from trusted configuration.
54
-
***free** - no git repository necessary
55
-
***pack**
56
-
* [x][verify](https://asciinema.org/a/352942)
57
-
* [x][index verify](https://asciinema.org/a/352945) including each object sha1 and statistics
58
-
* [x][explode](https://asciinema.org/a/352951), useful for transforming packs into loose objects for inspection or restoration
59
-
* [x] verify written objects (by reading them back from disk)
60
-
* [x][receive](https://asciinema.org/a/359321) - receive a whole pack produced by **pack-send** or _git-upload-pack_, useful for `clone` like operations.
61
-
* [x]**create** - create a pack from given objects or tips of the commit graph.
62
-
* []**send** - create a pack and send it using the pack protocol to stdout, similar to 'git-upload-pack',
63
-
for consumption by **pack-receive** or _git-receive-pack_
64
-
- **multi-index**
65
-
* [x]**info** - print information about the file
66
-
* [x]**create** - create a multi-index from pack indices
67
-
* [x]**verify** - check the file for consistency
68
-
* [x]**entries** - list all entries of the file
69
-
- **index**
70
-
* [x][create](https://asciinema.org/a/352941) - create an index file by streaming a pack file as done during clone
71
-
* [x] support for thin packs (as needed for fetch/pull)
72
-
***commit-graph**
73
-
*[x]**verify** - assure that a commit-graph is consistent
74
-
***mailmap**
75
-
*[x]**verify** - check entries of a mailmap file for parse errors and display them
76
-
***index**
77
-
*[x]**entries** - show detailed entry information for human or machine consumption (via JSON)
78
-
*[x]**verify** - check the index for consistency
79
-
*[x]**info** - display general information about the index itself, with detailed extension information by default
80
-
*[x] detailed information about the TREE extension
*[x]**checkout-exclusive** - a predecessor of `git worktree`, providing flexible options to evaluate checkout performance from an index and/or an object database.
22
+
***the `gix` program**_(plumbing)_ - lower level commands for use during development
23
+
- As its main purpose is to help running the latest improvements in the real world, it's self-documenting without
24
+
duplicating its features here. Use `gix --help` to start discovery.
The top-level crate that acts as hub to all functionality provided by the `gix-*` plumbing crates.
33
+
34
+
*[x] utilities for applications to make long running operations interruptible gracefully and to support timeouts in servers.
35
+
*[x] handle `core.repositoryFormatVersion` and extensions
36
+
*[x] support for unicode-precomposition of command-line arguments (needs explicit use in parent application)
37
+
***Repository**
38
+
*[x] discovery
39
+
* [x] option to not cross file systems (default)
40
+
* [x] handle git-common-dir
41
+
* [x] support for `GIT_CEILING_DIRECTORIES` environment variable
42
+
* [] handle other non-discovery modes and provide control over environment variable usage required in applications
43
+
*[x] rev-parse
44
+
*[x] rev-walk
45
+
*[x] include tips
46
+
*[ ] exclude commits
47
+
*[x] instantiation
48
+
*[x] access to refs and objects
49
+
***credentials**
50
+
*[x] run `git credential` directly
51
+
*[x] use credential helper configuration and to obtain credentials with `gix_credentials::helper::Cascade`
52
+
***config**
53
+
*[ ] facilities to apply the [url-match](https://git-scm.com/docs/git-config#Documentation/git-config.txt-httplturlgt) algorithm and to
54
+
[normalize urls](https://github.com/git/git/blob/be1a02a17ede4082a86dfbfee0f54f345e8b43ac/urlmatch.c#L109:L109) before comparison.
55
+
***traverse**
56
+
*[x] commit graphs
57
+
*[ ] make [git-notes](https://git-scm.com/docs/git-notes) accessible
58
+
*[x] tree entries
59
+
***diffs/changes**
60
+
*[x] tree with other tree
61
+
* [] respect case-sensitivity of host filesystem.
62
+
* [x] a way to access various diff related settings or use them
63
+
* [] respect `diff.*.textconv`, `diff.*.cachetextconv` and external diff viewers with `diff.*.command`,
64
+
[along with support for reading `diff` gitattributes](https://github.com/git/git/blob/73876f4861cd3d187a4682290ab75c9dccadbc56/Documentation/gitattributes.txt#L699:L699).
65
+
* **rewrite tracking**
66
+
* **deviation** - git keeps up to four candidates whereas we use the first-found candidate that matches the similarity percentage.
67
+
This can lead to different sources being found. As such, we also don't consider the filename at all.
68
+
* [] handle binary files correctly, and apply filters for that matter
69
+
* [x] computation limit with observable reduction of precision when it is hit, for copies and renames separately
70
+
* **by identity**
71
+
* [x] renames (sym-links are only ever compared by identity)
72
+
* [x] copies
73
+
* **by similarity** - similarity factor controllable separately from renames
74
+
* [x] renames
75
+
* [x] copies
76
+
* [x] 'find-copies-harder' - find copies with the source being the entire tree.
77
+
*[ ] tree or index with working tree
78
+
-[ ] rename tracking
79
+
-[ ] submodule status (recursive)
80
+
*[x] diffs between modified blobs with various algorithms
81
+
*[ ] tree with index (via index-from-tree and index)
82
+
-[ ] rename tracking
83
+
-[ ] submodule status (recursive)
84
+
*[x] initialize
85
+
*[x] Proper configuration depending on platform (e.g. ignorecase, filemode, …)
86
+
***Id**
87
+
*[x] short hashes with detection of ambiguity.
88
+
***Commit**
89
+
*[x]`git describe` like functionality, with optional commit-graph acceleration
90
+
*[x] create new commit from tree
91
+
***Objects**
92
+
*[x] lookup
93
+
*[x] peel to object kind
94
+
*[ ] create [signed commits and tags](https://github.com/Byron/gitoxide/issues/12)
95
+
***trees**
96
+
*[x] lookup path
97
+
***references**
98
+
*[x] peel to end
99
+
*[x] ref-log access
100
+
*[x] remote name
101
+
*[x] find remote itself
102
+
-[ ] respect `branch.<name>.merge` in the returned remote.
103
+
***remotes**
104
+
*[x] clone
105
+
* [x] shallow
106
+
* [] include-tags when shallow is used (needs separate fetch)
*[x] shallow (remains shallow, options to adjust shallow boundary)
111
+
*[ ] a way to auto-explode small packs to avoid them to pile up
112
+
*[x] 'ref-in-want'
113
+
*[ ] 'wanted-ref'
114
+
*[x] standard negotiation algorithms `consecutive`, `skipping` and `noop`.
115
+
*[ ] push
116
+
*[x] ls-refs
117
+
*[x] ls-refs with ref-spec filter
118
+
*[x] list, find by name
119
+
*[x] create in memory
120
+
*[ ] groups
121
+
*[ ][remote and branch files](https://github.com/git/git/blob/master/remote.c#L300)
122
+
*[ ] execute hooks
123
+
***refs**
124
+
*[ ] run transaction hooks and handle special repository states like quarantine
125
+
*[ ] support for different backends like `files` and `reftable`
126
+
***main or linked worktree**
127
+
*[ ] add files with `.gitignore` handling
128
+
*[ ] checkout with conversions like clean + smudge as in `.gitattributes`
129
+
*[ ]_diff_ index with working tree
130
+
*[ ] sparse checkout support
131
+
*[x] read per-worktree config if `extensions.worktreeConfig` is enabled.
132
+
***index**
133
+
*[ ] tree from index
134
+
*[x] index from tree
135
+
***worktrees**
136
+
*[x] open a repository with worktrees
137
+
* [x] read locked state
138
+
* [] obtain 'prunable' information
139
+
*[x] proper handling of worktree related refs
140
+
*[x] create a byte stream and create archives for such a stream, including worktree filters and conversions
141
+
*[ ] create, move, remove, and repair
142
+
*[x] access exclude information
143
+
*[x] access attribute information
144
+
*[x] respect `core.worktree` configuration
145
+
-**deviation**
146
+
* The delicate interplay between `GIT_COMMON_DIR` and `GIT_WORK_TREE` isn't implemented.
147
+
***config**
148
+
*[x] read the primitive types `boolean`, `integer`, `string`
149
+
*[x] read and interpolate trusted paths
150
+
*[x] low-level API for more elaborate access to all details of `git-config` files
151
+
*[ ] a way to make changes to individual configuration files
152
+
*[x] mailmap
153
+
*[x] object replacements (`git replace`)
154
+
*[x] read git configuration
155
+
*[ ] merging
156
+
*[ ] stashing
157
+
*[ ] Use _Commit Graph_ to speed up certain queries
158
+
*[ ] subtree
159
+
*[ ] interactive rebase status/manipulation
160
+
***submodules**
161
+
*[x] handle 'old' form for reading and detect old form
162
+
*[x] list
163
+
*[ ] edit
164
+
*[ ] API documentation
165
+
*[ ] Some examples
166
+
88
167
### gix-actor
89
168
*[x] read and write a signature that uniquely identifies an actor within a git repository
90
169
*[x] a way to parse `name <email>` tuples (instead of full signatures) to facilitate parsing
@@ -611,136 +690,6 @@ See its [README.md](https://github.com/Byron/gitoxide/blob/main/gix-lock/README.
611
690
*[x] API documentation
612
691
*[x] Some examples
613
692
614
-
### gix
615
-
*[x] utilities for applications to make long running operations interruptible gracefully and to support timeouts in servers.
616
-
*[x] handle `core.repositoryFormatVersion` and extensions
617
-
*[x] support for unicode-precomposition of command-line arguments (needs explicit use in parent application)
618
-
***Repository**
619
-
*[x] discovery
620
-
* [x] option to not cross file systems (default)
621
-
* [x] handle git-common-dir
622
-
* [x] support for `GIT_CEILING_DIRECTORIES` environment variable
623
-
* [] handle other non-discovery modes and provide control over environment variable usage required in applications
624
-
*[x] rev-parse
625
-
*[x] rev-walk
626
-
*[x] include tips
627
-
*[ ] exclude commits
628
-
*[x] instantiation
629
-
*[x] access to refs and objects
630
-
***credentials**
631
-
*[x] run `git credential` directly
632
-
*[x] use credential helper configuration and to obtain credentials with `gix_credentials::helper::Cascade`
633
-
***config**
634
-
*[ ] facilities to apply the [url-match](https://git-scm.com/docs/git-config#Documentation/git-config.txt-httplturlgt) algorithm and to
635
-
[normalize urls](https://github.com/git/git/blob/be1a02a17ede4082a86dfbfee0f54f345e8b43ac/urlmatch.c#L109:L109) before comparison.
636
-
***traverse**
637
-
*[x] commit graphs
638
-
*[ ] make [git-notes](https://git-scm.com/docs/git-notes) accessible
639
-
*[x] tree entries
640
-
***diffs/changes**
641
-
*[x] tree with other tree
642
-
*[ ] respect case-sensitivity of host filesystem.
643
-
*[x] a way to access various diff related settings or use them
644
-
*[ ] respect `diff.*.textconv`, `diff.*.cachetextconv` and external diff viewers with `diff.*.command`,
645
-
[along with support for reading `diff` gitattributes](https://github.com/git/git/blob/73876f4861cd3d187a4682290ab75c9dccadbc56/Documentation/gitattributes.txt#L699:L699).
646
-
***rewrite tracking**
647
-
***deviation** - git keeps up to four candidates whereas we use the first-found candidate that matches the similarity percentage.
648
-
This can lead to different sources being found. As such, we also don't consider the filename at all.
649
-
*[ ] handle binary files correctly, and apply filters for that matter
650
-
*[x] computation limit with observable reduction of precision when it is hit, for copies and renames separately
651
-
***by identity**
652
-
*[x] renames (sym-links are only ever compared by identity)
653
-
*[x] copies
654
-
***by similarity** - similarity factor controllable separately from renames
655
-
*[x] renames
656
-
*[x] copies
657
-
*[x] 'find-copies-harder' - find copies with the source being the entire tree.
658
-
*[ ] tree or index with working tree
659
-
*[x] diffs between modified blobs with various algorithms
660
-
*[ ] tree with index
661
-
*[x] initialize
662
-
*[x] Proper configuration depending on platform (e.g. ignorecase, filemode, …)
663
-
***Id**
664
-
*[x] short hashes with detection of ambiguity.
665
-
***Commit**
666
-
*[x]`git describe` like functionality, with optional commit-graph acceleration
667
-
*[x] create new commit from tree
668
-
***Objects**
669
-
*[x] lookup
670
-
*[x] peel to object kind
671
-
*[ ] create [signed commits and tags](https://github.com/Byron/gitoxide/issues/12)
672
-
***trees**
673
-
*[x] lookup path
674
-
***references**
675
-
*[x] peel to end
676
-
*[x] ref-log access
677
-
*[x] remote name
678
-
*[x] find remote itself
679
-
-[ ] respect `branch.<name>.merge` in the returned remote.
680
-
***remotes**
681
-
*[x] clone
682
-
*[x] shallow
683
-
*[ ] include-tags when shallow is used (needs separate fetch)
0 commit comments