Skip to content

Credentials helper launching in all its variety #496

New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Merged
merged 244 commits into from
Sep 5, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
244 commits
Select commit Hold shift + click to select a range
19c1746
Support for -c CLI config overrides in `gix config`. (#450)
Byron Aug 22, 2022
96a265c
feat!: generalize extension schemes. (#450)
Byron Aug 23, 2022
bb83843
adjust to changes in `git-url` (#450)
Byron Aug 23, 2022
cd59965
tests for `protocol.allow` (#450)
Byron Aug 23, 2022
3f708f3
sketch for lazy initialization of information to deal with allowing s…
Byron Aug 23, 2022
2bce6a3
support for failing configuration, for now without 'lenient' config s…
Byron Aug 23, 2022
d40f6e1
feat: `Scheme::try_from(&str)` (#450)
Byron Aug 23, 2022
3ec28f0
The first succeeding test for allowing schemes (without 'user' settin…
Byron Aug 23, 2022
c5bd452
thanks clippy
Byron Aug 23, 2022
2da6c86
fix!: make Scheme work with serde, removing `Copy` in the process. e…
Byron Aug 23, 2022
6f89659
deal with changes in `git-url` (#450)
Byron Aug 23, 2022
dc74fbd
thanks clippy
Byron Aug 23, 2022
f8a5188
Respect `permissions.allow` (#450)
Byron Aug 23, 2022
0f18ff5
update README to reflect new `gix remote refs` command (#450)
Byron Aug 23, 2022
cfa1440
Merge branch 'main' into filter-refs-by-spec
Byron Aug 24, 2022
a395308
refactor (#450)
Byron Aug 24, 2022
4c39521
rename!: `helper::(encode|decode)_message(…)` to `::message::(encode|…
Byron Aug 24, 2022
081934c
change!: hide `helper::action()` in favor of single path via `helper(…
Byron Aug 24, 2022
4c1a1a2
change!: use `thiserror` instead of `quickerror` (#450)
Byron Aug 24, 2022
de92fce
re-add `Result` type (#450)
Byron Aug 24, 2022
db46b60
fix docs (#450)
Byron Aug 24, 2022
167b521
refactor (#450)
Byron Aug 24, 2022
486ef98
prepare for more additional implementations of helpers (#450)
Byron Aug 24, 2022
af27d20
refactor (#450)
Byron Aug 24, 2022
64bc2ec
feat: `helper::invoke(helper, action, context)` function that allows …
Byron Aug 24, 2022
f2a2c5e
express `helper()` in terms of `helper::invoke()` (#450)
Byron Aug 24, 2022
077ab57
refactor (#450)
Byron Aug 24, 2022
01efe88
thanks clippy
Byron Aug 24, 2022
03bf747
refactor (#450)
Byron Aug 24, 2022
71f6519
change!: move `helper::invoke()` related types into `helper::invoke` …
Byron Aug 24, 2022
40cc1dc
adjust to changes in `git-credentials` (#450)
Byron Aug 24, 2022
0cb1ed4
flesh out `helper::Context` as it will soon be used. (#450)
Byron Aug 24, 2022
280e4a3
basic round-tripping of fully fleshed-out context(#450)
Byron Aug 24, 2022
20dde9e
test context value validation (#450)
Byron Aug 24, 2022
0e76efe
remaining decode tests (#450)
Byron Aug 24, 2022
9c6f024
change!: Use `helper::Context` in `helper::Action::Fill()` (#450)
Byron Aug 24, 2022
2073b58
change!: rename `helper::Action` variants to 'Get', 'Store', 'Erase' …
Byron Aug 24, 2022
a253d30
feat: add `helper::Action::get_for_url(…)` (#450)
Byron Aug 24, 2022
fe1a06d
adjust to changes in `git-credentials` (#450)
Byron Aug 24, 2022
8317b46
thanks clippy
Byron Aug 24, 2022
d9b4ba5
fix docs (#450)
Byron Aug 24, 2022
ddd5398
change!: rename `helper::NextAction` variants to `store` and `erase` …
Byron Aug 24, 2022
33f1347
adjust to changes in `git-credentials` (#450)
Byron Aug 24, 2022
cb9d32a
refactor (#450)
Byron Aug 24, 2022
c48eb39
sketch for helper::invoke (get) test (#450)
Byron Aug 24, 2022
4b7d0b6
change!: move `helper::(Next)Action` into `helper::invoke::` module (…
Byron Aug 24, 2022
eaff67c
feat: `helper::main` to easily create credential helper implementatio…
Byron Aug 24, 2022
a360594
add docs (#450)
Byron Aug 24, 2022
b1d528a
feat: an example implementing a custom credential helper program (#450)
Byron Aug 24, 2022
9b8a6d6
thanks clippy
Byron Aug 24, 2022
dbfa328
Merge branch 'main' into filter-refs-by-spec
Byron Aug 25, 2022
4d7b1dd
first test for launching the git credential helper (#450)
Byron Aug 25, 2022
46e3045
sketch additional credentials programs (#450)
Byron Aug 25, 2022
b8c54f0
rename!: `helper::Kind` to `program::Kind` (#450)
Byron Aug 25, 2022
2b2cd00
initial version of parsing of custom helper definitions (#450)
Byron Aug 25, 2022
b2f4fe8
also fill in the git credential command prefix (#450)
Byron Aug 25, 2022
436632a
first frame of `git-command` crate (#450)
Byron Aug 25, 2022
579e8f1
prepare changelog prior to release (#450)
Byron Aug 25, 2022
6c27e94
Release git-command v0.0.0
Byron Aug 25, 2022
cd4a608
First sketch of git-command API (#450)
Byron Aug 25, 2022
f4bc860
fix tests on windows (#450)
Byron Aug 25, 2022
f58a043
feat: add `is_absolute()` for git-style absolute checks (#450)
Byron Aug 25, 2022
2ba836f
use git_path::is_absolute() (#450)
Byron Aug 25, 2022
8c61b0b
basic support for 'sh' based execution (#450)
Byron Aug 25, 2022
6a39e62
add remaining docs (#450)
Byron Aug 25, 2022
1322f72
set version to 0.1 to avoid surprises like happened with `git-date` (…
Byron Aug 25, 2022
eeedd2c
Add a way to transform a `Prepare` into a `Command` for even more fle…
Byron Aug 25, 2022
1cb2e96
Squelch errors by default (#450)
Byron Aug 25, 2022
d8e8b54
support for multiple arguments with shell-script support (#450)
Byron Aug 25, 2022
377cf14
Support for script invocations (#450)
Byron Aug 25, 2022
b396032
More tests for custom helper scripts (#450)
Byron Aug 25, 2022
0dc1da5
thanks clippy
Byron Aug 25, 2022
419ca56
disable test that seems to fail on linux (#450)
Byron Aug 25, 2022
335bb64
refactor (#450)
Byron Aug 26, 2022
bcfe5ca
support for non-consuming operation of `Program` (#450)
Byron Aug 26, 2022
7487b5a
refactor (#450)
Byron Aug 26, 2022
830ee07
Only actually use the shell if it appears to be required (#450)
Byron Aug 26, 2022
3be1fc7
A builder method to allow prompts specifically (#450)
Byron Aug 26, 2022
0236d75
remove `allow prompt` builder method as typical prompt implementation…
Byron Aug 26, 2022
5a50528
support for `quit` field in context (#450)
Byron Aug 26, 2022
08c1287
improved error when identity could not be obtained (#450)
Byron Aug 26, 2022
c09d223
Make clear in the error type that the helper program couldn't be star…
Byron Aug 26, 2022
2edb58b
make clear what `helper()` does by renaming it to `git` (#450)
Byron Aug 26, 2022
cabe40a
adjust to changes in `git-credentials` (#450)
Byron Aug 26, 2022
49b9bd5
change!: invoke::Outcome can now represent partial identities (#450)
Byron Aug 26, 2022
811985a
change!: differentiate between top-level functions and those which ar…
Byron Aug 26, 2022
27c9da5
adapt to changes in `git-credentials` (#450)
Byron Aug 26, 2022
99958c6
fix build (#450)
Byron Aug 26, 2022
e8e80f5
thanks clippy
Byron Aug 26, 2022
52e958d
refactor (#450)
Byron Aug 26, 2022
6565b97
fix CI (#450)
Byron Aug 26, 2022
bfa2545
change!: rename `Program::Custom*` variants to `Program::External*` (…
Byron Aug 26, 2022
f86364c
fix docs (#450)
Byron Aug 26, 2022
783a1a7
change!: rename `git()` to `builtin()` (#450)
Byron Aug 26, 2022
dc32898
adjust to changes in `git-credentials` (#450)
Byron Aug 26, 2022
39b6514
make 'quit' handler request representable and raise it to an error (#…
Byron Aug 26, 2022
4767a14
A sketch of how a custom 'git credential' could look like (#450)
Byron Aug 26, 2022
23fb302
refactor (#450)
Byron Aug 26, 2022
85f8cd9
refactor (#450)
Byron Aug 26, 2022
32758e8
adjust to changes in git-credentials (#450)
Byron Aug 26, 2022
b66258f
Platform specific defaults for the program cascade (#450)
Byron Aug 26, 2022
ce16f51
refactor (#450)
Byron Aug 26, 2022
1d1622a
first step towards our own `git credential` -like implementation (#450)
Byron Aug 26, 2022
525fa97
refactor; try harder not to spill secrets in errors (#450)
Byron Aug 26, 2022
0cdbde7
breaking credential helpers don't stop everything (#450)
Byron Aug 26, 2022
c00cc35
url-preprocessing for scripts (#450)
Byron Aug 26, 2022
c1399d1
thanks clippy
Byron Aug 26, 2022
5a2168e
Allow programs to communicate errors by default (#450)
Byron Aug 26, 2022
cdfcea4
refactor (#450)
Byron Aug 26, 2022
4abec50
Allow disabling stderr on credential programs (#450)
Byron Aug 26, 2022
5e260da
parse 'quit' according to spec (#450)
Byron Aug 26, 2022
ece5a3f
improve path normalization; a new ignored test (#450)
Byron Aug 26, 2022
d526c6d
fix CI (#450)
Byron Aug 26, 2022
52d2e54
another test (#450)
Byron Aug 26, 2022
561bb35
refactor (#450)
Byron Aug 26, 2022
57e9060
more tests (#450)
Byron Aug 26, 2022
89db8ee
fix tests on linux (#450)
Byron Aug 26, 2022
24da911
use fixtures in all tests (#450)
Byron Aug 26, 2022
19b84f0
remove unnecessary `Helper` trait (#450)
Byron Aug 26, 2022
569b7bc
another test (#450)
Byron Aug 27, 2022
cef0b51
Merge branch 'main' into filter-refs-by-spec
Byron Aug 29, 2022
afaae28
frame to support prompting (as compile-time feature) (#450)
Byron Aug 29, 2022
c78f4b8
blindly implement prompting if it is allowed (#450)
Byron Aug 29, 2022
a3fadea
add interactive example for prompt, but… (#450)
Byron Aug 29, 2022
b0140a6
Add `git-prompt` crate for registration (#450)
Byron Aug 29, 2022
3c7d490
prepare changelog (#450)
Byron Aug 29, 2022
41281ad
Release git-prompt v0.0.0
Byron Aug 29, 2022
b3e5e59
remove rustyline in favor of `git-prompt` (#450)
Byron Aug 29, 2022
63ee38d
proper prompt generation (#450)
Byron Aug 29, 2022
b18866e
frame for cross-platform compatible implementation (#450)
Byron Aug 29, 2022
8582697
the first successful assertion, showing that expectrl can intercept the
Byron Aug 29, 2022
7c0297f
basic TTY based prompting, without hiding of secrets (#450)
Byron Aug 29, 2022
141aaa3
properly trim the username at the end, and test for it (#450)
Byron Aug 29, 2022
dc2765f
restrict tests to unix only (#450)
Byron Aug 29, 2022
910fa06
add safety notes (#450)
Byron Aug 29, 2022
a4ec2e2
save state with restore and password reading, without hiding (#450)
Byron Aug 29, 2022
6a55a7b
Also setup the tty accordingly to not echo input (#450)
Byron Aug 29, 2022
9867384
thanks clippy
Byron Aug 29, 2022
f10623b
add missing docs (#450)
Byron Aug 29, 2022
c024439
Try to pacify rust-sec (#450)
Byron Aug 29, 2022
a8d9d12
See if not having cargo-run output in program invocation fixes it on …
Byron Aug 29, 2022
b346169
refactor (#450)
Byron Aug 29, 2022
f87edf2
add new git-config-value crate (#450)
Byron Aug 29, 2022
db2d8ae
cargo-diet for git-prompt (#450)
Byron Aug 29, 2022
edb1162
copy all value code from git-config to the dedicated crate (#450)
Byron Aug 29, 2022
9b28df2
port tests over as well (#450)
Byron Aug 29, 2022
5ad2965
change: `git-config` now uses `git-config-value`. (#450)
Byron Aug 29, 2022
43656d5
change: use `git-config-value` crate (#450)
Byron Aug 29, 2022
c48fb31
Release git-path v0.4.2, git-config-value v0.7.0
Byron Aug 29, 2022
c396ba1
add changelog (#450)
Byron Aug 29, 2022
21c0ab9
Release git-config-value v0.7.0
Byron Aug 29, 2022
60c136c
fix docs (#450)
Byron Aug 29, 2022
0f11a6d
fix windows tests (#450)
Byron Aug 29, 2022
a36c05d
Merge branch 'main' into filter-refs-by-spec
Byron Aug 30, 2022
f8c8cbb
sketch askpass path (#450)
Byron Aug 30, 2022
15bb50c
a flexible `Mode` enum to handle all possible states (#450)
Byron Aug 30, 2022
b0c6863
more helpful prompt error messages when asking for credentials (#450)
Byron Aug 30, 2022
0fa676a
refactor (#450)
Byron Aug 30, 2022
5f675d3
feat: `Boolean::try_from(OsString)` (#450)
Byron Aug 30, 2022
af08b38
A for now untested way to adjust options with environment variables (…
Byron Aug 30, 2022
623d4a5
tests for `Options::apply_environment()` (#450)
Byron Aug 30, 2022
e011242
fix warnings (#450)
Byron Aug 30, 2022
1efb139
askpass example (#450)
Byron Aug 30, 2022
77026d7
refactor (#450)
Byron Aug 30, 2022
a023d7d
a test to validate askpass support (#450)
Byron Aug 30, 2022
1ddcb50
getting closer to using askpass correctly (#450)
Byron Aug 30, 2022
bb1acf4
validate askpass program works (#450)
Byron Aug 30, 2022
7657693
set version of git-prompt to 0.1 and turn prompting on (#450)
Byron Aug 30, 2022
bd0ea68
always compile prompting support in (#450)
Byron Aug 30, 2022
c8f1b41
refactor (#450)
Byron Aug 30, 2022
51930a2
Use reference `git-prompt::Options` to allow them to be re-used (#450)
Byron Aug 30, 2022
baad8a0
credential-cascade now passes on prompt options (#450)
Byron Aug 30, 2022
9788e30
make clearer what platform builtins actually are (#450)
Byron Aug 30, 2022
4b5d63f
make it less easy to start a cascade with platform_defaults() (#450)
Byron Aug 30, 2022
959fc09
refactor (#450)
Byron Aug 30, 2022
2916b08
frame for overridable credential helpers (#450)
Byron Aug 30, 2022
99fb1cf
A sketch to allow obtaining a function for credentials by url on the …
Byron Aug 30, 2022
4c7799c
refactor (#450)
Byron Aug 30, 2022
55eb965
frame for baseline for credential helpers (#450)
Byron Aug 30, 2022
56ba481
Merge branch 'main' into filter-refs-by-spec
Byron Aug 31, 2022
d56b9d5
sketch the API for obtaining credential information (#450)
Byron Aug 31, 2022
959c0bd
Cascade supports `use_http_path` and respects it when setting up the …
Byron Aug 31, 2022
970ec9b
make note about why we don't support passwords in URLs (#450)
Byron Aug 31, 2022
22694df
first baseline setup to trigger implementation to reproduce credentia…
Byron Aug 31, 2022
36d8c57
change!: Remove 'unstable' feature. (#450)
Byron Aug 31, 2022
b99b6bf
adjust to deal with changes to git-repository (#450)
Byron Aug 31, 2022
94911f2
get to the point where url matching plays a role. (#450)
Byron Aug 31, 2022
64a9d09
test is using baseline exclusively now; get section's username as wel…
Byron Aug 31, 2022
337a53b
credential context won't send url and quit fields to helpers (#450)
Byron Aug 31, 2022
87ae404
Context has to serialize url or else the builtin credential helper ma…
Byron Aug 31, 2022
be0f834
An example on how to invoke the git credential helper driver (#450)
Byron Aug 31, 2022
6149a14
move `program::Cascade` to `helper::Cascade` which is what it is (#450)
Byron Aug 31, 2022
45ba6cb
adjust to changes in `git-credentials` (#450)
Byron Aug 31, 2022
9a5ec7b
fix docs (#450)
Byron Aug 31, 2022
9059de8
Make sure the helper::Cascade never sends the URL to helper programs …
Byron Aug 31, 2022
51dc828
Merge branch 'main' into filter-refs-by-spec
Byron Sep 1, 2022
beddce1
the first successful url matching test (#450)
Byron Sep 1, 2022
dc57b67
mark a difference in the way credential helper urls are validated (#450)
Byron Sep 1, 2022
8c686e0
tests as far as possible without implementing url matching (#450)
Byron Sep 1, 2022
1983fbc
Make tests more robust; fix windows tests (#450)
Byron Sep 1, 2022
cba9ede
fix: Allow multiple scripts to run at the same time, if they are not …
Byron Sep 1, 2022
b8b4371
fix warnings on windows (#450)
Byron Sep 1, 2022
1b19611
basic url matching with a simple glob (#450)
Byron Sep 2, 2022
fbe75c9
feat: `Url::path_is_root()` to determine if the path is `/`. (#450)
Byron Sep 2, 2022
5db8057
update crate status (#450)
Byron Sep 2, 2022
2d81b9f
Support for host-based matching (#450)
Byron Sep 2, 2022
7484db5
feat: `Url::port_or_default()` to fill in default numbers for ports i…
Byron Sep 2, 2022
2221778
more tests for better host and protocol matching of http and https ur…
Byron Sep 2, 2022
593e4a8
refactor (#450)
Byron Sep 3, 2022
6f4e052
remove glob-matching as it's not correct (#450)
Byron Sep 3, 2022
5aefe66
better normalization and clear-list support (#450)
Byron Sep 3, 2022
64b6b30
All but one test work after username handling refactor (#450)
Byron Sep 3, 2022
b99e9d8
username matching works (#450)
Byron Sep 3, 2022
eb34156
more default-port tests (#450)
Byron Sep 3, 2022
60d8997
tests for domain globbing (#450)
Byron Sep 3, 2022
5b19729
subdomain globbing works (#450)
Byron Sep 3, 2022
77c27eb
test our understanding of case-folding when matching urls (#450)
Byron Sep 3, 2022
97e23dd
thanks clippy
Byron Sep 3, 2022
4fa8a84
refactor (#450)
Byron Sep 3, 2022
02e5775
refactor (#450)
Byron Sep 3, 2022
e9f4d40
assure that protocol::Context::to_url() never shows passwords (#450)
Byron Sep 3, 2022
74ede20
fix: `Reference::remote()` can produce remotes for URLs (#450)
Byron Sep 3, 2022
a872bf7
remark about improvements to the type system around certain remote na…
Byron Sep 3, 2022
82ee79e
thanks clippy
Byron Sep 3, 2022
1f6e5ab
Merge branch 'main' into filter-refs-by-spec
Byron Sep 3, 2022
93ac4c3
refactor (#450)
Byron Sep 3, 2022
2992b1b
feat!: Add reference remote name type to make usage of `remote_name()…
Byron Sep 3, 2022
34bc1b3
thanks clippy
Byron Sep 3, 2022
9aa1d3d
Merge branch 'main' into filter-refs-by-spec
Byron Sep 4, 2022
15f1afc
feat: `protocol::Context::to_bstring()`, and use it in `example/git-c…
Byron Sep 4, 2022
1c13f11
feat: add `prompt` to top level forwarding #450)
Byron Sep 4, 2022
642e21f
Add sketch of `gix credential` (#450)
Byron Sep 4, 2022
d95029e
`program::main::Action::as_str()` (#450)
Byron Sep 5, 2022
7abc0a3
refactor (#450)
Byron Sep 5, 2022
4dbbf51
Mention `gix credential` program (#450)
Byron Sep 5, 2022
5b4cb83
Also provide prompt configuration to allow Cascade::invoke() to be ca…
Byron Sep 5, 2022
b978619
fix exports to allow error type to be visible publicly (#450)
Byron Sep 5, 2022
8e07784
Use repository configuration for calling credential helper (#450)
Byron Sep 5, 2022
cc78473
first step towards efficiently obtaining git config information (#450)
Byron Sep 5, 2022
ea52e4e
A way to parse the first git-config file path (#450)
Byron Sep 5, 2022
ea84e62
remove quick-error in favor of thiserror (#450)
Byron Sep 5, 2022
d51e7c9
feat: Add `permissions::Config::git_binary` field (#450)
Byron Sep 5, 2022
23d2dec
Select `gix` commands will now load the git installation configuratio…
Byron Sep 5, 2022
ab81525
thanks clippy
Byron Sep 5, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
213 changes: 201 additions & 12 deletions Cargo.lock

Large diffs are not rendered by default.

3 changes: 3 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,9 @@ members = [
"git-hash",
"git-validate",
"git-ref",
"git-command",
"git-config",
"git-config-value",
"git-discover",
"git-features",
"git-commitgraph",
Expand All @@ -144,6 +146,7 @@ members = [
"git-packetline",
"git-mailmap",
"git-note",
"git-prompt",
"git-filter",
"git-sec",
"git-lfs",
Expand Down
6 changes: 4 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ clippy: ## Run cargo clippy on all crates
cargo clippy --all --no-default-features --features lean-async --tests

check-msrv: ## run cargo msrv to validate the current msrv requirements, similar to what CI does
cd git-repository && cargo check --package git-repository --no-default-features --features async-network-client,unstable,max-performance
cd git-repository && cargo check --package git-repository --no-default-features --features async-network-client,max-performance

check: ## Build all code in suitable configurations
cargo check --all
Expand Down Expand Up @@ -107,6 +107,8 @@ check: ## Build all code in suitable configurations
&& cargo check --features cache-efficiency-debug
cd git-commitgraph && cargo check --all-features \
&& cargo check
cd git-config-value && cargo check --all-features \
&& cargo check
cd git-config && cargo check --all-features \
&& cargo check
cd git-transport && cargo check \
Expand Down Expand Up @@ -280,7 +282,7 @@ bench-git-config:
check-msrv-on-ci: ## Check the minimal support rust version for currently installed Rust version
rustc --version
cargo check --package git-repository
cargo check --package git-repository --no-default-features --features async-network-client,unstable,max-performance
cargo check --package git-repository --no-default-features --features async-network-client,max-performance

##@ Maintenance

Expand Down
9 changes: 7 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,10 @@ Please see _'Development Status'_ for a listing of all crates and their capabili
* [x] **explain** - show what would be done while parsing a revision specification like `HEAD~1`
* [x] **resolve** - show which objects a revspec resolves to, similar to `git rev-parse` but faster and with much better error handling
* [x] **previous-branches** - list all previously checked out branches, powered by the ref-log.
* **remote**
* [x] **refs** - list all references available on the remote based on the current remote configuration.
* **credential**
* [x] **fill/approve/reject** - The same as `git credential`, but implemented in Rust, calling helpers only when from trusted configuration.
* **free** - no git repository necessary
* **pack**
* [x] [verify](https://asciinema.org/a/352942)
Expand Down Expand Up @@ -75,8 +79,6 @@ Please see _'Development Status'_ for a listing of all crates and their capabili
* [x] detailed information about the TREE extension
* [ ] …other extensions details aren't implemented yet
* [x] **checkout-exclusive** - a predecessor of `git worktree`, providing flexible options to evaluate checkout performance from an index and/or an object database.
* **remote**
* [ref-list](https://asciinema.org/a/359320) - list all (or given) references from a remote at the given URL

[skim]: https://github.com/lotabout/skim
[git-hours]: https://github.com/kimmobrunfeldt/git-hours/blob/8aaeee237cb9d9028e7a2592a25ad8468b1f45e4/index.js#L114-L143
Expand Down Expand Up @@ -105,6 +107,7 @@ Documentation is complete and was reviewed at least once.
* [git-chunk](https://github.com/Byron/gitoxide/blob/main/crate-status.md#git-chunk)
* [git-ref](https://github.com/Byron/gitoxide/blob/main/crate-status.md#git-ref)
* [git-config](https://github.com/Byron/gitoxide/blob/main/crate-status.md#git-config)
* [git-config-value](https://github.com/Byron/gitoxide/blob/main/crate-status.md#git-config-value)
* [git-glob](https://github.com/Byron/gitoxide/blob/main/crate-status.md#git-glob)

### Initial Development
Expand Down Expand Up @@ -137,6 +140,8 @@ is usable to some extend.
* [git-pathspec](https://github.com/Byron/gitoxide/blob/main/crate-status.md#git-pathspec)
* [git-index](https://github.com/Byron/gitoxide/blob/main/crate-status.md#git-index)
* [git-revision](https://github.com/Byron/gitoxide/blob/main/crate-status.md#git-revision)
* [git-command](https://github.com/Byron/gitoxide/blob/main/crate-status.md#git-command)
* [git-prompt](https://github.com/Byron/gitoxide/blob/main/crate-status.md#git-prompt)
* `gitoxide-core`
* **very early** _(possibly without any documentation and many rough edges)_
* [git-worktree](https://github.com/Byron/gitoxide/blob/main/crate-status.md#git-worktree)
Expand Down
2 changes: 1 addition & 1 deletion cargo-smart-release/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ test = false
cache-efficiency-debug = ["git-repository/cache-efficiency-debug"]

[dependencies]
git-repository = { version = "^0.24.0", path = "../git-repository", default-features = false, features = ["unstable", "max-performance-safe"] }
git-repository = { version = "^0.24.0", path = "../git-repository", default-features = false, features = ["max-performance-safe"] }
anyhow = "1.0.42"
clap = { version = "3.2.5", features = ["derive", "cargo"] }
env_logger = { version = "0.9.0", default-features = false, features = ["humantime", "termcolor", "atty"] }
Expand Down
61 changes: 44 additions & 17 deletions crate-status.md
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,9 @@ Check out the [performance discussion][git-traverse-performance] as well.
* [x] convert URL to string
* [x] API documentation
* [ ] Some examples

- **deviation**
* URLs may not contain passwords, which cannot be represent here and if present, will be ignored.

### git-protocol
* _abstract over protocol versions to allow delegates to deal only with a single way of doing things_
* [x] **credentials**
Expand Down Expand Up @@ -240,6 +242,18 @@ Check out the [performance discussion][git-traverse-performance] as well.
* [ ] for fetch
* [ ] for push

### git-command
* [x] execute commands directly
* [x] execute commands with `sh`
* [ ] support for `GIT_EXEC_PATH` environment variable with `git-sec` filter

### git-prompt
* [x] open prompts for usernames for example
* [x] secure prompts for password
* [x] use `askpass` program if available
* [ ] signal handling (resetting and restoring terminal settings)
* [ ] windows prompts for `cmd.exe` and mingw terminals

### git-note

A mechanism to associate metadata with any object, and keep revisions of it using git itself.
Expand All @@ -262,6 +276,11 @@ A mechanism to associate metadata with any object, and keep revisions of it usin

### git-credentials
* [x] launch git credentials helpers with a given action
- [x] built-in `git credential` program
- [x] as scripts
- [x] as absolute paths to programs with optional arguments
- [x] program name with optional arguments, transformed into `git credential-<name>`
* [x] `helper::main()` for easy custom credential helper programs written in Rust

### git-filter

Expand Down Expand Up @@ -393,18 +412,20 @@ See its [README.md](https://github.com/Byron/gitoxide/blob/main/git-tempfile/REA

See its [README.md](https://github.com/Byron/gitoxide/blob/main/git-lock/README.md).

### git-config-value
* **parse**
* [x] boolean
* [x] integer
* [x] color
* [ ] ANSI code output for terminal colors
* [x] path (incl. resolution)
* [ ] date
* [ ] [permission][https://github.com/git/git/blob/71a8fab31b70c417e8f5b5f716581f89955a7082/setup.c#L1526:L1526]

### git-config
* [x] read
* zero-copy parsing with event emission
* [x] decode value
* [x] boolean
* [x] integer
* [x] color
* [ ] ANSI code output for terminal colors
* [x] path (incl. resolution)
* [ ] date
* [ ] [permission][https://github.com/git/git/blob/71a8fab31b70c417e8f5b5f716581f89955a7082/setup.c#L1526:L1526]
* [x] include
* all config values as per the `git-config-value` crate
* **includeIf**
* [x] `gitdir`, `gitdir/i`, and `onbranch`
* [ ] `hasconfig`
Expand All @@ -415,8 +436,8 @@ See its [README.md](https://github.com/Byron/gitoxide/blob/main/git-lock/README.
* keep comments and whitespace, and only change lines that are affected by actual changes, to allow truly non-destructive editing
* [x] cascaded loading of various configuration files into one
* [x] load from environment variables
* [ ] load from well-known sources for global configuration
* [ ] load repository configuration with all known sources
* [x] load from well-known sources for global configuration
* [x] load repository configuration with all known sources
* [x] API documentation
* [x] Some examples

Expand All @@ -428,16 +449,20 @@ See its [README.md](https://github.com/Byron/gitoxide/blob/main/git-lock/README.
* [x] discovery
* [x] option to not cross file systems (default)
* [x] handle git-common-dir
* [ ] support for `GIT_CEILING_DIRECTORIES` environment variable
* [x] support for `GIT_CEILING_DIRECTORIES` environment variable
* [ ] handle other non-discovery modes and provide control over environment variable usage required in applications
* [x] rev-parse
- **deviation**
* `@` actually stands for `HEAD`, whereas `git` resolves it to the object pointed to by `HEAD` without making the `HEAD` ref available for lookups.
* [x] rev-walk
* [x] include tips
* [ ] exclude commits
* [x] instantiation
* [x] access to refs and objects
* **credentials**
* [x] run `git credential` directly
* [x] use credential helper configuration and to obtain credentials with `git_credential::helper::Cascade`
* **config**
* [ ] facilities to apply the [url-match](https://git-scm.com/docs/git-config#Documentation/git-config.txt-httplturlgt) algorithm and to
[normalize urls](https://github.com/git/git/blob/be1a02a17ede4082a86dfbfee0f54f345e8b43ac/urlmatch.c#L109:L109) before comparison.
* **traverse**
* [x] commit graphs
* [ ] make [git-notes](https://git-scm.com/docs/git-notes) accessible
Expand Down Expand Up @@ -469,8 +494,10 @@ See its [README.md](https://github.com/Byron/gitoxide/blob/main/git-lock/README.
* [ ] shallow
* [ ] fetch
* [ ] push
* [ ] ls-refs
* [ ] list, find by name, create in memory.
* [x] ls-refs
* [ ] ls-refs with ref-spec filter
* [ ] list, find by name
* [x] create in memory
* [ ] groups
* [ ] [remote and branch files](https://github.com/git/git/blob/master/remote.c#L300)
* [ ] execute hooks
Expand Down
2 changes: 1 addition & 1 deletion deny.toml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ yanked = "warn"
# 2019-12-17 there are no security notice advisories in
# https://github.com/rustsec/advisory-db
notice = "warn"
ignore = [ ]
ignore = ["RUSTSEC-2021-0119"] # 'nix' comes in via `expectrl`, which is a dev-dependency only. Somewhat unmaintained.



Expand Down
9 changes: 6 additions & 3 deletions etc/check-package-size.sh
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,9 @@ echo "in root: gitoxide CLI"
(enter git-bitmap && indent cargo diet -n --package-size-limit 5KB)
(enter git-tempfile && indent cargo diet -n --package-size-limit 30KB)
(enter git-lock && indent cargo diet -n --package-size-limit 20KB)
(enter git-config && indent cargo diet -n --package-size-limit 115KB)
(enter git-config && indent cargo diet -n --package-size-limit 120KB)
(enter git-config-value && indent cargo diet -n --package-size-limit 20KB)
(enter git-command && indent cargo diet -n --package-size-limit 5KB)
(enter git-hash && indent cargo diet -n --package-size-limit 20KB)
(enter git-chunk && indent cargo diet -n --package-size-limit 10KB)
(enter git-rebase && indent cargo diet -n --package-size-limit 5KB)
Expand All @@ -46,13 +48,14 @@ echo "in root: gitoxide CLI"
(enter git-note && indent cargo diet -n --package-size-limit 5KB)
(enter git-sec && indent cargo diet -n --package-size-limit 15KB)
(enter git-tix && indent cargo diet -n --package-size-limit 5KB)
(enter git-credentials && indent cargo diet -n --package-size-limit 10KB)
(enter git-credentials && indent cargo diet -n --package-size-limit 20KB)
(enter git-prompt && indent cargo diet -n --package-size-limit 15KB)
(enter git-object && indent cargo diet -n --package-size-limit 25KB)
(enter git-commitgraph && indent cargo diet -n --package-size-limit 25KB)
(enter git-pack && indent cargo diet -n --package-size-limit 115KB)
(enter git-odb && indent cargo diet -n --package-size-limit 120KB)
(enter git-protocol && indent cargo diet -n --package-size-limit 50KB)
(enter git-packetline && indent cargo diet -n --package-size-limit 35KB)
(enter git-repository && indent cargo diet -n --package-size-limit 160KB)
(enter git-repository && indent cargo diet -n --package-size-limit 175KB)
(enter git-transport && indent cargo diet -n --package-size-limit 55KB)
(enter gitoxide-core && indent cargo diet -n --package-size-limit 80KB)
2 changes: 1 addition & 1 deletion experiments/diffing/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ publish = false

[dependencies]
anyhow = "1"
git-repository = { version = "^0.24.0", path = "../../git-repository", features = ["unstable"] }
git-repository = { version = "^0.24.0", path = "../../git-repository" }
git-features-for-config = { package = "git-features", version = "^0.22.4", path = "../../git-features", features = ["cache-efficiency-debug"] }
git2 = "0.14"
rayon = "1.5.0"
2 changes: 1 addition & 1 deletion experiments/object-access/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ publish = false

[dependencies]
anyhow = "1"
git-repository = { path = "../../git-repository", version = "^0.24.0", features = ["unstable"] }
git-repository = { path = "../../git-repository", version = "^0.24.0" }
git2 = "0.14"
rayon = "1.5.0"
parking_lot = { version = "0.12.0", default-features = false }
2 changes: 1 addition & 1 deletion experiments/traversal/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ publish = false

[dependencies]
anyhow = "1"
git-repository = { version = "^0.24.0", path = "../../git-repository", features = ["unstable"] }
git-repository = { version = "^0.24.0", path = "../../git-repository" }
git2 = "0.14"
rayon = "1.5.0"
dashmap = "5.1.0"
2 changes: 1 addition & 1 deletion git-attributes/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ serde1 = ["serde", "bstr/serde1", "git-glob/serde1", "compact_str/serde"]

[dependencies]
git-features = { version = "^0.22.4", path = "../git-features" }
git-path = { version = "^0.4.1", path = "../git-path" }
git-path = { version = "^0.4.2", path = "../git-path" }
git-quote = { version = "^0.2.1", path = "../git-quote" }
git-glob = { version = "^0.3.2", path = "../git-glob" }

Expand Down
30 changes: 30 additions & 0 deletions git-command/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## 0.0.0 (2022-08-25)

Initial release to reserve the name.

### Commit Statistics

<csr-read-only-do-not-edit/>

- 2 commits contributed to the release.
- 0 commits where understood as [conventional](https://www.conventionalcommits.org).
- 1 unique issue was worked on: [#450](https://github.com/Byron/gitoxide/issues/450)

### Commit Details

<csr-read-only-do-not-edit/>

<details><summary>view details</summary>

* **[#450](https://github.com/Byron/gitoxide/issues/450)**
- prepare changelog prior to release ([`579e8f1`](https://github.com/Byron/gitoxide/commit/579e8f138963a057d87837301b097fd804424447))
- first frame of `git-command` crate ([`436632a`](https://github.com/Byron/gitoxide/commit/436632a3822d3671c073cdbbbaf8e569de62bb09))
</details>

14 changes: 14 additions & 0 deletions git-command/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
[package]
name = "git-command"
version = "0.1.0"
repository = "https://github.com/Byron/gitoxide"
license = "MIT/Apache-2.0"
description = "A WIP crate of the gitoxide project handling internal git command execution"
authors = ["Sebastian Thiel <sebastian.thiel@icloud.com>"]
edition = "2018"

[lib]
doctest = false

[dependencies]
git-testtools = { path = "../tests/tools" }
Loading