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,153 @@ 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
+
*[ ] strict object creation (validate objects referenced by newly created objects exist)
38
+
*[ ] strict hash verification (validate that objects actually have the hashes they claim to have)
39
+
***Repository**
40
+
*[x] discovery
41
+
* [x] option to not cross file systems (default)
42
+
* [x] handle git-common-dir
43
+
* [x] support for `GIT_CEILING_DIRECTORIES` environment variable
44
+
* [] handle other non-discovery modes and provide control over environment variable usage required in applications
45
+
*[x] rev-parse
46
+
*[x] rev-walk
47
+
*[x] include tips
48
+
*[ ] exclude commits
49
+
*[x] instantiation
50
+
*[x] access to refs and objects
51
+
***credentials**
52
+
*[x] run `git credential` directly
53
+
*[x] use credential helper configuration and to obtain credentials with `gix_credentials::helper::Cascade`
54
+
***config**
55
+
*[ ] facilities to apply the [url-match](https://git-scm.com/docs/git-config#Documentation/git-config.txt-httplturlgt) algorithm and to
56
+
[normalize urls](https://github.com/git/git/blob/be1a02a17ede4082a86dfbfee0f54f345e8b43ac/urlmatch.c#L109:L109) before comparison.
57
+
***traverse**
58
+
*[x] commit graphs
59
+
*[ ] make [git-notes](https://git-scm.com/docs/git-notes) accessible
60
+
*[x] tree entries
61
+
***diffs/changes**
62
+
*[x] tree with other tree
63
+
* [] respect case-sensitivity of host filesystem.
64
+
* [x] a way to access various diff related settings or use them
65
+
* [] respect `diff.*.textconv`, `diff.*.cachetextconv` and external diff viewers with `diff.*.command`,
66
+
[along with support for reading `diff` gitattributes](https://github.com/git/git/blob/73876f4861cd3d187a4682290ab75c9dccadbc56/Documentation/gitattributes.txt#L699:L699).
67
+
* **rewrite tracking**
68
+
* **deviation** - git keeps up to four candidates whereas we use the first-found candidate that matches the similarity percentage.
69
+
This can lead to different sources being found. As such, we also don't consider the filename at all.
70
+
* [] handle binary files correctly, and apply filters for that matter
71
+
* [x] computation limit with observable reduction of precision when it is hit, for copies and renames separately
72
+
* **by identity**
73
+
* [x] renames (sym-links are only ever compared by identity)
74
+
* [x] copies
75
+
* **by similarity** - similarity factor controllable separately from renames
76
+
* [x] renames
77
+
* [x] copies
78
+
* [x] 'find-copies-harder' - find copies with the source being the entire tree.
79
+
*[ ] tree or index with working tree
80
+
-[ ] rename tracking
81
+
-[ ] submodule status (recursive)
82
+
*[x] diffs between modified blobs with various algorithms
83
+
*[ ] tree with index (via index-from-tree and index)
84
+
-[ ] rename tracking
85
+
-[ ] submodule status (recursive)
86
+
*[x] initialize
87
+
*[x] Proper configuration depending on platform (e.g. ignorecase, filemode, …)
88
+
***Id**
89
+
*[x] short hashes with detection of ambiguity.
90
+
***Commit**
91
+
*[x]`git describe` like functionality, with optional commit-graph acceleration
92
+
*[x] create new commit from tree
93
+
***Objects**
94
+
*[x] lookup
95
+
*[x] peel to object kind
96
+
*[ ] create [signed commits and tags](https://github.com/Byron/gitoxide/issues/12)
97
+
***trees**
98
+
*[x] lookup path
99
+
***references**
100
+
*[x] peel to end
101
+
*[x] ref-log access
102
+
*[x] remote name
103
+
*[x] find remote itself
104
+
-[ ] respect `branch.<name>.merge` in the returned remote.
105
+
***remotes**
106
+
*[x] clone
107
+
* [x] shallow
108
+
* [] include-tags when shallow is used (needs separate fetch)
*[x] shallow (remains shallow, options to adjust shallow boundary)
113
+
*[ ] a way to auto-explode small packs to avoid them to pile up
114
+
*[x] 'ref-in-want'
115
+
*[ ] 'wanted-ref'
116
+
*[x] standard negotiation algorithms `consecutive`, `skipping` and `noop`.
117
+
*[ ] push
118
+
*[x] ls-refs
119
+
*[x] ls-refs with ref-spec filter
120
+
*[x] list, find by name
121
+
*[x] create in memory
122
+
*[ ] groups
123
+
*[ ][remote and branch files](https://github.com/git/git/blob/master/remote.c#L300)
124
+
*[ ] execute hooks
125
+
***refs**
126
+
*[ ] run transaction hooks and handle special repository states like quarantine
127
+
*[ ] support for different backends like `files` and `reftable`
128
+
***main or linked worktree**
129
+
*[ ] add files with `.gitignore` handling
130
+
*[ ] checkout with conversions like clean + smudge as in `.gitattributes`
131
+
*[ ]_diff_ index with working tree
132
+
*[ ] sparse checkout support
133
+
*[x] read per-worktree config if `extensions.worktreeConfig` is enabled.
134
+
***index**
135
+
*[ ] tree from index
136
+
*[x] index from tree
137
+
***worktrees**
138
+
*[x] open a repository with worktrees
139
+
* [x] read locked state
140
+
* [] obtain 'prunable' information
141
+
*[x] proper handling of worktree related refs
142
+
*[x] create a byte stream and create archives for such a stream, including worktree filters and conversions
143
+
*[ ] create, move, remove, and repair
144
+
*[x] access exclude information
145
+
*[x] access attribute information
146
+
*[x] respect `core.worktree` configuration
147
+
-**deviation**
148
+
* The delicate interplay between `GIT_COMMON_DIR` and `GIT_WORK_TREE` isn't implemented.
149
+
***config**
150
+
*[x] read the primitive types `boolean`, `integer`, `string`
151
+
*[x] read and interpolate trusted paths
152
+
*[x] low-level API for more elaborate access to all details of `git-config` files
153
+
*[ ] a way to make changes to individual configuration files
154
+
*[x] mailmap
155
+
*[x] object replacements (`git replace`)
156
+
*[x] read git configuration
157
+
*[ ] merging
158
+
*[ ] stashing
159
+
*[ ] Use _Commit Graph_ to speed up certain queries
160
+
*[ ] subtree
161
+
*[ ] interactive rebase status/manipulation
162
+
***submodules**
163
+
*[x] handle 'old' form for reading and detect old form
164
+
*[x] list
165
+
*[ ] edit
166
+
*[ ] API documentation
167
+
*[ ] Some examples
168
+
88
169
### gix-actor
89
170
*[x] read and write a signature that uniquely identifies an actor within a git repository
90
171
*[x] a way to parse `name <email>` tuples (instead of full signatures) to facilitate parsing
@@ -611,138 +692,6 @@ See its [README.md](https://github.com/Byron/gitoxide/blob/main/gix-lock/README.
611
692
*[x] API documentation
612
693
*[x] Some examples
613
694
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
-
*[ ] strict object creation (validate objects referenced by newly created objects exist)
619
-
*[ ] strict hash verification (validate that objects actually have the hashes they claim to have)
620
-
***Repository**
621
-
*[x] discovery
622
-
* [x] option to not cross file systems (default)
623
-
* [x] handle git-common-dir
624
-
* [x] support for `GIT_CEILING_DIRECTORIES` environment variable
625
-
* [] handle other non-discovery modes and provide control over environment variable usage required in applications
626
-
*[x] rev-parse
627
-
*[x] rev-walk
628
-
*[x] include tips
629
-
*[ ] exclude commits
630
-
*[x] instantiation
631
-
*[x] access to refs and objects
632
-
***credentials**
633
-
*[x] run `git credential` directly
634
-
*[x] use credential helper configuration and to obtain credentials with `gix_credentials::helper::Cascade`
635
-
***config**
636
-
*[ ] facilities to apply the [url-match](https://git-scm.com/docs/git-config#Documentation/git-config.txt-httplturlgt) algorithm and to
637
-
[normalize urls](https://github.com/git/git/blob/be1a02a17ede4082a86dfbfee0f54f345e8b43ac/urlmatch.c#L109:L109) before comparison.
638
-
***traverse**
639
-
*[x] commit graphs
640
-
*[ ] make [git-notes](https://git-scm.com/docs/git-notes) accessible
641
-
*[x] tree entries
642
-
***diffs/changes**
643
-
*[x] tree with other tree
644
-
*[ ] respect case-sensitivity of host filesystem.
645
-
*[x] a way to access various diff related settings or use them
646
-
*[ ] respect `diff.*.textconv`, `diff.*.cachetextconv` and external diff viewers with `diff.*.command`,
647
-
[along with support for reading `diff` gitattributes](https://github.com/git/git/blob/73876f4861cd3d187a4682290ab75c9dccadbc56/Documentation/gitattributes.txt#L699:L699).
648
-
***rewrite tracking**
649
-
***deviation** - git keeps up to four candidates whereas we use the first-found candidate that matches the similarity percentage.
650
-
This can lead to different sources being found. As such, we also don't consider the filename at all.
651
-
*[ ] handle binary files correctly, and apply filters for that matter
652
-
*[x] computation limit with observable reduction of precision when it is hit, for copies and renames separately
653
-
***by identity**
654
-
*[x] renames (sym-links are only ever compared by identity)
655
-
*[x] copies
656
-
***by similarity** - similarity factor controllable separately from renames
657
-
*[x] renames
658
-
*[x] copies
659
-
*[x] 'find-copies-harder' - find copies with the source being the entire tree.
660
-
*[ ] tree or index with working tree
661
-
*[x] diffs between modified blobs with various algorithms
662
-
*[ ] tree with index
663
-
*[x] initialize
664
-
*[x] Proper configuration depending on platform (e.g. ignorecase, filemode, …)
665
-
***Id**
666
-
*[x] short hashes with detection of ambiguity.
667
-
***Commit**
668
-
*[x]`git describe` like functionality, with optional commit-graph acceleration
669
-
*[x] create new commit from tree
670
-
***Objects**
671
-
*[x] lookup
672
-
*[x] peel to object kind
673
-
*[ ] create [signed commits and tags](https://github.com/Byron/gitoxide/issues/12)
674
-
***trees**
675
-
*[x] lookup path
676
-
***references**
677
-
*[x] peel to end
678
-
*[x] ref-log access
679
-
*[x] remote name
680
-
*[x] find remote itself
681
-
-[ ] respect `branch.<name>.merge` in the returned remote.
682
-
***remotes**
683
-
*[x] clone
684
-
*[x] shallow
685
-
*[ ] include-tags when shallow is used (needs separate fetch)
0 commit comments