Skip to content

Commit 5c05198

Browse files
committed
Merge branch 'filter-refs-by-spec'
2 parents 1d4600a + ab81525 commit 5c05198

File tree

160 files changed

+5097
-1433
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

160 files changed

+5097
-1433
lines changed

Cargo.lock

+201-12
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

+3
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,9 @@ members = [
126126
"git-hash",
127127
"git-validate",
128128
"git-ref",
129+
"git-command",
129130
"git-config",
131+
"git-config-value",
130132
"git-discover",
131133
"git-features",
132134
"git-commitgraph",
@@ -144,6 +146,7 @@ members = [
144146
"git-packetline",
145147
"git-mailmap",
146148
"git-note",
149+
"git-prompt",
147150
"git-filter",
148151
"git-sec",
149152
"git-lfs",

Makefile

+4-2
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ clippy: ## Run cargo clippy on all crates
5454
cargo clippy --all --no-default-features --features lean-async --tests
5555

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

5959
check: ## Build all code in suitable configurations
6060
cargo check --all
@@ -107,6 +107,8 @@ check: ## Build all code in suitable configurations
107107
&& cargo check --features cache-efficiency-debug
108108
cd git-commitgraph && cargo check --all-features \
109109
&& cargo check
110+
cd git-config-value && cargo check --all-features \
111+
&& cargo check
110112
cd git-config && cargo check --all-features \
111113
&& cargo check
112114
cd git-transport && cargo check \
@@ -280,7 +282,7 @@ bench-git-config:
280282
check-msrv-on-ci: ## Check the minimal support rust version for currently installed Rust version
281283
rustc --version
282284
cargo check --package git-repository
283-
cargo check --package git-repository --no-default-features --features async-network-client,unstable,max-performance
285+
cargo check --package git-repository --no-default-features --features async-network-client,max-performance
284286

285287
##@ Maintenance
286288

README.md

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

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

110113
### Initial Development
@@ -137,6 +140,8 @@ is usable to some extend.
137140
* [git-pathspec](https://github.com/Byron/gitoxide/blob/main/crate-status.md#git-pathspec)
138141
* [git-index](https://github.com/Byron/gitoxide/blob/main/crate-status.md#git-index)
139142
* [git-revision](https://github.com/Byron/gitoxide/blob/main/crate-status.md#git-revision)
143+
* [git-command](https://github.com/Byron/gitoxide/blob/main/crate-status.md#git-command)
144+
* [git-prompt](https://github.com/Byron/gitoxide/blob/main/crate-status.md#git-prompt)
140145
* `gitoxide-core`
141146
* **very early** _(possibly without any documentation and many rough edges)_
142147
* [git-worktree](https://github.com/Byron/gitoxide/blob/main/crate-status.md#git-worktree)

cargo-smart-release/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ test = false
2424
cache-efficiency-debug = ["git-repository/cache-efficiency-debug"]
2525

2626
[dependencies]
27-
git-repository = { version = "^0.24.0", path = "../git-repository", default-features = false, features = ["unstable", "max-performance-safe"] }
27+
git-repository = { version = "^0.24.0", path = "../git-repository", default-features = false, features = ["max-performance-safe"] }
2828
anyhow = "1.0.42"
2929
clap = { version = "3.2.5", features = ["derive", "cargo"] }
3030
env_logger = { version = "0.9.0", default-features = false, features = ["humantime", "termcolor", "atty"] }

crate-status.md

+44-17
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,9 @@ Check out the [performance discussion][git-traverse-performance] as well.
143143
* [x] convert URL to string
144144
* [x] API documentation
145145
* [ ] Some examples
146-
146+
- **deviation**
147+
* URLs may not contain passwords, which cannot be represent here and if present, will be ignored.
148+
147149
### git-protocol
148150
* _abstract over protocol versions to allow delegates to deal only with a single way of doing things_
149151
* [x] **credentials**
@@ -240,6 +242,18 @@ Check out the [performance discussion][git-traverse-performance] as well.
240242
* [ ] for fetch
241243
* [ ] for push
242244

245+
### git-command
246+
* [x] execute commands directly
247+
* [x] execute commands with `sh`
248+
* [ ] support for `GIT_EXEC_PATH` environment variable with `git-sec` filter
249+
250+
### git-prompt
251+
* [x] open prompts for usernames for example
252+
* [x] secure prompts for password
253+
* [x] use `askpass` program if available
254+
* [ ] signal handling (resetting and restoring terminal settings)
255+
* [ ] windows prompts for `cmd.exe` and mingw terminals
256+
243257
### git-note
244258

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

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

266285
### git-filter
267286

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

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

415+
### git-config-value
416+
* **parse**
417+
* [x] boolean
418+
* [x] integer
419+
* [x] color
420+
* [ ] ANSI code output for terminal colors
421+
* [x] path (incl. resolution)
422+
* [ ] date
423+
* [ ] [permission][https://github.com/git/git/blob/71a8fab31b70c417e8f5b5f716581f89955a7082/setup.c#L1526:L1526]
424+
396425
### git-config
397426
* [x] read
398427
* zero-copy parsing with event emission
399-
* [x] decode value
400-
* [x] boolean
401-
* [x] integer
402-
* [x] color
403-
* [ ] ANSI code output for terminal colors
404-
* [x] path (incl. resolution)
405-
* [ ] date
406-
* [ ] [permission][https://github.com/git/git/blob/71a8fab31b70c417e8f5b5f716581f89955a7082/setup.c#L1526:L1526]
407-
* [x] include
428+
* all config values as per the `git-config-value` crate
408429
* **includeIf**
409430
* [x] `gitdir`, `gitdir/i`, and `onbranch`
410431
* [ ] `hasconfig`
@@ -415,8 +436,8 @@ See its [README.md](https://github.com/Byron/gitoxide/blob/main/git-lock/README.
415436
* keep comments and whitespace, and only change lines that are affected by actual changes, to allow truly non-destructive editing
416437
* [x] cascaded loading of various configuration files into one
417438
* [x] load from environment variables
418-
* [ ] load from well-known sources for global configuration
419-
* [ ] load repository configuration with all known sources
439+
* [x] load from well-known sources for global configuration
440+
* [x] load repository configuration with all known sources
420441
* [x] API documentation
421442
* [x] Some examples
422443

@@ -428,16 +449,20 @@ See its [README.md](https://github.com/Byron/gitoxide/blob/main/git-lock/README.
428449
* [x] discovery
429450
* [x] option to not cross file systems (default)
430451
* [x] handle git-common-dir
431-
* [ ] support for `GIT_CEILING_DIRECTORIES` environment variable
452+
* [x] support for `GIT_CEILING_DIRECTORIES` environment variable
432453
* [ ] handle other non-discovery modes and provide control over environment variable usage required in applications
433454
* [x] rev-parse
434-
- **deviation**
435-
* `@` actually stands for `HEAD`, whereas `git` resolves it to the object pointed to by `HEAD` without making the `HEAD` ref available for lookups.
436455
* [x] rev-walk
437456
* [x] include tips
438457
* [ ] exclude commits
439458
* [x] instantiation
440459
* [x] access to refs and objects
460+
* **credentials**
461+
* [x] run `git credential` directly
462+
* [x] use credential helper configuration and to obtain credentials with `git_credential::helper::Cascade`
463+
* **config**
464+
* [ ] facilities to apply the [url-match](https://git-scm.com/docs/git-config#Documentation/git-config.txt-httplturlgt) algorithm and to
465+
[normalize urls](https://github.com/git/git/blob/be1a02a17ede4082a86dfbfee0f54f345e8b43ac/urlmatch.c#L109:L109) before comparison.
441466
* **traverse**
442467
* [x] commit graphs
443468
* [ ] make [git-notes](https://git-scm.com/docs/git-notes) accessible
@@ -469,8 +494,10 @@ See its [README.md](https://github.com/Byron/gitoxide/blob/main/git-lock/README.
469494
* [ ] shallow
470495
* [ ] fetch
471496
* [ ] push
472-
* [ ] ls-refs
473-
* [ ] list, find by name, create in memory.
497+
* [x] ls-refs
498+
* [ ] ls-refs with ref-spec filter
499+
* [ ] list, find by name
500+
* [x] create in memory
474501
* [ ] groups
475502
* [ ] [remote and branch files](https://github.com/git/git/blob/master/remote.c#L300)
476503
* [ ] execute hooks

deny.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ yanked = "warn"
2222
# 2019-12-17 there are no security notice advisories in
2323
# https://github.com/rustsec/advisory-db
2424
notice = "warn"
25-
ignore = [ ]
25+
ignore = ["RUSTSEC-2021-0119"] # 'nix' comes in via `expectrl`, which is a dev-dependency only. Somewhat unmaintained.
2626

2727

2828

etc/check-package-size.sh

+6-3
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,9 @@ echo "in root: gitoxide CLI"
2929
(enter git-bitmap && indent cargo diet -n --package-size-limit 5KB)
3030
(enter git-tempfile && indent cargo diet -n --package-size-limit 30KB)
3131
(enter git-lock && indent cargo diet -n --package-size-limit 20KB)
32-
(enter git-config && indent cargo diet -n --package-size-limit 115KB)
32+
(enter git-config && indent cargo diet -n --package-size-limit 120KB)
33+
(enter git-config-value && indent cargo diet -n --package-size-limit 20KB)
34+
(enter git-command && indent cargo diet -n --package-size-limit 5KB)
3335
(enter git-hash && indent cargo diet -n --package-size-limit 20KB)
3436
(enter git-chunk && indent cargo diet -n --package-size-limit 10KB)
3537
(enter git-rebase && indent cargo diet -n --package-size-limit 5KB)
@@ -46,13 +48,14 @@ echo "in root: gitoxide CLI"
4648
(enter git-note && indent cargo diet -n --package-size-limit 5KB)
4749
(enter git-sec && indent cargo diet -n --package-size-limit 15KB)
4850
(enter git-tix && indent cargo diet -n --package-size-limit 5KB)
49-
(enter git-credentials && indent cargo diet -n --package-size-limit 10KB)
51+
(enter git-credentials && indent cargo diet -n --package-size-limit 20KB)
52+
(enter git-prompt && indent cargo diet -n --package-size-limit 15KB)
5053
(enter git-object && indent cargo diet -n --package-size-limit 25KB)
5154
(enter git-commitgraph && indent cargo diet -n --package-size-limit 25KB)
5255
(enter git-pack && indent cargo diet -n --package-size-limit 115KB)
5356
(enter git-odb && indent cargo diet -n --package-size-limit 120KB)
5457
(enter git-protocol && indent cargo diet -n --package-size-limit 50KB)
5558
(enter git-packetline && indent cargo diet -n --package-size-limit 35KB)
56-
(enter git-repository && indent cargo diet -n --package-size-limit 160KB)
59+
(enter git-repository && indent cargo diet -n --package-size-limit 175KB)
5760
(enter git-transport && indent cargo diet -n --package-size-limit 55KB)
5861
(enter gitoxide-core && indent cargo diet -n --package-size-limit 80KB)

experiments/diffing/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ publish = false
99

1010
[dependencies]
1111
anyhow = "1"
12-
git-repository = { version = "^0.24.0", path = "../../git-repository", features = ["unstable"] }
12+
git-repository = { version = "^0.24.0", path = "../../git-repository" }
1313
git-features-for-config = { package = "git-features", version = "^0.22.4", path = "../../git-features", features = ["cache-efficiency-debug"] }
1414
git2 = "0.14"
1515
rayon = "1.5.0"

experiments/object-access/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ publish = false
1111

1212
[dependencies]
1313
anyhow = "1"
14-
git-repository = { path = "../../git-repository", version = "^0.24.0", features = ["unstable"] }
14+
git-repository = { path = "../../git-repository", version = "^0.24.0" }
1515
git2 = "0.14"
1616
rayon = "1.5.0"
1717
parking_lot = { version = "0.12.0", default-features = false }

experiments/traversal/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ publish = false
99

1010
[dependencies]
1111
anyhow = "1"
12-
git-repository = { version = "^0.24.0", path = "../../git-repository", features = ["unstable"] }
12+
git-repository = { version = "^0.24.0", path = "../../git-repository" }
1313
git2 = "0.14"
1414
rayon = "1.5.0"
1515
dashmap = "5.1.0"

git-attributes/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ serde1 = ["serde", "bstr/serde1", "git-glob/serde1", "compact_str/serde"]
1717

1818
[dependencies]
1919
git-features = { version = "^0.22.4", path = "../git-features" }
20-
git-path = { version = "^0.4.1", path = "../git-path" }
20+
git-path = { version = "^0.4.2", path = "../git-path" }
2121
git-quote = { version = "^0.2.1", path = "../git-quote" }
2222
git-glob = { version = "^0.3.2", path = "../git-glob" }
2323

git-command/CHANGELOG.md

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# Changelog
2+
3+
All notable changes to this project will be documented in this file.
4+
5+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7+
8+
## 0.0.0 (2022-08-25)
9+
10+
Initial release to reserve the name.
11+
12+
### Commit Statistics
13+
14+
<csr-read-only-do-not-edit/>
15+
16+
- 2 commits contributed to the release.
17+
- 0 commits where understood as [conventional](https://www.conventionalcommits.org).
18+
- 1 unique issue was worked on: [#450](https://github.com/Byron/gitoxide/issues/450)
19+
20+
### Commit Details
21+
22+
<csr-read-only-do-not-edit/>
23+
24+
<details><summary>view details</summary>
25+
26+
* **[#450](https://github.com/Byron/gitoxide/issues/450)**
27+
- prepare changelog prior to release ([`579e8f1`](https://github.com/Byron/gitoxide/commit/579e8f138963a057d87837301b097fd804424447))
28+
- first frame of `git-command` crate ([`436632a`](https://github.com/Byron/gitoxide/commit/436632a3822d3671c073cdbbbaf8e569de62bb09))
29+
</details>
30+

git-command/Cargo.toml

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
[package]
2+
name = "git-command"
3+
version = "0.1.0"
4+
repository = "https://github.com/Byron/gitoxide"
5+
license = "MIT/Apache-2.0"
6+
description = "A WIP crate of the gitoxide project handling internal git command execution"
7+
authors = ["Sebastian Thiel <[email protected]>"]
8+
edition = "2018"
9+
10+
[lib]
11+
doctest = false
12+
13+
[dependencies]
14+
git-testtools = { path = "../tests/tools" }

0 commit comments

Comments
 (0)