diff --git a/CHANGELOG.md b/CHANGELOG.md
index 29e62e74528..f501341ebb7 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,40 @@ 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.19.0 (2022-11-21)
+
+### New Features
+
+ - Make `reqwest` TLS backend configuration easy.
+ We provide the choice of `native-tls` or `rust-tls`. If none is
+ provided, the user can configure on their on similar to how it's done
+ in `git-repository`.
+
+ Please note that a choice now has to be made or HTTPS will not be
+ available, so use one of…
+
+ * blocking-http-transport-reqwest-rust-tls
+* blocking-http-transport-reqwest-native-tls
+
+### Commit Statistics
+
+
+
+ - 1 commit contributed to the release.
+ - 4 days passed between releases.
+ - 1 commit was understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+
+
+view details
+
+ * **Uncategorized**
+ - Make `reqwest` TLS backend configuration easy. ([`3ddbd2d`](https://github.com/Byron/gitoxide/commit/3ddbd2de369b521fa3f21935f10fe9c248840893))
+
+
## 0.18.0 (2022-11-17)
This releases fixes `gix fetch` so that it is able to clone or fetch `pytorch` or other repositories on case-insensitive file systems.
diff --git a/Cargo.lock b/Cargo.lock
index c2c9c208c1a..2bf37ad6d69 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -841,6 +841,12 @@ dependencies = [
"parking_lot_core 0.9.4",
]
+[[package]]
+name = "data-encoding"
+version = "2.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3ee2393c4a91429dffb4bedf19f4d6abf27d8a732c8ce4980305d782e5426d57"
+
[[package]]
name = "defer"
version = "0.1.0"
@@ -930,6 +936,18 @@ dependencies = [
"cfg-if",
]
+[[package]]
+name = "enum-as-inner"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c9720bba047d567ffc8a3cba48bf19126600e249ab7f128e9233e6376976a116"
+dependencies = [
+ "heck",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
[[package]]
name = "env_logger"
version = "0.9.1"
@@ -1161,7 +1179,7 @@ dependencies = [
[[package]]
name = "git-actor"
-version = "0.13.0"
+version = "0.14.0"
dependencies = [
"bstr",
"btoi",
@@ -1172,13 +1190,13 @@ dependencies = [
"itoa",
"nom",
"pretty_assertions",
- "quick-error",
+ "quick-error 2.0.1",
"serde",
]
[[package]]
name = "git-attributes"
-version = "0.5.0"
+version = "0.6.0"
dependencies = [
"bstr",
"compact_str",
@@ -1195,22 +1213,22 @@ dependencies = [
[[package]]
name = "git-bitmap"
-version = "0.1.2"
+version = "0.2.0"
dependencies = [
"git-testtools",
- "quick-error",
+ "quick-error 2.0.1",
]
[[package]]
name = "git-chunk"
-version = "0.3.2"
+version = "0.4.0"
dependencies = [
"thiserror",
]
[[package]]
name = "git-command"
-version = "0.1.0"
+version = "0.2.0"
dependencies = [
"bstr",
"git-testtools",
@@ -1218,7 +1236,7 @@ dependencies = [
[[package]]
name = "git-commitgraph"
-version = "0.10.0"
+version = "0.11.0"
dependencies = [
"bstr",
"document-features",
@@ -1233,7 +1251,7 @@ dependencies = [
[[package]]
name = "git-config"
-version = "0.11.0"
+version = "0.12.0"
dependencies = [
"bstr",
"criterion",
@@ -1260,7 +1278,7 @@ dependencies = [
[[package]]
name = "git-config-value"
-version = "0.8.2"
+version = "0.9.0"
dependencies = [
"bitflags",
"bstr",
@@ -1284,7 +1302,7 @@ dependencies = [
[[package]]
name = "git-credentials"
-version = "0.6.1"
+version = "0.7.0"
dependencies = [
"bstr",
"document-features",
@@ -1301,7 +1319,7 @@ dependencies = [
[[package]]
name = "git-date"
-version = "0.2.0"
+version = "0.3.0"
dependencies = [
"bstr",
"document-features",
@@ -1315,7 +1333,7 @@ dependencies = [
[[package]]
name = "git-diff"
-version = "0.22.0"
+version = "0.23.0"
dependencies = [
"git-hash",
"git-object",
@@ -1329,7 +1347,7 @@ dependencies = [
[[package]]
name = "git-discover"
-version = "0.8.0"
+version = "0.9.0"
dependencies = [
"bstr",
"defer",
@@ -1339,13 +1357,14 @@ dependencies = [
"git-sec",
"git-testtools",
"is_ci",
+ "serial_test",
"tempfile",
"thiserror",
]
[[package]]
name = "git-features"
-version = "0.23.1"
+version = "0.24.0"
dependencies = [
"bstr",
"bytes",
@@ -1361,7 +1380,7 @@ dependencies = [
"once_cell",
"parking_lot 0.12.1",
"prodash",
- "quick-error",
+ "quick-error 2.0.1",
"sha1",
"sha1_smol",
"walkdir",
@@ -1377,7 +1396,7 @@ version = "0.0.0"
[[package]]
name = "git-glob"
-version = "0.4.2"
+version = "0.5.0"
dependencies = [
"bitflags",
"bstr",
@@ -1388,7 +1407,7 @@ dependencies = [
[[package]]
name = "git-hash"
-version = "0.9.11"
+version = "0.10.0"
dependencies = [
"document-features",
"git-testtools",
@@ -1399,7 +1418,7 @@ dependencies = [
[[package]]
name = "git-index"
-version = "0.8.0"
+version = "0.9.0"
dependencies = [
"atoi",
"bitflags",
@@ -1427,23 +1446,23 @@ version = "0.0.0"
[[package]]
name = "git-lock"
-version = "2.2.0"
+version = "3.0.0"
dependencies = [
"fastrand",
"git-tempfile",
- "quick-error",
+ "quick-error 2.0.1",
"tempfile",
]
[[package]]
name = "git-mailmap"
-version = "0.5.0"
+version = "0.6.0"
dependencies = [
"bstr",
"document-features",
"git-actor",
"git-testtools",
- "quick-error",
+ "quick-error 2.0.1",
"serde",
]
@@ -1453,7 +1472,7 @@ version = "0.0.0"
[[package]]
name = "git-object"
-version = "0.22.1"
+version = "0.23.0"
dependencies = [
"bstr",
"btoi",
@@ -1474,7 +1493,7 @@ dependencies = [
[[package]]
name = "git-odb"
-version = "0.36.0"
+version = "0.37.0"
dependencies = [
"arc-swap",
"crossbeam-channel",
@@ -1499,7 +1518,7 @@ dependencies = [
[[package]]
name = "git-pack"
-version = "0.26.0"
+version = "0.27.0"
dependencies = [
"bstr",
"bytesize",
@@ -1529,7 +1548,7 @@ dependencies = [
[[package]]
name = "git-packetline"
-version = "0.13.1"
+version = "0.14.0"
dependencies = [
"async-std",
"bstr",
@@ -1547,7 +1566,7 @@ dependencies = [
[[package]]
name = "git-path"
-version = "0.5.0"
+version = "0.6.0"
dependencies = [
"bstr",
"tempfile",
@@ -1569,7 +1588,7 @@ dependencies = [
[[package]]
name = "git-prompt"
-version = "0.1.1"
+version = "0.2.0"
dependencies = [
"expectrl",
"git-command",
@@ -1583,7 +1602,7 @@ dependencies = [
[[package]]
name = "git-protocol"
-version = "0.23.0"
+version = "0.24.0"
dependencies = [
"async-std",
"async-trait",
@@ -1606,11 +1625,11 @@ dependencies = [
[[package]]
name = "git-quote"
-version = "0.3.0"
+version = "0.4.0"
dependencies = [
"bstr",
"btoi",
- "quick-error",
+ "quick-error 2.0.1",
]
[[package]]
@@ -1619,7 +1638,7 @@ version = "0.0.0"
[[package]]
name = "git-ref"
-version = "0.19.0"
+version = "0.20.0"
dependencies = [
"document-features",
"git-actor",
@@ -1643,7 +1662,7 @@ dependencies = [
[[package]]
name = "git-refspec"
-version = "0.3.1"
+version = "0.4.0"
dependencies = [
"bstr",
"git-hash",
@@ -1656,7 +1675,7 @@ dependencies = [
[[package]]
name = "git-repository"
-version = "0.28.0"
+version = "0.29.0"
dependencies = [
"anyhow",
"async-std",
@@ -1697,6 +1716,7 @@ dependencies = [
"log",
"once_cell",
"regex",
+ "reqwest",
"serde",
"serial_test",
"signal-hook",
@@ -1708,7 +1728,7 @@ dependencies = [
[[package]]
name = "git-revision"
-version = "0.6.0"
+version = "0.7.0"
dependencies = [
"bstr",
"document-features",
@@ -1724,7 +1744,7 @@ dependencies = [
[[package]]
name = "git-sec"
-version = "0.4.2"
+version = "0.5.0"
dependencies = [
"bitflags",
"dirs",
@@ -1746,7 +1766,7 @@ version = "0.0.0"
[[package]]
name = "git-tempfile"
-version = "2.0.6"
+version = "3.0.0"
dependencies = [
"dashmap",
"libc",
@@ -1785,7 +1805,7 @@ version = "0.0.0"
[[package]]
name = "git-transport"
-version = "0.22.0"
+version = "0.23.0"
dependencies = [
"async-std",
"async-trait",
@@ -1812,7 +1832,7 @@ dependencies = [
[[package]]
name = "git-traverse"
-version = "0.18.0"
+version = "0.19.0"
dependencies = [
"git-hash",
"git-object",
@@ -1828,7 +1848,7 @@ version = "0.0.0"
[[package]]
name = "git-url"
-version = "0.10.1"
+version = "0.11.0"
dependencies = [
"bstr",
"document-features",
@@ -1842,7 +1862,7 @@ dependencies = [
[[package]]
name = "git-validate"
-version = "0.6.0"
+version = "0.7.0"
dependencies = [
"bstr",
"git-testtools",
@@ -1851,7 +1871,7 @@ dependencies = [
[[package]]
name = "git-worktree"
-version = "0.8.0"
+version = "0.9.0"
dependencies = [
"bstr",
"document-features",
@@ -1889,7 +1909,7 @@ dependencies = [
[[package]]
name = "gitoxide"
-version = "0.18.0"
+version = "0.19.0"
dependencies = [
"anyhow",
"atty",
@@ -1908,7 +1928,7 @@ dependencies = [
[[package]]
name = "gitoxide-core"
-version = "0.20.0"
+version = "0.21.0"
dependencies = [
"anyhow",
"async-io",
@@ -2018,6 +2038,17 @@ dependencies = [
"winapi",
]
+[[package]]
+name = "hostname"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867"
+dependencies = [
+ "libc",
+ "match_cfg",
+ "winapi",
+]
+
[[package]]
name = "http"
version = "0.2.8"
@@ -2088,6 +2119,19 @@ dependencies = [
"want",
]
+[[package]]
+name = "hyper-rustls"
+version = "0.23.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "59df7c4e19c950e6e0e868dcc0a300b09a9b88e9ec55bd879ca819087a77355d"
+dependencies = [
+ "http",
+ "hyper",
+ "rustls",
+ "tokio",
+ "tokio-rustls",
+]
+
[[package]]
name = "hyper-tls"
version = "0.5.0"
@@ -2101,6 +2145,17 @@ dependencies = [
"tokio-native-tls",
]
+[[package]]
+name = "idna"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8"
+dependencies = [
+ "matches",
+ "unicode-bidi",
+ "unicode-normalization",
+]
+
[[package]]
name = "idna"
version = "0.3.0"
@@ -2163,6 +2218,18 @@ dependencies = [
"winapi",
]
+[[package]]
+name = "ipconfig"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bd302af1b90f2463a98fa5ad469fc212c8e3175a41c3068601bfa2727591c5be"
+dependencies = [
+ "socket2",
+ "widestring",
+ "winapi",
+ "winreg",
+]
+
[[package]]
name = "ipnet"
version = "2.5.0"
@@ -2322,6 +2389,15 @@ dependencies = [
"value-bag",
]
+[[package]]
+name = "lru-cache"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c"
+dependencies = [
+ "linked-hash-map",
+]
+
[[package]]
name = "lzma-sys"
version = "0.1.20"
@@ -2339,6 +2415,18 @@ version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d"
+[[package]]
+name = "match_cfg"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4"
+
+[[package]]
+name = "matches"
+version = "0.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f"
+
[[package]]
name = "maybe-async"
version = "0.2.6"
@@ -2741,6 +2829,12 @@ dependencies = [
"winapi",
]
+[[package]]
+name = "ppv-lite86"
+version = "0.2.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
+
[[package]]
name = "pretty_assertions"
version = "1.3.0"
@@ -2832,6 +2926,12 @@ dependencies = [
"unicase",
]
+[[package]]
+name = "quick-error"
+version = "1.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0"
+
[[package]]
name = "quick-error"
version = "2.0.1"
@@ -2847,6 +2947,36 @@ dependencies = [
"proc-macro2",
]
+[[package]]
+name = "rand"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
+dependencies = [
+ "libc",
+ "rand_chacha",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
+dependencies = [
+ "ppv-lite86",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+dependencies = [
+ "getrandom",
+]
+
[[package]]
name = "rayon"
version = "1.5.3"
@@ -2925,9 +3055,9 @@ dependencies = [
[[package]]
name = "reqwest"
-version = "0.11.12"
+version = "0.11.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "431949c384f4e2ae07605ccaa56d1d9d2ecdb5cadd4f9577ccfab29f2e5149fc"
+checksum = "68cc60575865c7831548863cc02356512e3f1dc2f3f82cb837d7fc4cc8f3c97c"
dependencies = [
"base64",
"bytes",
@@ -2938,6 +3068,7 @@ dependencies = [
"http",
"http-body",
"hyper",
+ "hyper-rustls",
"hyper-tls",
"ipnet",
"js-sys",
@@ -2947,25 +3078,76 @@ dependencies = [
"once_cell",
"percent-encoding",
"pin-project-lite",
+ "rustls",
+ "rustls-pemfile",
"serde",
"serde_json",
"serde_urlencoded",
"tokio",
"tokio-native-tls",
+ "tokio-rustls",
"tower-service",
+ "trust-dns-resolver",
"url",
"wasm-bindgen",
"wasm-bindgen-futures",
"web-sys",
+ "webpki-roots",
"winreg",
]
+[[package]]
+name = "resolv-conf"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "52e44394d2086d010551b14b53b1f24e31647570cd1deb0379e2c21b329aba00"
+dependencies = [
+ "hostname",
+ "quick-error 1.2.3",
+]
+
+[[package]]
+name = "ring"
+version = "0.16.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc"
+dependencies = [
+ "cc",
+ "libc",
+ "once_cell",
+ "spin",
+ "untrusted",
+ "web-sys",
+ "winapi",
+]
+
[[package]]
name = "rustc-hash"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
+[[package]]
+name = "rustls"
+version = "0.20.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "539a2bfe908f471bfa933876bd1eb6a19cf2176d375f82ef7f99530a40e48c2c"
+dependencies = [
+ "log",
+ "ring",
+ "sct",
+ "webpki",
+]
+
+[[package]]
+name = "rustls-pemfile"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0864aeff53f8c05aa08d86e5ef839d3dfcf07aeba2db32f12db0ef716e87bd55"
+dependencies = [
+ "base64",
+]
+
[[package]]
name = "rustversion"
version = "1.0.9"
@@ -3003,6 +3185,16 @@ version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
+[[package]]
+name = "sct"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4"
+dependencies = [
+ "ring",
+ "untrusted",
+]
+
[[package]]
name = "security-framework"
version = "2.7.0"
@@ -3207,6 +3399,12 @@ dependencies = [
"winapi",
]
+[[package]]
+name = "spin"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d"
+
[[package]]
name = "static_assertions"
version = "1.1.0"
@@ -3396,6 +3594,17 @@ dependencies = [
"tokio",
]
+[[package]]
+name = "tokio-rustls"
+version = "0.23.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59"
+dependencies = [
+ "rustls",
+ "tokio",
+ "webpki",
+]
+
[[package]]
name = "tokio-util"
version = "0.7.4"
@@ -3444,9 +3653,21 @@ checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8"
dependencies = [
"cfg-if",
"pin-project-lite",
+ "tracing-attributes",
"tracing-core",
]
+[[package]]
+name = "tracing-attributes"
+version = "0.1.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
[[package]]
name = "tracing-core"
version = "0.1.30"
@@ -3467,6 +3688,51 @@ dependencies = [
"rayon",
]
+[[package]]
+name = "trust-dns-proto"
+version = "0.22.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4f7f83d1e4a0e4358ac54c5c3681e5d7da5efc5a7a632c90bb6d6669ddd9bc26"
+dependencies = [
+ "async-trait",
+ "cfg-if",
+ "data-encoding",
+ "enum-as-inner",
+ "futures-channel",
+ "futures-io",
+ "futures-util",
+ "idna 0.2.3",
+ "ipnet",
+ "lazy_static",
+ "rand",
+ "smallvec",
+ "thiserror",
+ "tinyvec",
+ "tokio",
+ "tracing",
+ "url",
+]
+
+[[package]]
+name = "trust-dns-resolver"
+version = "0.22.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aff21aa4dcefb0a1afbfac26deb0adc93888c7d295fb63ab273ef276ba2b7cfe"
+dependencies = [
+ "cfg-if",
+ "futures-util",
+ "ipconfig",
+ "lazy_static",
+ "lru-cache",
+ "parking_lot 0.12.1",
+ "resolv-conf",
+ "smallvec",
+ "thiserror",
+ "tokio",
+ "tracing",
+ "trust-dns-proto",
+]
+
[[package]]
name = "try-lock"
version = "0.2.3"
@@ -3561,6 +3827,12 @@ version = "0.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b"
+[[package]]
+name = "untrusted"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a"
+
[[package]]
name = "url"
version = "2.3.1"
@@ -3568,7 +3840,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643"
dependencies = [
"form_urlencoded",
- "idna",
+ "idna 0.3.0",
"percent-encoding",
]
@@ -3709,6 +3981,25 @@ dependencies = [
"wasm-bindgen",
]
+[[package]]
+name = "webpki"
+version = "0.22.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd"
+dependencies = [
+ "ring",
+ "untrusted",
+]
+
+[[package]]
+name = "webpki-roots"
+version = "0.22.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "368bfe657969fb01238bb756d351dcade285e0f6fcbd36dcb23359a5169975be"
+dependencies = [
+ "webpki",
+]
+
[[package]]
name = "wepoll-ffi"
version = "0.1.2"
@@ -3718,6 +4009,12 @@ dependencies = [
"cc",
]
+[[package]]
+name = "widestring"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "17882f045410753661207383517a6f62ec3dbeb6a4ed2acce01f0728238d1983"
+
[[package]]
name = "winapi"
version = "0.3.9"
diff --git a/Cargo.toml b/Cargo.toml
index 2cd0213af55..27775a7b0fd 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -3,9 +3,9 @@ name = "gitoxide"
description = "A command-line application for interacting with git repositories"
repository = "https://github.com/Byron/gitoxide"
authors = ["Sebastian Thiel "]
-edition = "2018"
+edition = "2021"
license = "MIT OR Apache-2.0"
-version = "0.18.0"
+version = "0.19.0"
default-run = "gix"
include = ["src/**/*", "LICENSE-*", "README.md", "CHANGELOG.md"]
resolver = "2"
@@ -57,7 +57,7 @@ lean-async = ["fast", "pretty-cli", "gitoxide-core-tools", "gitoxide-core-async-
small = ["pretty-cli", "git-features/rustsha1", "git-features/zlib-rust-backend", "prodash-render-line", "atty" ]
## Makes the crate execute as fast as possible without pulling in C libraries, while keeping everything else minimal akin to the `small` build.
-max-pure = ["pretty-cli", "git-features/rustsha1", "git-features/zlib-rust-backend", "prodash-render-line", "prodash-render-tui", "git-repository/max-performance-safe", "http-client-curl", "gitoxide-core-blocking-client", "gitoxide-core-tools", "prodash/render-line-autoconfigure" ]
+max-pure = ["pretty-cli", "git-features/rustsha1", "git-features/zlib-rust-backend", "prodash-render-line", "prodash-render-tui", "git-repository/max-performance-safe", "http-client-reqwest", "gitoxide-core-blocking-client", "gitoxide-core-tools", "prodash/render-line-autoconfigure" ]
#! ### `gitoxide-core` Configuration
@@ -69,8 +69,10 @@ gitoxide-core-tools = ["gitoxide-core/organize", "gitoxide-core/estimate-hours"]
## Use blocking client networking.
gitoxide-core-blocking-client = ["gitoxide-core/blocking-client"]
-## Support synchronous 'http' and 'https' transports (e.g. for clone, fetch and push) at the expense of compile times and binary size.
-http-client-curl = ["git-repository/blocking-http-transport"]
+## Support synchronous 'http' and 'https' transports (e.g. for clone, fetch and push) using **curl**.
+http-client-curl = ["git-repository/blocking-http-transport-curl"]
+## Support synchronous 'http' and 'https' transports (e.g. for clone, fetch and push) using **reqwest**.
+http-client-reqwest = ["git-repository/blocking-http-transport-reqwest-rust-tls"]
## Use async client networking.
gitoxide-core-async-client = ["gitoxide-core/async-client", "futures-lite"]
@@ -82,9 +84,9 @@ cache-efficiency-debug = ["git-features/cache-efficiency-debug"]
[dependencies]
anyhow = "1.0.42"
-gitoxide-core = { version = "^0.20.0", path = "gitoxide-core" }
-git-features = { version = "^0.23.1", path = "git-features" }
-git-repository = { version = "^0.28.0", path = "git-repository", default-features = false }
+gitoxide-core = { version = "^0.21.0", path = "gitoxide-core" }
+git-features = { version = "^0.24.0", path = "git-features" }
+git-repository = { version = "^0.29.0", path = "git-repository", default-features = false }
clap = { version = "3.2.5", features = ["derive", "cargo"] }
prodash = { version = "21", optional = true, default-features = false }
diff --git a/Makefile b/Makefile
index 526e057ee72..9ca4a6b2e14 100644
--- a/Makefile
+++ b/Makefile
@@ -127,7 +127,8 @@ check: ## Build all code in suitable configurations
cd git-repository && cargo check --no-default-features --features async-network-client \
&& cargo check --no-default-features --features async-network-client-async-std \
&& cargo check --no-default-features --features blocking-network-client \
- && cargo check --no-default-features --features blocking-network-client,blocking-http-transport \
+ && cargo check --no-default-features --features blocking-http-transport-curl \
+ && cargo check --no-default-features --features blocking-http-transport-reqwest \
&& cargo check --no-default-features --features max-performance \
&& cargo check --no-default-features --features max-performance-safe \
&& cargo check --no-default-features
@@ -178,7 +179,7 @@ journey-tests: always ## run journey tests (max)
./tests/journey.sh target/debug/ein target/debug/gix $(jtt) max
journey-tests-pure: always ## run journey tests (max-pure)
- cargo build
+ cargo build --no-default-features --features max-pure
cargo build --package git-testtools --bin jtt
./tests/journey.sh target/debug/ein target/debug/gix $(jtt) max-pure
diff --git a/README.md b/README.md
index 3bc94ed27b7..ef97fd31c4e 100644
--- a/README.md
+++ b/README.md
@@ -291,6 +291,9 @@ Project non-goals can change over time as we learn more, and they can be challen
If what you have seen so far sparked your interest to contribute, then let us say: We are happy to have you and help you to get started.
+> ❗️Note❗️: For cloning, `git-lfs` needs to be locally installed or the checkout will fail. `git lfs install` must have been called once, followed
+ by `git lfs pull` to replace the `lfs`-pointer files.
+
We recommend running `make tests check-size` during the development process to assure CI is green before pushing.
A backlog for work ready to be picked up is [available in the Project's Kanban board][project-board], which contains instructions on how
@@ -306,7 +309,7 @@ For additional details, also take a look at the [collaboration guide].
### Getting started with Video Tutorials
- [Learning Rust with Gitoxide](https://youtube.com/playlist?list=PLMHbQxe1e9Mk5kOHrm9v20-umkE2ck_gE)
- - In 17 episodes you can learn all you need to meaningfully contirbute to `gitoxide`.
+ - In 17 episodes you can learn all you need to meaningfully contribute to `gitoxide`.
- [Getting into Gitoxide](https://youtube.com/playlist?list=PLMHbQxe1e9MkEmuj9csczEK1O06l0Npy5)
- Get an introduction to `gitoxide` itself which should be a good foundation for any contribution, but isn't a requirement for contributions either.
- [Gifting Gitoxide](https://www.youtube.com/playlist?list=PLMHbQxe1e9MlhyyZQXPi_dc-bKudE-WUw)
diff --git a/cargo-smart-release/Cargo.toml b/cargo-smart-release/Cargo.toml
index 92fea69a2b3..90fbac3ae73 100644
--- a/cargo-smart-release/Cargo.toml
+++ b/cargo-smart-release/Cargo.toml
@@ -5,7 +5,7 @@ authors = ["Sebastian Thiel "]
repository = "https://github.com/Byron/gitoxide"
description = "Cargo subcommand for fearlessly releasing crates in workspaces."
license = "MIT OR Apache-2.0"
-edition = "2018"
+edition = "2021"
categories = ["development-tools::cargo-plugins"]
keywords = ["cargo"]
include = ["src/**/*", "README.md", "CHANGELOG.md"]
@@ -24,7 +24,7 @@ test = false
cache-efficiency-debug = ["git-repository/cache-efficiency-debug"]
[dependencies]
-git-repository = { version = "^0.28.0", path = "../git-repository", default-features = false, features = ["max-performance-safe"] }
+git-repository = { version = "^0.29.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"] }
diff --git a/cargo-smart-release/tests/journey.sh b/cargo-smart-release/tests/journey.sh
index 26806e21c62..98c334c76cb 100755
--- a/cargo-smart-release/tests/journey.sh
+++ b/cargo-smart-release/tests/journey.sh
@@ -28,6 +28,7 @@ function set-static-git-environment() {
function init-git-repo() {
git init . &&
git config commit.gpgsign false &&
+ git config tag.gpgsign false &&
git add . && git commit -q -m "initial"
}
diff --git a/deny.toml b/deny.toml
index c6ddf8ae758..f3f0e616ca7 100644
--- a/deny.toml
+++ b/deny.toml
@@ -41,6 +41,7 @@ allow = [
"MIT",
"ISC",
"Unicode-DFS-2016",
+ "LicenseRef-ring"
]
# Lint level for licenses considered copyleft
copyleft = "allow"
@@ -61,3 +62,12 @@ confidence-threshold = 0.8
[bans]
# Lint level for when multiple versions of the same crate are detected
multiple-versions = "allow"
+
+
+[[licenses.clarify]]
+name = "ring"
+expression = "LicenseRef-ring"
+license-files = [
+ { path = "LICENSE", hash = 0xbd0eed23 },
+]
+
diff --git a/experiments/diffing/Cargo.toml b/experiments/diffing/Cargo.toml
index 2fe53bc7d54..265216b6fa9 100644
--- a/experiments/diffing/Cargo.toml
+++ b/experiments/diffing/Cargo.toml
@@ -2,14 +2,14 @@
name = "diffing"
version = "0.1.0"
authors = ["Sebastian Thiel "]
-edition = "2018"
+edition = "2021"
publish = false
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
anyhow = "1"
-git-repository = { version = "^0.28.0", path = "../../git-repository" }
-git-features-for-config = { package = "git-features", version = "^0.23.1", path = "../../git-features", features = ["cache-efficiency-debug"] }
+git-repository = { version = "^0.29.0", path = "../../git-repository" }
+git-features-for-config = { package = "git-features", version = "^0.24.0", path = "../../git-features", features = ["cache-efficiency-debug"] }
git2 = "0.14"
rayon = "1.5.0"
diff --git a/experiments/object-access/Cargo.toml b/experiments/object-access/Cargo.toml
index 51e9f6e42ca..69fce9a8258 100644
--- a/experiments/object-access/Cargo.toml
+++ b/experiments/object-access/Cargo.toml
@@ -2,7 +2,7 @@
name = "object-access"
version = "0.1.0"
authors = ["Sebastian Thiel "]
-edition = "2018"
+edition = "2021"
publish = false
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
@@ -11,7 +11,7 @@ publish = false
[dependencies]
anyhow = "1"
-git-repository = { path = "../../git-repository", version = "^0.28.0" }
+git-repository = { path = "../../git-repository", version = "^0.29.0" }
git2 = "0.14"
rayon = "1.5.0"
parking_lot = { version = "0.12.0", default-features = false }
diff --git a/experiments/traversal/Cargo.toml b/experiments/traversal/Cargo.toml
index fd136b66f5f..973dd4a9a36 100644
--- a/experiments/traversal/Cargo.toml
+++ b/experiments/traversal/Cargo.toml
@@ -2,14 +2,14 @@
name = "traversal"
version = "0.1.0"
authors = ["Sebastian Thiel "]
-edition = "2018"
+edition = "2021"
publish = false
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
anyhow = "1"
-git-repository = { version = "^0.28.0", path = "../../git-repository" }
+git-repository = { version = "^0.29.0", path = "../../git-repository" }
git2 = "0.14"
rayon = "1.5.0"
dashmap = "5.1.0"
diff --git a/git-actor/CHANGELOG.md b/git-actor/CHANGELOG.md
index 9dca4d9489e..4594de523f5 100644
--- a/git-actor/CHANGELOG.md
+++ b/git-actor/CHANGELOG.md
@@ -5,6 +5,42 @@ 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.14.0 (2022-11-21)
+
+### New Features (BREAKING)
+
+ - upgrade edition to 2021 in most crates.
+ MSRV for this is 1.56, and we are now at 1.60 so should be compatible.
+ This isn't more than a patch release as it should break nobody
+ who is adhering to the MSRV, but let's be careful and mark it
+ breaking.
+
+ Note that `git-features` and `git-pack` are still on edition 2018
+ as they make use of a workaround to support (safe) mutable access
+ to non-overlapping entries in a slice which doesn't work anymore
+ in edition 2021.
+
+### Commit Statistics
+
+
+
+ - 3 commits contributed to the release over the course of 2 calendar days.
+ - 42 days passed between releases.
+ - 1 commit was understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+
+
+view details
+
+ * **Uncategorized**
+ - prepare changelogs prior to release ([`e4648f8`](https://github.com/Byron/gitoxide/commit/e4648f827c97e9d13636d1bbdc83dd63436e6e5c))
+ - Merge branch 'version2021' ([`0e4462d`](https://github.com/Byron/gitoxide/commit/0e4462df7a5166fe85c23a779462cdca8ee013e8))
+ - upgrade edition to 2021 in most crates. ([`3d8fa8f`](https://github.com/Byron/gitoxide/commit/3d8fa8fef9800b1576beab8a5bc39b821157a5ed))
+
+
## 0.13.0 (2022-10-10)
Maintenance release without user-facing changes.
@@ -13,10 +49,10 @@ Maintenance release without user-facing changes.
- - 3 commits contributed to the release over the course of 20 calendar days.
+ - 4 commits contributed to the release over the course of 20 calendar days.
- 20 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- - 0 issues like '(#ID)' where seen in commit messages
+ - 0 issues like '(#ID)' were seen in commit messages
### Commit Details
@@ -25,6 +61,7 @@ Maintenance release without user-facing changes.
view details
* **Uncategorized**
+ - Release git-hash v0.9.11, git-features v0.23.0, git-actor v0.13.0, git-attributes v0.5.0, git-object v0.22.0, git-ref v0.17.0, git-sec v0.4.1, git-config v0.9.0, git-url v0.10.0, git-credentials v0.6.0, git-diff v0.20.0, git-discover v0.6.0, git-traverse v0.18.0, git-index v0.6.0, git-mailmap v0.5.0, git-pack v0.24.0, git-odb v0.34.0, git-packetline v0.13.1, git-transport v0.21.0, git-protocol v0.21.0, git-revision v0.6.0, git-refspec v0.3.0, git-worktree v0.6.0, git-repository v0.25.0, safety bump 24 crates ([`104d922`](https://github.com/Byron/gitoxide/commit/104d922add61ab21c534c24ce8ed37cddf3e275a))
- prepare changelogs for release ([`d232567`](https://github.com/Byron/gitoxide/commit/d23256701a95284857dc8d1cb37c7c94cada973c))
- Merge branch 'fix-git-features' ([`82fd251`](https://github.com/Byron/gitoxide/commit/82fd251ac80d07bc9da8a4d36e517aa35580d188))
- Merge branch 'diff' ([`25a7726`](https://github.com/Byron/gitoxide/commit/25a7726377fbe400ea3c4927d04e9dec99802b7b))
@@ -76,7 +113,7 @@ A maintenance release without user facing changes.
- 3 commits contributed to the release.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- - 0 issues like '(#ID)' where seen in commit messages
+ - 0 issues like '(#ID)' were seen in commit messages
### Commit Details
@@ -110,7 +147,7 @@ A maintenance release without user facing changes.
- 7 commits contributed to the release over the course of 4 calendar days.
- 4 days passed between releases.
- 3 commits were understood as [conventional](https://www.conventionalcommits.org).
- - 0 issues like '(#ID)' where seen in commit messages
+ - 0 issues like '(#ID)' were seen in commit messages
### Commit Details
@@ -139,7 +176,7 @@ A maintenance release with a dependency update.
- 4 commits contributed to the release.
- 1 day passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- - 0 issues like '(#ID)' where seen in commit messages
+ - 0 issues like '(#ID)' were seen in commit messages
### Commit Details
@@ -382,7 +419,7 @@ A maintenance release thanks to upgraded dependencies.
- 7 commits contributed to the release over the course of 35 calendar days.
- 55 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- - 0 issues like '(#ID)' where seen in commit messages
+ - 0 issues like '(#ID)' were seen in commit messages
### Commit Details
@@ -497,7 +534,7 @@ This release contains no functional changes.
- 3 commits contributed to the release.
- 1 day passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- - 0 issues like '(#ID)' where seen in commit messages
+ - 0 issues like '(#ID)' were seen in commit messages
### Commit Details
@@ -520,7 +557,7 @@ This release contains no functional changes.
- 7 commits contributed to the release over the course of 6 calendar days.
- 10 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- - 0 issues like '(#ID)' where seen in commit messages
+ - 0 issues like '(#ID)' were seen in commit messages
### Commit Details
@@ -547,7 +584,7 @@ This release contains no functional changes.
- 4 commits contributed to the release over the course of 1 calendar day.
- 1 day passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- - 0 issues like '(#ID)' where seen in commit messages
+ - 0 issues like '(#ID)' were seen in commit messages
### Commit Details
@@ -571,7 +608,7 @@ This release contains no functional changes.
- 6 commits contributed to the release over the course of 6 calendar days.
- 8 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- - 0 issues like '(#ID)' where seen in commit messages
+ - 0 issues like '(#ID)' were seen in commit messages
### Commit Details
@@ -597,7 +634,7 @@ This release contains no functional changes.
- 2 commits contributed to the release over the course of 1 calendar day.
- 3 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- - 0 issues like '(#ID)' where seen in commit messages
+ - 0 issues like '(#ID)' were seen in commit messages
### Commit Details
@@ -619,7 +656,7 @@ This release contains no functional changes.
- 2 commits contributed to the release.
- 1 day passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- - 0 issues like '(#ID)' where seen in commit messages
+ - 0 issues like '(#ID)' were seen in commit messages
### Commit Details
@@ -640,7 +677,7 @@ This release contains no functional changes.
- 2 commits contributed to the release.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- - 0 issues like '(#ID)' where seen in commit messages
+ - 0 issues like '(#ID)' were seen in commit messages
### Commit Details
@@ -661,7 +698,7 @@ This release contains no functional changes.
- 2 commits contributed to the release.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- - 0 issues like '(#ID)' where seen in commit messages
+ - 0 issues like '(#ID)' were seen in commit messages
### Commit Details
@@ -683,7 +720,7 @@ This release contains no functional changes.
- 12 commits contributed to the release over the course of 45 calendar days.
- 46 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- - 0 issues like '(#ID)' where seen in commit messages
+ - 0 issues like '(#ID)' were seen in commit messages
### Commit Details
@@ -714,7 +751,7 @@ This release contains no functional changes.
- 2 commits contributed to the release.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- - 0 issues like '(#ID)' where seen in commit messages
+ - 0 issues like '(#ID)' were seen in commit messages
### Commit Details
@@ -735,7 +772,7 @@ This release contains no functional changes.
- 4 commits contributed to the release.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- - 0 issues like '(#ID)' where seen in commit messages
+ - 0 issues like '(#ID)' were seen in commit messages
### Thanks Clippy
diff --git a/git-actor/Cargo.toml b/git-actor/Cargo.toml
index 3c7319d255d..ed38d3d83d6 100644
--- a/git-actor/Cargo.toml
+++ b/git-actor/Cargo.toml
@@ -1,11 +1,11 @@
[package]
name = "git-actor"
-version = "0.13.0"
+version = "0.14.0"
description = "A way to identify git actors"
authors = ["Sebastian Thiel "]
repository = "https://github.com/Byron/gitoxide"
license = "MIT/Apache-2.0"
-edition = "2018"
+edition = "2021"
include = ["src/**/*"]
[lib]
@@ -16,8 +16,8 @@ doctest = false
serde1 = ["serde", "bstr/serde", "git-date/serde1"]
[dependencies]
-git-features = { version = "^0.23.0", path = "../git-features", optional = true }
-git-date = { version = "^0.2.0", path = "../git-date" }
+git-features = { version = "^0.24.0", path = "../git-features", optional = true }
+git-date = { version = "^0.3.0", path = "../git-date" }
quick-error = "2.0.0"
btoi = "0.4.2"
diff --git a/git-attributes/CHANGELOG.md b/git-attributes/CHANGELOG.md
index 4e4047c3fec..632f5a44316 100644
--- a/git-attributes/CHANGELOG.md
+++ b/git-attributes/CHANGELOG.md
@@ -5,6 +5,42 @@ 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.6.0 (2022-11-21)
+
+### New Features (BREAKING)
+
+ - upgrade edition to 2021 in most crates.
+ MSRV for this is 1.56, and we are now at 1.60 so should be compatible.
+ This isn't more than a patch release as it should break nobody
+ who is adhering to the MSRV, but let's be careful and mark it
+ breaking.
+
+ Note that `git-features` and `git-pack` are still on edition 2018
+ as they make use of a workaround to support (safe) mutable access
+ to non-overlapping entries in a slice which doesn't work anymore
+ in edition 2021.
+
+### Commit Statistics
+
+
+
+ - 3 commits contributed to the release over the course of 2 calendar days.
+ - 42 days passed between releases.
+ - 1 commit was understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+
+
+view details
+
+ * **Uncategorized**
+ - prepare changelogs prior to release ([`e4648f8`](https://github.com/Byron/gitoxide/commit/e4648f827c97e9d13636d1bbdc83dd63436e6e5c))
+ - Merge branch 'version2021' ([`0e4462d`](https://github.com/Byron/gitoxide/commit/0e4462df7a5166fe85c23a779462cdca8ee013e8))
+ - upgrade edition to 2021 in most crates. ([`3d8fa8f`](https://github.com/Byron/gitoxide/commit/3d8fa8fef9800b1576beab8a5bc39b821157a5ed))
+
+
## 0.5.0 (2022-10-10)
Maintenance release without user-facing changes.
@@ -13,10 +49,10 @@ Maintenance release without user-facing changes.
- - 3 commits contributed to the release over the course of 20 calendar days.
+ - 4 commits contributed to the release over the course of 20 calendar days.
- 20 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- - 0 issues like '(#ID)' where seen in commit messages
+ - 0 issues like '(#ID)' were seen in commit messages
### Commit Details
@@ -25,6 +61,7 @@ Maintenance release without user-facing changes.
view details
* **Uncategorized**
+ - Release git-hash v0.9.11, git-features v0.23.0, git-actor v0.13.0, git-attributes v0.5.0, git-object v0.22.0, git-ref v0.17.0, git-sec v0.4.1, git-config v0.9.0, git-url v0.10.0, git-credentials v0.6.0, git-diff v0.20.0, git-discover v0.6.0, git-traverse v0.18.0, git-index v0.6.0, git-mailmap v0.5.0, git-pack v0.24.0, git-odb v0.34.0, git-packetline v0.13.1, git-transport v0.21.0, git-protocol v0.21.0, git-revision v0.6.0, git-refspec v0.3.0, git-worktree v0.6.0, git-repository v0.25.0, safety bump 24 crates ([`104d922`](https://github.com/Byron/gitoxide/commit/104d922add61ab21c534c24ce8ed37cddf3e275a))
- prepare changelogs for release ([`d232567`](https://github.com/Byron/gitoxide/commit/d23256701a95284857dc8d1cb37c7c94cada973c))
- Merge branch 'fix-git-features' ([`82fd251`](https://github.com/Byron/gitoxide/commit/82fd251ac80d07bc9da8a4d36e517aa35580d188))
- Merge branch 'diff' ([`25a7726`](https://github.com/Byron/gitoxide/commit/25a7726377fbe400ea3c4927d04e9dec99802b7b))
@@ -79,7 +116,7 @@ Maintenance release without user-facing changes.
- 4 commits contributed to the release over the course of 3 calendar days.
- 3 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- - 0 issues like '(#ID)' where seen in commit messages
+ - 0 issues like '(#ID)' were seen in commit messages
### Commit Details
@@ -116,7 +153,7 @@ Maintenance release without user-facing changes.
- 9 commits contributed to the release over the course of 5 calendar days.
- 6 days passed between releases.
- 4 commits were understood as [conventional](https://www.conventionalcommits.org).
- - 0 issues like '(#ID)' where seen in commit messages
+ - 0 issues like '(#ID)' were seen in commit messages
### Commit Details
@@ -183,7 +220,7 @@ This is a maintenance release with no functional changes.
- 21 commits contributed to the release over the course of 33 calendar days.
- 39 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- - 0 issues like '(#ID)' where seen in commit messages
+ - 0 issues like '(#ID)' were seen in commit messages
### Commit Details
@@ -226,7 +263,7 @@ A maintenance release without user-facing changes.
- 7 commits contributed to the release over the course of 25 calendar days.
- 25 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- - 0 issues like '(#ID)' where seen in commit messages
+ - 0 issues like '(#ID)' were seen in commit messages
### Commit Details
diff --git a/git-attributes/Cargo.toml b/git-attributes/Cargo.toml
index 777bcebfbf0..065f405e7a5 100644
--- a/git-attributes/Cargo.toml
+++ b/git-attributes/Cargo.toml
@@ -1,11 +1,11 @@
[package]
name = "git-attributes"
-version = "0.5.0"
+version = "0.6.0"
repository = "https://github.com/Byron/gitoxide"
license = "MIT/Apache-2.0"
description = "A WIP crate of the gitoxide project dealing .gitattributes files"
authors = ["Sebastian Thiel "]
-edition = "2018"
+edition = "2021"
include = ["src/**/*", "CHANGELOG.md"]
[lib]
@@ -16,10 +16,10 @@ doctest = false
serde1 = ["serde", "bstr/serde", "git-glob/serde1", "compact_str/serde"]
[dependencies]
-git-features = { version = "^0.23.0", path = "../git-features" }
-git-path = { version = "^0.5.0", path = "../git-path" }
-git-quote = { version = "^0.3.0", path = "../git-quote" }
-git-glob = { version = "^0.4.0", path = "../git-glob" }
+git-features = { version = "^0.24.0", path = "../git-features" }
+git-path = { version = "^0.6.0", path = "../git-path" }
+git-quote = { version = "^0.4.0", path = "../git-quote" }
+git-glob = { version = "^0.5.0", path = "../git-glob" }
bstr = { version = "1.0.1", default-features = false, features = ["std", "unicode"]}
unicode-bom = "1.1.4"
diff --git a/git-bitmap/CHANGELOG.md b/git-bitmap/CHANGELOG.md
index 58dc22afaf9..da6a0b2e60b 100644
--- a/git-bitmap/CHANGELOG.md
+++ b/git-bitmap/CHANGELOG.md
@@ -5,8 +5,49 @@ 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.2.0 (2022-11-21)
+
+### New Features (BREAKING)
+
+ - upgrade edition to 2021 in most crates.
+ MSRV for this is 1.56, and we are now at 1.60 so should be compatible.
+ This isn't more than a patch release as it should break nobody
+ who is adhering to the MSRV, but let's be careful and mark it
+ breaking.
+
+ Note that `git-features` and `git-pack` are still on edition 2018
+ as they make use of a workaround to support (safe) mutable access
+ to non-overlapping entries in a slice which doesn't work anymore
+ in edition 2021.
+
+### Commit Statistics
+
+
+
+ - 5 commits contributed to the release over the course of 90 calendar days.
+ - 90 days passed between releases.
+ - 1 commit was understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+
+
+view details
+
+ * **Uncategorized**
+ - prepare changelogs prior to release ([`e4648f8`](https://github.com/Byron/gitoxide/commit/e4648f827c97e9d13636d1bbdc83dd63436e6e5c))
+ - Merge branch 'version2021' ([`0e4462d`](https://github.com/Byron/gitoxide/commit/0e4462df7a5166fe85c23a779462cdca8ee013e8))
+ - upgrade edition to 2021 in most crates. ([`3d8fa8f`](https://github.com/Byron/gitoxide/commit/3d8fa8fef9800b1576beab8a5bc39b821157a5ed))
+ - Merge branch 'main' into index-from-tree ([`bc64b96`](https://github.com/Byron/gitoxide/commit/bc64b96a2ec781c72d1d4daad38aa7fb8b74f99b))
+ - Merge branch 'main' into filter-refs-by-spec ([`cfa1440`](https://github.com/Byron/gitoxide/commit/cfa144031dbcac2707ab0cec012bc35e78f9c475))
+
+
## 0.1.2 (2022-08-24)
+
+
+
### Chore
- uniformize deny attributes
@@ -16,10 +57,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- - 3 commits contributed to the release over the course of 3 calendar days.
+ - 6 commits contributed to the release over the course of 5 calendar days.
- 6 days passed between releases.
- - 2 commits where understood as [conventional](https://www.conventionalcommits.org).
- - 0 issues like '(#ID)' where seen in commit messages
+ - 2 commits were understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
### Commit Details
@@ -28,9 +69,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details
* **Uncategorized**
- - Merge branch 'example-new-repo' ([`946dd3a`](https://github.com/Byron/gitoxide/commit/946dd3a80522ef437e09528a93aa1433f01b0ee8))
+ - Release git-date v0.0.5, git-hash v0.9.8, git-features v0.22.2, git-actor v0.11.3, git-glob v0.3.2, git-quote v0.2.1, git-attributes v0.3.2, git-tempfile v2.0.4, git-lock v2.1.1, git-validate v0.5.5, git-object v0.20.2, git-ref v0.15.2, git-sec v0.3.1, git-config v0.7.0, git-credentials v0.4.0, git-diff v0.17.2, git-discover v0.4.1, git-bitmap v0.1.2, git-index v0.4.2, git-mailmap v0.3.2, git-chunk v0.3.1, git-traverse v0.16.2, git-pack v0.21.2, git-odb v0.31.2, git-packetline v0.12.7, git-url v0.7.2, git-transport v0.19.2, git-protocol v0.19.0, git-revision v0.4.2, git-refspec v0.1.0, git-worktree v0.4.2, git-repository v0.22.0, safety bump 4 crates ([`4974eca`](https://github.com/Byron/gitoxide/commit/4974eca96d525d1ee4f8cad79bb713af7a18bf9d))
+ - Merge branch 'main' into remote-ls-refs ([`e2ee3de`](https://github.com/Byron/gitoxide/commit/e2ee3ded97e5c449933712883535b30d151c7c78))
+ - Merge branch 'docsrs-show-features' ([`31c2351`](https://github.com/Byron/gitoxide/commit/31c235140cad212d16a56195763fbddd971d87ce))
- uniformize deny attributes ([`f7f136d`](https://github.com/Byron/gitoxide/commit/f7f136dbe4f86e7dee1d54835c420ec07c96cd78))
- remove default link to cargo doc everywhere ([`533e887`](https://github.com/Byron/gitoxide/commit/533e887e80c5f7ede8392884562e1c5ba56fb9a8))
+ - Merge branch 'main' into remote-ls-refs ([`bd5f3e8`](https://github.com/Byron/gitoxide/commit/bd5f3e8db7e0bb4abfb7b0f79f585ab82c3a14ab))
## 0.1.1 (2022-08-17)
@@ -43,9 +87,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- - 6 commits contributed to the release over the course of 26 calendar days.
+ - 10 commits contributed to the release over the course of 26 calendar days.
- 136 days passed between releases.
- - 1 commit where understood as [conventional](https://www.conventionalcommits.org).
+ - 1 commit was understood as [conventional](https://www.conventionalcommits.org).
- 1 unique issue was worked on: [#427](https://github.com/Byron/gitoxide/issues/427)
### Commit Details
@@ -59,8 +103,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
* **Uncategorized**
- Release git-date v0.0.3, git-actor v0.11.1, git-attributes v0.3.1, git-tempfile v2.0.3, git-object v0.20.1, git-ref v0.15.1, git-config v0.6.1, git-diff v0.17.1, git-discover v0.4.0, git-bitmap v0.1.1, git-index v0.4.1, git-mailmap v0.3.1, git-traverse v0.16.1, git-pack v0.21.1, git-odb v0.31.1, git-packetline v0.12.6, git-url v0.7.1, git-transport v0.19.1, git-protocol v0.18.1, git-revision v0.4.0, git-worktree v0.4.1, git-repository v0.21.0, safety bump 5 crates ([`c96473d`](https://github.com/Byron/gitoxide/commit/c96473dce21c3464aacbc0a62d520c1a33172611))
- prepare changelogs prior to reelase ([`c06ae1c`](https://github.com/Byron/gitoxide/commit/c06ae1c606b6af9c2a12021103d99c2810750d60))
- - Merge branch 'write-index-files' into write-index-v2 ([`cddc2ca`](https://github.com/Byron/gitoxide/commit/cddc2ca06f63f66e887ff821452d1f56fb08fe6a))
- - Merge branch 'write-index-files' into rev-parse-delegate ([`370110d`](https://github.com/Byron/gitoxide/commit/370110d3356528af38150c2280ed505354ceca5b))
+ - Merge branch 'rev-parse-delegate' ([`2f506c7`](https://github.com/Byron/gitoxide/commit/2f506c7c2988477b0f97d272a9ac9ed47b236457))
+ - Merge pull request #2 from SidneyDouw/main ([`ce885ad`](https://github.com/Byron/gitoxide/commit/ce885ad4c3324c09c83751c32e014f246c748766))
+ - Merge branch 'Byron:main' into main ([`9b9ea02`](https://github.com/Byron/gitoxide/commit/9b9ea0275f8ff5862f24cf5a4ca53bb1cd610709))
+ - Merge branch 'main' into rev-parse-delegate ([`6da8250`](https://github.com/Byron/gitoxide/commit/6da82507588d3bc849217c11d9a1d398b67f2ed6))
+ - Merge branch 'main' into pathspec ([`7b61506`](https://github.com/Byron/gitoxide/commit/7b615060712565f515515e35a3e8346278ad770c))
+ - Merge branch 'kianmeng-fix-typos' ([`4e7b343`](https://github.com/Byron/gitoxide/commit/4e7b34349c0a01ad8686bbb4eb987e9338259d9c))
- Fix typos ([`e9fcb70`](https://github.com/Byron/gitoxide/commit/e9fcb70e429edb2974afa3f58d181f3ef14c3da3))
@@ -76,7 +124,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- 5 commits contributed to the release over the course of 73 calendar days.
- 73 days passed between releases.
- - 1 commit where understood as [conventional](https://www.conventionalcommits.org).
+ - 1 commit was understood as [conventional](https://www.conventionalcommits.org).
- 3 unique issues were worked on: [#293](https://github.com/Byron/gitoxide/issues/293), [#298](https://github.com/Byron/gitoxide/issues/298), [#355](https://github.com/Byron/gitoxide/issues/355)
### Commit Details
@@ -93,7 +141,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- See if git-bitmap now compiles on 32 bit systems ([`0c77816`](https://github.com/Byron/gitoxide/commit/0c778166de19491f75c0a74e49da64ffb73c83be))
* **Uncategorized**
- Release git-diff v0.14.0, git-bitmap v0.1.0, git-index v0.2.0, git-tempfile v2.0.1, git-lock v2.0.0, git-mailmap v0.1.0, git-traverse v0.13.0, git-pack v0.17.0, git-quote v0.2.0, git-odb v0.27.0, git-packetline v0.12.4, git-url v0.4.0, git-transport v0.16.0, git-protocol v0.15.0, git-ref v0.12.0, git-worktree v0.1.0, git-repository v0.15.0, cargo-smart-release v0.9.0, safety bump 5 crates ([`e58dc30`](https://github.com/Byron/gitoxide/commit/e58dc3084cf17a9f618ae3a6554a7323e44428bf))
- - Merge branch 'AP2008-implement-worktree' ([`f32c669`](https://github.com/Byron/gitoxide/commit/f32c669bc519d59a1f1d90d61cc48a422c86aede))
+ - Merge branch 'index-information' ([`025f157`](https://github.com/Byron/gitoxide/commit/025f157de10a509a4b36a9aed41de80487e8c15c))
## 0.0.1 (2022-01-19)
@@ -110,7 +158,7 @@ Please note that the current feature set is minimal and driven by the need of th
- 11 commits contributed to the release over the course of 6 calendar days.
- 6 days passed between releases.
- - 0 commits where understood as [conventional](https://www.conventionalcommits.org).
+ - 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- 1 unique issue was worked on: [#293](https://github.com/Byron/gitoxide/issues/293)
### Thanks Clippy
@@ -149,7 +197,7 @@ Initial release, entirely empty.
- 3 commits contributed to the release.
- - 0 commits where understood as [conventional](https://www.conventionalcommits.org).
+ - 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- 1 unique issue was worked on: [#293](https://github.com/Byron/gitoxide/issues/293)
### Commit Details
diff --git a/git-bitmap/Cargo.toml b/git-bitmap/Cargo.toml
index f38cc89ebb0..6ca6dc7f8bb 100644
--- a/git-bitmap/Cargo.toml
+++ b/git-bitmap/Cargo.toml
@@ -1,11 +1,11 @@
[package]
name = "git-bitmap"
-version = "0.1.2"
+version = "0.2.0"
repository = "https://github.com/Byron/gitoxide"
license = "MIT/Apache-2.0"
description = "A WIP crate of the gitoxide project dedicated implementing the standard git bitmap format"
authors = ["Sebastian Thiel "]
-edition = "2018"
+edition = "2021"
[lib]
doctest = false
diff --git a/git-chunk/CHANGELOG.md b/git-chunk/CHANGELOG.md
index 4464dd8479f..569e2e2e87e 100644
--- a/git-chunk/CHANGELOG.md
+++ b/git-chunk/CHANGELOG.md
@@ -5,6 +5,43 @@ 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.4.0 (2022-11-21)
+
+### New Features (BREAKING)
+
+ - upgrade edition to 2021 in most crates.
+ MSRV for this is 1.56, and we are now at 1.60 so should be compatible.
+ This isn't more than a patch release as it should break nobody
+ who is adhering to the MSRV, but let's be careful and mark it
+ breaking.
+
+ Note that `git-features` and `git-pack` are still on edition 2018
+ as they make use of a workaround to support (safe) mutable access
+ to non-overlapping entries in a slice which doesn't work anymore
+ in edition 2021.
+
+### Commit Statistics
+
+
+
+ - 4 commits contributed to the release over the course of 62 calendar days.
+ - 62 days passed between releases.
+ - 1 commit was understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+
+
+view details
+
+ * **Uncategorized**
+ - prepare changelogs prior to release ([`e4648f8`](https://github.com/Byron/gitoxide/commit/e4648f827c97e9d13636d1bbdc83dd63436e6e5c))
+ - Merge branch 'version2021' ([`0e4462d`](https://github.com/Byron/gitoxide/commit/0e4462df7a5166fe85c23a779462cdca8ee013e8))
+ - upgrade edition to 2021 in most crates. ([`3d8fa8f`](https://github.com/Byron/gitoxide/commit/3d8fa8fef9800b1576beab8a5bc39b821157a5ed))
+ - Merge branch 'diff' ([`25a7726`](https://github.com/Byron/gitoxide/commit/25a7726377fbe400ea3c4927d04e9dec99802b7b))
+
+
## 0.3.2 (2022-09-20)
Maintenance release without observable changes.
@@ -13,7 +50,7 @@ Maintenance release without observable changes.
- - 5 commits contributed to the release over the course of 14 calendar days.
+ - 7 commits contributed to the release over the course of 27 calendar days.
- 27 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- 2 unique issues were worked on: [#450](https://github.com/Byron/gitoxide/issues/450), [#470](https://github.com/Byron/gitoxide/issues/470)
@@ -29,9 +66,11 @@ Maintenance release without observable changes.
* **[#470](https://github.com/Byron/gitoxide/issues/470)**
- update changelogs prior to release ([`caa7a1b`](https://github.com/Byron/gitoxide/commit/caa7a1bdef74d7d3166a7e38127a59f5ab3cfbdd))
* **Uncategorized**
+ - Release git-command v0.1.0, git-prompt v0.1.0, git-url v0.9.0, git-credentials v0.5.0, git-diff v0.19.0, git-mailmap v0.4.0, git-chunk v0.3.2, git-pack v0.23.0, git-odb v0.33.0, git-packetline v0.13.0, git-transport v0.20.0, git-protocol v0.20.0, git-revision v0.5.0, git-refspec v0.2.0, git-repository v0.24.0, git-commitgraph v0.9.0, gitoxide-core v0.18.0, gitoxide v0.16.0 ([`f5c36d8`](https://github.com/Byron/gitoxide/commit/f5c36d85755d1f0f503b77d9a565fad6aecf6728))
- Release git-hash v0.9.10, git-features v0.22.5, git-date v0.2.0, git-actor v0.12.0, git-glob v0.4.0, git-path v0.5.0, git-quote v0.3.0, git-attributes v0.4.0, git-config-value v0.8.0, git-tempfile v2.0.5, git-validate v0.6.0, git-object v0.21.0, git-ref v0.16.0, git-sec v0.4.0, git-config v0.8.0, git-discover v0.5.0, git-traverse v0.17.0, git-index v0.5.0, git-worktree v0.5.0, git-testtools v0.9.0, git-command v0.1.0, git-prompt v0.1.0, git-url v0.9.0, git-credentials v0.5.0, git-diff v0.19.0, git-mailmap v0.4.0, git-chunk v0.3.2, git-pack v0.23.0, git-odb v0.33.0, git-packetline v0.13.0, git-transport v0.20.0, git-protocol v0.20.0, git-revision v0.5.0, git-refspec v0.2.0, git-repository v0.24.0, git-commitgraph v0.9.0, gitoxide-core v0.18.0, gitoxide v0.16.0, safety bump 28 crates ([`29a043b`](https://github.com/Byron/gitoxide/commit/29a043be6808a3e9199a9b26bd076fe843afe4f4))
- - Merge branch 'index-from-tree' ([`172f73c`](https://github.com/Byron/gitoxide/commit/172f73cf26878d153d51790fa01853fa4ba6beb7))
- - Merge branch 'git_date_relative' ([`83a3832`](https://github.com/Byron/gitoxide/commit/83a38329c59e9ebc057221da832fd8320bbeddb1))
+ - Merge branch 'filter-refs' ([`e10554d`](https://github.com/Byron/gitoxide/commit/e10554d2a3b9c027353a432b0c84f7d3797b7cae))
+ - Merge branch 'main' into index-from-tree ([`bc64b96`](https://github.com/Byron/gitoxide/commit/bc64b96a2ec781c72d1d4daad38aa7fb8b74f99b))
+ - Merge branch 'main' into filter-refs-by-spec ([`cfa1440`](https://github.com/Byron/gitoxide/commit/cfa144031dbcac2707ab0cec012bc35e78f9c475))
## 0.3.1 (2022-08-24)
@@ -46,10 +85,10 @@ Maintenance release without observable changes.
- - 5 commits contributed to the release over the course of 211 calendar days.
+ - 4 commits contributed to the release over the course of 3 calendar days.
- 212 days passed between releases.
- 1 commit was understood as [conventional](https://www.conventionalcommits.org).
- - 0 issues like '(#ID)' where seen in commit messages
+ - 0 issues like '(#ID)' were seen in commit messages
### Commit Details
@@ -59,10 +98,9 @@ Maintenance release without observable changes.
* **Uncategorized**
- Release git-date v0.0.5, git-hash v0.9.8, git-features v0.22.2, git-actor v0.11.3, git-glob v0.3.2, git-quote v0.2.1, git-attributes v0.3.2, git-tempfile v2.0.4, git-lock v2.1.1, git-validate v0.5.5, git-object v0.20.2, git-ref v0.15.2, git-sec v0.3.1, git-config v0.7.0, git-credentials v0.4.0, git-diff v0.17.2, git-discover v0.4.1, git-bitmap v0.1.2, git-index v0.4.2, git-mailmap v0.3.2, git-chunk v0.3.1, git-traverse v0.16.2, git-pack v0.21.2, git-odb v0.31.2, git-packetline v0.12.7, git-url v0.7.2, git-transport v0.19.2, git-protocol v0.19.0, git-revision v0.4.2, git-refspec v0.1.0, git-worktree v0.4.2, git-repository v0.22.0, safety bump 4 crates ([`4974eca`](https://github.com/Byron/gitoxide/commit/4974eca96d525d1ee4f8cad79bb713af7a18bf9d))
- - Merge branch 'example-new-repo' ([`946dd3a`](https://github.com/Byron/gitoxide/commit/946dd3a80522ef437e09528a93aa1433f01b0ee8))
+ - Merge branch 'main' into remote-ls-refs ([`e2ee3de`](https://github.com/Byron/gitoxide/commit/e2ee3ded97e5c449933712883535b30d151c7c78))
+ - Merge branch 'docsrs-show-features' ([`31c2351`](https://github.com/Byron/gitoxide/commit/31c235140cad212d16a56195763fbddd971d87ce))
- uniformize deny attributes ([`f7f136d`](https://github.com/Byron/gitoxide/commit/f7f136dbe4f86e7dee1d54835c420ec07c96cd78))
- - Merge branch 'AP2008-implement-worktree' ([`f32c669`](https://github.com/Byron/gitoxide/commit/f32c669bc519d59a1f1d90d61cc48a422c86aede))
- - Merge branch 'index-information' ([`025f157`](https://github.com/Byron/gitoxide/commit/025f157de10a509a4b36a9aed41de80487e8c15c))
## 0.3.0 (2022-01-23)
diff --git a/git-chunk/Cargo.toml b/git-chunk/Cargo.toml
index 2e447255587..6b67cbdddd2 100644
--- a/git-chunk/Cargo.toml
+++ b/git-chunk/Cargo.toml
@@ -1,12 +1,12 @@
[package]
name = "git-chunk"
-version = "0.3.2"
+version = "0.4.0"
description = "Interact with the git chunk file format used in multi-pack index and commit-graph files"
authors = ["Sebastian Thiel "]
repository = "https://github.com/Byron/gitoxide"
documentation = "https://github.com/git/git/blob/seen/Documentation/technical/chunk-format.txt"
license = "MIT/Apache-2.0"
-edition = "2018"
+edition = "2021"
include = ["src/**/*", "CHANGELOG.md"]
[lib]
diff --git a/git-command/CHANGELOG.md b/git-command/CHANGELOG.md
index f0d3dc5ce8f..64206334c2d 100644
--- a/git-command/CHANGELOG.md
+++ b/git-command/CHANGELOG.md
@@ -5,6 +5,43 @@ 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.2.0 (2022-11-21)
+
+### New Features (BREAKING)
+
+ - upgrade edition to 2021 in most crates.
+ MSRV for this is 1.56, and we are now at 1.60 so should be compatible.
+ This isn't more than a patch release as it should break nobody
+ who is adhering to the MSRV, but let's be careful and mark it
+ breaking.
+
+ Note that `git-features` and `git-pack` are still on edition 2018
+ as they make use of a workaround to support (safe) mutable access
+ to non-overlapping entries in a slice which doesn't work anymore
+ in edition 2021.
+
+### Commit Statistics
+
+
+
+ - 4 commits contributed to the release over the course of 62 calendar days.
+ - 62 days passed between releases.
+ - 1 commit was understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+
+
+view details
+
+ * **Uncategorized**
+ - prepare changelogs prior to release ([`e4648f8`](https://github.com/Byron/gitoxide/commit/e4648f827c97e9d13636d1bbdc83dd63436e6e5c))
+ - Merge branch 'version2021' ([`0e4462d`](https://github.com/Byron/gitoxide/commit/0e4462df7a5166fe85c23a779462cdca8ee013e8))
+ - upgrade edition to 2021 in most crates. ([`3d8fa8f`](https://github.com/Byron/gitoxide/commit/3d8fa8fef9800b1576beab8a5bc39b821157a5ed))
+ - Merge branch 'diff' ([`25a7726`](https://github.com/Byron/gitoxide/commit/25a7726377fbe400ea3c4927d04e9dec99802b7b))
+
+
## 0.1.0 (2022-09-20)
The first usable release.
@@ -13,7 +50,7 @@ The first usable release.
- - 25 commits contributed to the release over the course of 26 calendar days.
+ - 20 commits contributed to the release over the course of 26 calendar days.
- 26 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- 2 unique issues were worked on: [#450](https://github.com/Byron/gitoxide/issues/450), [#470](https://github.com/Byron/gitoxide/issues/470)
@@ -48,15 +85,10 @@ The first usable release.
- fix dependency declaration ([`9a8369d`](https://github.com/Byron/gitoxide/commit/9a8369db9cd91a4f7447dc2d363bfb1972e5e9b1))
- update changelogs prior to release ([`caa7a1b`](https://github.com/Byron/gitoxide/commit/caa7a1bdef74d7d3166a7e38127a59f5ab3cfbdd))
* **Uncategorized**
+ - Release git-command v0.1.0, git-prompt v0.1.0, git-url v0.9.0, git-credentials v0.5.0, git-diff v0.19.0, git-mailmap v0.4.0, git-chunk v0.3.2, git-pack v0.23.0, git-odb v0.33.0, git-packetline v0.13.0, git-transport v0.20.0, git-protocol v0.20.0, git-revision v0.5.0, git-refspec v0.2.0, git-repository v0.24.0, git-commitgraph v0.9.0, gitoxide-core v0.18.0, gitoxide v0.16.0 ([`f5c36d8`](https://github.com/Byron/gitoxide/commit/f5c36d85755d1f0f503b77d9a565fad6aecf6728))
- Release git-hash v0.9.10, git-features v0.22.5, git-date v0.2.0, git-actor v0.12.0, git-glob v0.4.0, git-path v0.5.0, git-quote v0.3.0, git-attributes v0.4.0, git-config-value v0.8.0, git-tempfile v2.0.5, git-validate v0.6.0, git-object v0.21.0, git-ref v0.16.0, git-sec v0.4.0, git-config v0.8.0, git-discover v0.5.0, git-traverse v0.17.0, git-index v0.5.0, git-worktree v0.5.0, git-testtools v0.9.0, git-command v0.1.0, git-prompt v0.1.0, git-url v0.9.0, git-credentials v0.5.0, git-diff v0.19.0, git-mailmap v0.4.0, git-chunk v0.3.2, git-pack v0.23.0, git-odb v0.33.0, git-packetline v0.13.0, git-transport v0.20.0, git-protocol v0.20.0, git-revision v0.5.0, git-refspec v0.2.0, git-repository v0.24.0, git-commitgraph v0.9.0, gitoxide-core v0.18.0, gitoxide v0.16.0, safety bump 28 crates ([`29a043b`](https://github.com/Byron/gitoxide/commit/29a043be6808a3e9199a9b26bd076fe843afe4f4))
- - Merge branch 'index-from-tree' ([`172f73c`](https://github.com/Byron/gitoxide/commit/172f73cf26878d153d51790fa01853fa4ba6beb7))
- make fmt ([`535e967`](https://github.com/Byron/gitoxide/commit/535e967666c6da657ff1b7eff7c64ab27cafb182))
- - Merge branch 'main' into filter-refs-by-spec ([`9aa1d3d`](https://github.com/Byron/gitoxide/commit/9aa1d3dc46d4b1c76af257f573aff3aeef2d3fa8))
- - Merge branch 'main' into filter-refs-by-spec ([`1f6e5ab`](https://github.com/Byron/gitoxide/commit/1f6e5ab15f5fd8d23719b13e6aea59cd231ac0fe))
- - Merge branch 'main' into filter-refs-by-spec ([`51dc828`](https://github.com/Byron/gitoxide/commit/51dc8282fb77b519ff7d2c94c6bd73af306cfe8b))
- - Merge branch 'main' into filter-refs-by-spec ([`56ba481`](https://github.com/Byron/gitoxide/commit/56ba481f4c48f74f10397feb1b6dc3d7dd3704fb))
- - Merge branch 'main' into filter-refs-by-spec ([`a36c05d`](https://github.com/Byron/gitoxide/commit/a36c05d281269f3f8b297e7adc463bfb3c306663))
- - Merge branch 'main' into filter-refs-by-spec ([`cef0b51`](https://github.com/Byron/gitoxide/commit/cef0b51ade2a3301fa09ede7a425aa1fe3527e78))
+ - Merge branch 'filter-refs-by-spec' ([`5c05198`](https://github.com/Byron/gitoxide/commit/5c051986bd89590a9287d85d84c713d83dfab83a))
- thanks clippy ([`0dc1da5`](https://github.com/Byron/gitoxide/commit/0dc1da5e636b2eecc26fcfa0ecd814af3b78ed29))
diff --git a/git-command/Cargo.toml b/git-command/Cargo.toml
index 7dbf2840256..e5c4231cac8 100644
--- a/git-command/Cargo.toml
+++ b/git-command/Cargo.toml
@@ -1,11 +1,11 @@
[package]
name = "git-command"
-version = "0.1.0"
+version = "0.2.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 "]
-edition = "2018"
+edition = "2021"
[lib]
doctest = false
diff --git a/git-commitgraph/CHANGELOG.md b/git-commitgraph/CHANGELOG.md
index 95ccf4271fb..8eecf18e2f2 100644
--- a/git-commitgraph/CHANGELOG.md
+++ b/git-commitgraph/CHANGELOG.md
@@ -5,6 +5,42 @@ 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.11.0 (2022-11-21)
+
+### New Features (BREAKING)
+
+ - upgrade edition to 2021 in most crates.
+ MSRV for this is 1.56, and we are now at 1.60 so should be compatible.
+ This isn't more than a patch release as it should break nobody
+ who is adhering to the MSRV, but let's be careful and mark it
+ breaking.
+
+ Note that `git-features` and `git-pack` are still on edition 2018
+ as they make use of a workaround to support (safe) mutable access
+ to non-overlapping entries in a slice which doesn't work anymore
+ in edition 2021.
+
+### Commit Statistics
+
+
+
+ - 3 commits contributed to the release over the course of 2 calendar days.
+ - 14 days passed between releases.
+ - 1 commit was understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+
+
+view details
+
+ * **Uncategorized**
+ - prepare changelogs prior to release ([`e4648f8`](https://github.com/Byron/gitoxide/commit/e4648f827c97e9d13636d1bbdc83dd63436e6e5c))
+ - Merge branch 'version2021' ([`0e4462d`](https://github.com/Byron/gitoxide/commit/0e4462df7a5166fe85c23a779462cdca8ee013e8))
+ - upgrade edition to 2021 in most crates. ([`3d8fa8f`](https://github.com/Byron/gitoxide/commit/3d8fa8fef9800b1576beab8a5bc39b821157a5ed))
+
+
## 0.10.0 (2022-11-06)
A maintenance release without user-facing changes.
@@ -13,7 +49,7 @@ A maintenance release without user-facing changes.
- - 4 commits contributed to the release over the course of 47 calendar days.
+ - 5 commits contributed to the release over the course of 47 calendar days.
- 47 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
@@ -25,6 +61,7 @@ A maintenance release without user-facing changes.
view details
* **Uncategorized**
+ - Release git-features v0.23.1, git-glob v0.4.1, git-config-value v0.8.1, git-tempfile v2.0.6, git-object v0.22.1, git-ref v0.18.0, git-sec v0.4.2, git-config v0.10.0, git-prompt v0.1.1, git-url v0.10.1, git-credentials v0.6.1, git-diff v0.21.0, git-discover v0.7.0, git-index v0.7.0, git-pack v0.25.0, git-odb v0.35.0, git-transport v0.21.1, git-protocol v0.22.0, git-refspec v0.3.1, git-worktree v0.7.0, git-repository v0.26.0, git-commitgraph v0.10.0, gitoxide-core v0.19.0, gitoxide v0.17.0, safety bump 9 crates ([`d071583`](https://github.com/Byron/gitoxide/commit/d071583c5576fdf5f7717765ffed5681792aa81f))
- prepare changelogs prior to release ([`423af90`](https://github.com/Byron/gitoxide/commit/423af90c8202d62dc1ea4a76a0df6421d1f0aa06))
- Release git-hash v0.9.11, git-features v0.23.0, git-actor v0.13.0, git-attributes v0.5.0, git-object v0.22.0, git-ref v0.17.0, git-sec v0.4.1, git-config v0.9.0, git-url v0.10.0, git-credentials v0.6.0, git-diff v0.20.0, git-discover v0.6.0, git-traverse v0.18.0, git-index v0.6.0, git-mailmap v0.5.0, git-pack v0.24.0, git-odb v0.34.0, git-packetline v0.13.1, git-transport v0.21.0, git-protocol v0.21.0, git-revision v0.6.0, git-refspec v0.3.0, git-worktree v0.6.0, git-repository v0.25.0, safety bump 24 crates ([`104d922`](https://github.com/Byron/gitoxide/commit/104d922add61ab21c534c24ce8ed37cddf3e275a))
- Merge branch 'fix-git-features' ([`82fd251`](https://github.com/Byron/gitoxide/commit/82fd251ac80d07bc9da8a4d36e517aa35580d188))
diff --git a/git-commitgraph/Cargo.toml b/git-commitgraph/Cargo.toml
index 8299d464dd0..89d42959195 100644
--- a/git-commitgraph/Cargo.toml
+++ b/git-commitgraph/Cargo.toml
@@ -1,12 +1,12 @@
[package]
name = "git-commitgraph"
-version = "0.10.0"
+version = "0.11.0"
repository = "https://github.com/Byron/gitoxide"
documentation = "https://git-scm.com/docs/commit-graph#:~:text=The%20commit-graph%20file%20is%20a%20supplemental%20data%20structure,or%20in%20the%20info%20directory%20of%20an%20alternate."
license = "MIT/Apache-2.0"
description = "Read-only access to the git commitgraph file format"
authors = ["Conor Davis ", "Sebastian Thiel "]
-edition = "2018"
+edition = "2021"
include = ["src/**/*", "CHANGELOG.md"]
[lib]
@@ -17,9 +17,9 @@ doctest = false
serde1 = ["serde", "git-hash/serde1", "bstr/serde"]
[dependencies]
-git-features = { version = "^0.23.1", path = "../git-features", features = ["rustsha1"] }
-git-hash = { version = "^0.9.11", path = "../git-hash" }
-git-chunk = { version = "^0.3.2", path = "../git-chunk" }
+git-features = { version = "^0.24.0", path = "../git-features", features = ["rustsha1"] }
+git-hash = { version = "^0.10.0", path = "../git-hash" }
+git-chunk = { version = "^0.4.0", path = "../git-chunk" }
bstr = { version = "1.0.1", default-features = false, features = ["std"] }
memmap2 = "0.5.0"
diff --git a/git-config-value/CHANGELOG.md b/git-config-value/CHANGELOG.md
index ff3339aeed8..a13b2df5008 100644
--- a/git-config-value/CHANGELOG.md
+++ b/git-config-value/CHANGELOG.md
@@ -5,6 +5,42 @@ 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.9.0 (2022-11-21)
+
+### New Features (BREAKING)
+
+ - upgrade edition to 2021 in most crates.
+ MSRV for this is 1.56, and we are now at 1.60 so should be compatible.
+ This isn't more than a patch release as it should break nobody
+ who is adhering to the MSRV, but let's be careful and mark it
+ breaking.
+
+ Note that `git-features` and `git-pack` are still on edition 2018
+ as they make use of a workaround to support (safe) mutable access
+ to non-overlapping entries in a slice which doesn't work anymore
+ in edition 2021.
+
+### Commit Statistics
+
+
+
+ - 3 commits contributed to the release over the course of 2 calendar days.
+ - 4 days passed between releases.
+ - 1 commit was understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+
+
+view details
+
+ * **Uncategorized**
+ - prepare changelogs prior to release ([`e4648f8`](https://github.com/Byron/gitoxide/commit/e4648f827c97e9d13636d1bbdc83dd63436e6e5c))
+ - Merge branch 'version2021' ([`0e4462d`](https://github.com/Byron/gitoxide/commit/0e4462df7a5166fe85c23a779462cdca8ee013e8))
+ - upgrade edition to 2021 in most crates. ([`3d8fa8f`](https://github.com/Byron/gitoxide/commit/3d8fa8fef9800b1576beab8a5bc39b821157a5ed))
+
+
## 0.8.2 (2022-11-17)
### New Features
@@ -15,7 +51,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- - 3 commits contributed to the release over the course of 1 calendar day.
+ - 4 commits contributed to the release over the course of 1 calendar day.
- 10 days passed between releases.
- 1 commit was understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
@@ -27,6 +63,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details
* **Uncategorized**
+ - Release git-glob v0.4.2, git-config-value v0.8.2, git-lock v2.2.0, git-ref v0.19.0, git-config v0.11.0, git-discover v0.8.0, git-index v0.8.0, git-transport v0.22.0, git-protocol v0.23.0, git-worktree v0.8.0, git-repository v0.28.0, gitoxide-core v0.20.0, gitoxide v0.18.0, safety bump 9 crates ([`0c253b1`](https://github.com/Byron/gitoxide/commit/0c253b15143dcedfe4c66d64ab1ea6e097030651))
- prepare changelogs prior to release ([`fe5721f`](https://github.com/Byron/gitoxide/commit/fe5721f888c64c79fe9a734a9e33b94a282f8d97))
- Merge branch 'http-config' ([`665b53e`](https://github.com/Byron/gitoxide/commit/665b53e1c2e1de65fafa28b669f58977868bbc81))
- `Default` implementation for `Boolean` and `Integer` ([`3577aef`](https://github.com/Byron/gitoxide/commit/3577aefc68d9aec149e0a0f4192f06d6de9ff531))
diff --git a/git-config-value/Cargo.toml b/git-config-value/Cargo.toml
index fa88ceb4a0e..d6a163fe5e5 100644
--- a/git-config-value/Cargo.toml
+++ b/git-config-value/Cargo.toml
@@ -1,11 +1,11 @@
[package]
name = "git-config-value"
-version = "0.8.2"
+version = "0.9.0"
repository = "https://github.com/Byron/gitoxide"
license = "MIT/Apache-2.0"
description = "A crate of the gitoxide project providing git-config value parsing"
authors = ["Sebastian Thiel "]
-edition = "2018"
+edition = "2021"
[lib]
doctest = false
@@ -15,7 +15,7 @@ doctest = false
serde1 = ["serde", "bstr/serde"]
[dependencies]
-git-path = { version = "^0.5.0", path = "../git-path" }
+git-path = { version = "^0.6.0", path = "../git-path" }
thiserror = "1.0.32"
bstr = "1.0.1"
diff --git a/git-config/CHANGELOG.md b/git-config/CHANGELOG.md
index be38591c163..aa13d559238 100644
--- a/git-config/CHANGELOG.md
+++ b/git-config/CHANGELOG.md
@@ -5,6 +5,54 @@ 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.12.0 (2022-11-21)
+
+### New Features
+
+ - read worktree specific configuration of main worktrees.
+ Supporting this is useful when interacting with worktrees that have been
+ created with sparse worktree support, which moves some configuration
+ values into those for the worktree at hand.
+
+ Note that linked worktrees are not supported - for that use
+ `git-repository` instead.
+
+### New Features (BREAKING)
+
+ - upgrade edition to 2021 in most crates.
+ MSRV for this is 1.56, and we are now at 1.60 so should be compatible.
+ This isn't more than a patch release as it should break nobody
+ who is adhering to the MSRV, but let's be careful and mark it
+ breaking.
+
+ Note that `git-features` and `git-pack` are still on edition 2018
+ as they make use of a workaround to support (safe) mutable access
+ to non-overlapping entries in a slice which doesn't work anymore
+ in edition 2021.
+
+### Commit Statistics
+
+
+
+ - 5 commits contributed to the release over the course of 2 calendar days.
+ - 4 days passed between releases.
+ - 2 commits were understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+
+
+view details
+
+ * **Uncategorized**
+ - prepare changelogs prior to release ([`e4648f8`](https://github.com/Byron/gitoxide/commit/e4648f827c97e9d13636d1bbdc83dd63436e6e5c))
+ - Merge branch 'version2021' ([`0e4462d`](https://github.com/Byron/gitoxide/commit/0e4462df7a5166fe85c23a779462cdca8ee013e8))
+ - read worktree specific configuration of main worktrees. ([`7d7bd02`](https://github.com/Byron/gitoxide/commit/7d7bd02d4e0678565f58c5da83fd1ad88c60e911))
+ - refactor ([`747b9e9`](https://github.com/Byron/gitoxide/commit/747b9e9ee6c467c85a6fd4246ad0fea216176cbc))
+ - upgrade edition to 2021 in most crates. ([`3d8fa8f`](https://github.com/Byron/gitoxide/commit/3d8fa8fef9800b1576beab8a5bc39b821157a5ed))
+
+
## 0.11.0 (2022-11-17)
A maintenance release without user-facing changes.
@@ -13,7 +61,7 @@ A maintenance release without user-facing changes.
- - 1 commit contributed to the release.
+ - 5 commits contributed to the release.
- 10 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
@@ -25,7 +73,11 @@ A maintenance release without user-facing changes.
view details
* **Uncategorized**
+ - Release git-glob v0.4.2, git-config-value v0.8.2, git-lock v2.2.0, git-ref v0.19.0, git-config v0.11.0, git-discover v0.8.0, git-index v0.8.0, git-transport v0.22.0, git-protocol v0.23.0, git-worktree v0.8.0, git-repository v0.28.0, gitoxide-core v0.20.0, gitoxide v0.18.0, safety bump 9 crates ([`0c253b1`](https://github.com/Byron/gitoxide/commit/0c253b15143dcedfe4c66d64ab1ea6e097030651))
- prepare changelogs prior to release ([`fe5721f`](https://github.com/Byron/gitoxide/commit/fe5721f888c64c79fe9a734a9e33b94a282f8d97))
+ - order matters ([`166f349`](https://github.com/Byron/gitoxide/commit/166f349b387c219431e5ef0410d9b1402e58dc09))
+ - update docs ([`aab6a33`](https://github.com/Byron/gitoxide/commit/aab6a3359fea2858e54d38073b8714d61be2c699))
+ - naive approach to loading worktree configs… ([`9d8cb1f`](https://github.com/Byron/gitoxide/commit/9d8cb1f5689cabe5535888b439437581261d9c3b))
## 0.10.0 (2022-11-06)
diff --git a/git-config/Cargo.toml b/git-config/Cargo.toml
index 455c439918d..c735acbc5ae 100644
--- a/git-config/Cargo.toml
+++ b/git-config/Cargo.toml
@@ -1,11 +1,11 @@
[package]
name = "git-config"
-version = "0.11.0"
+version = "0.12.0"
repository = "https://github.com/Byron/gitoxide"
description = "A git-config file parser and editor from the gitoxide project"
license = "MIT OR Apache-2.0"
authors = ["Edward Shen "]
-edition = "2018"
+edition = "2021"
keywords = ["git-config", "git", "config", "gitoxide"]
categories = ["config", "parser-implementations"]
include = ["src/**/*", "LICENSE-*", "README.md", "CHANGELOG.md"]
@@ -15,12 +15,12 @@ include = ["src/**/*", "LICENSE-*", "README.md", "CHANGELOG.md"]
serde1 = ["serde", "bstr/serde", "git-sec/serde1", "git-ref/serde1", "git-glob/serde1", "git-config-value/serde1"]
[dependencies]
-git-features = { version = "^0.23.1", path = "../git-features"}
-git-config-value = { version = "^0.8.2", path = "../git-config-value" }
-git-path = { version = "^0.5.0", path = "../git-path" }
-git-sec = { version = "^0.4.2", path = "../git-sec" }
-git-ref = { version = "^0.19.0", path = "../git-ref" }
-git-glob = { version = "^0.4.2", path = "../git-glob" }
+git-features = { version = "^0.24.0", path = "../git-features"}
+git-config-value = { version = "^0.9.0", path = "../git-config-value" }
+git-path = { version = "^0.6.0", path = "../git-path" }
+git-sec = { version = "^0.5.0", path = "../git-sec" }
+git-ref = { version = "^0.20.0", path = "../git-ref" }
+git-glob = { version = "^0.5.0", path = "../git-glob" }
nom = { version = "7", default_features = false, features = [ "std" ] }
memchr = "2"
diff --git a/git-config/fuzz/Cargo.toml b/git-config/fuzz/Cargo.toml
index b23854424e3..09bc99c27cd 100644
--- a/git-config/fuzz/Cargo.toml
+++ b/git-config/fuzz/Cargo.toml
@@ -4,7 +4,7 @@ name = "git-config-fuzz"
version = "0.0.0"
authors = ["Automatically generated"]
publish = false
-edition = "2018"
+edition = "2021"
[package.metadata]
cargo-fuzz = true
diff --git a/git-config/src/file/init/comfort.rs b/git-config/src/file/init/comfort.rs
index d9352fb615f..4267b895b19 100644
--- a/git-config/src/file/init/comfort.rs
+++ b/git-config/src/file/init/comfort.rs
@@ -75,6 +75,7 @@ impl File<'static> {
///
/// - globals
/// - repository-local by loading `dir`/config
+ /// - worktree by loading `dir`/config.worktree
/// - environment
///
/// Note that `dir` is the `.git` dir to load the configuration from, not the configuration file.
@@ -95,6 +96,20 @@ impl File<'static> {
(local, path)
};
+ let worktree = match local.boolean("extensions", None, "worktreeConfig") {
+ Some(Ok(worktree_config)) => worktree_config.then(|| {
+ let source = Source::Worktree;
+ let path = git_dir.join(
+ source
+ .storage_location(&mut |n| std::env::var_os(n))
+ .expect("location available for worktree"),
+ );
+ Self::from_path_no_includes(path, source)
+ }),
+ _ => None,
+ }
+ .transpose()?;
+
let home = std::env::var("HOME").ok().map(PathBuf::from);
let options = init::Options {
includes: init::includes::Options::follow(
@@ -114,7 +129,13 @@ impl File<'static> {
globals.resolve_includes(options)?;
local.resolve_includes(options)?;
- globals.append(local).append(Self::from_environment_overrides()?);
+ globals.append(local);
+ if let Some(mut worktree) = worktree {
+ worktree.resolve_includes(options)?;
+ globals.append(worktree);
+ }
+ globals.append(Self::from_environment_overrides()?);
+
Ok(globals)
}
}
diff --git a/git-config/tests/file/init/comfort.rs b/git-config/tests/file/init/comfort.rs
index 629bbec7cd6..1a759344df0 100644
--- a/git-config/tests/file/init/comfort.rs
+++ b/git-config/tests/file/init/comfort.rs
@@ -79,3 +79,29 @@ fn from_git_dir() -> crate::Result {
}
Ok(())
}
+
+#[test]
+#[serial]
+fn from_git_dir_with_worktree_extension() -> crate::Result {
+ let git_dir = git_testtools::scripted_fixture_repo_read_only("config_with_worktree_extension.sh")?
+ .join("main-worktree")
+ .join(".git");
+ let config = git_config::File::from_git_dir(git_dir)?;
+
+ assert_eq!(
+ config
+ .string("extensions", None, "worktreeConfig")
+ .expect("extension present")
+ .as_ref(),
+ "true"
+ );
+ assert_eq!(
+ config
+ .string("worktree", None, "override")
+ .expect("section present")
+ .as_ref(),
+ "set in the main worktree"
+ );
+
+ Ok(())
+}
diff --git a/git-config/tests/file/mutable/value.rs b/git-config/tests/file/mutable/value.rs
index c1354fee540..b17f8b3db7d 100644
--- a/git-config/tests/file/mutable/value.rs
+++ b/git-config/tests/file/mutable/value.rs
@@ -240,7 +240,6 @@ b
}
fn init_config() -> git_config::File<'static> {
- use std::convert::TryFrom;
git_config::File::try_from(
r#"[core]
a=b"100"
diff --git a/git-config/tests/fixtures/config_with_worktree_extension.sh b/git-config/tests/fixtures/config_with_worktree_extension.sh
new file mode 100644
index 00000000000..a3a5fe076de
--- /dev/null
+++ b/git-config/tests/fixtures/config_with_worktree_extension.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+set -eu -o pipefail
+
+git init -q main-worktree
+(cd main-worktree
+ git config extensions.worktreeConfig true
+ git config --worktree worktree.override "set in the main worktree"
+)
diff --git a/git-config/tests/fixtures/generated-archives/config_with_worktree_extension.tar.xz b/git-config/tests/fixtures/generated-archives/config_with_worktree_extension.tar.xz
new file mode 100644
index 00000000000..a3a8a811f0b
--- /dev/null
+++ b/git-config/tests/fixtures/generated-archives/config_with_worktree_extension.tar.xz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c1b76071a3caf267bff791124608f16c62606da03690370831f6585d1598b4b9
+size 9168
diff --git a/git-credentials/CHANGELOG.md b/git-credentials/CHANGELOG.md
index 9797de0d276..44261da8988 100644
--- a/git-credentials/CHANGELOG.md
+++ b/git-credentials/CHANGELOG.md
@@ -5,6 +5,42 @@ 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.7.0 (2022-11-21)
+
+### New Features (BREAKING)
+
+ - upgrade edition to 2021 in most crates.
+ MSRV for this is 1.56, and we are now at 1.60 so should be compatible.
+ This isn't more than a patch release as it should break nobody
+ who is adhering to the MSRV, but let's be careful and mark it
+ breaking.
+
+ Note that `git-features` and `git-pack` are still on edition 2018
+ as they make use of a workaround to support (safe) mutable access
+ to non-overlapping entries in a slice which doesn't work anymore
+ in edition 2021.
+
+### Commit Statistics
+
+
+
+ - 3 commits contributed to the release over the course of 2 calendar days.
+ - 14 days passed between releases.
+ - 1 commit was understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+
+
+view details
+
+ * **Uncategorized**
+ - prepare changelogs prior to release ([`e4648f8`](https://github.com/Byron/gitoxide/commit/e4648f827c97e9d13636d1bbdc83dd63436e6e5c))
+ - Merge branch 'version2021' ([`0e4462d`](https://github.com/Byron/gitoxide/commit/0e4462df7a5166fe85c23a779462cdca8ee013e8))
+ - upgrade edition to 2021 in most crates. ([`3d8fa8f`](https://github.com/Byron/gitoxide/commit/3d8fa8fef9800b1576beab8a5bc39b821157a5ed))
+
+
## 0.6.1 (2022-11-06)
A maintenance release without user-facing changes.
@@ -13,7 +49,7 @@ A maintenance release without user-facing changes.
- - 3 commits contributed to the release over the course of 2 calendar days.
+ - 4 commits contributed to the release over the course of 2 calendar days.
- 27 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
@@ -31,6 +67,7 @@ A maintenance release without user-facing changes.
view details
* **Uncategorized**
+ - Release git-features v0.23.1, git-glob v0.4.1, git-config-value v0.8.1, git-tempfile v2.0.6, git-object v0.22.1, git-ref v0.18.0, git-sec v0.4.2, git-config v0.10.0, git-prompt v0.1.1, git-url v0.10.1, git-credentials v0.6.1, git-diff v0.21.0, git-discover v0.7.0, git-index v0.7.0, git-pack v0.25.0, git-odb v0.35.0, git-transport v0.21.1, git-protocol v0.22.0, git-refspec v0.3.1, git-worktree v0.7.0, git-repository v0.26.0, git-commitgraph v0.10.0, gitoxide-core v0.19.0, gitoxide v0.17.0, safety bump 9 crates ([`d071583`](https://github.com/Byron/gitoxide/commit/d071583c5576fdf5f7717765ffed5681792aa81f))
- prepare changelogs prior to release ([`423af90`](https://github.com/Byron/gitoxide/commit/423af90c8202d62dc1ea4a76a0df6421d1f0aa06))
- Merge branch 'main' into write-sparse-index (upgrade to Rust 1.65) ([`5406630`](https://github.com/Byron/gitoxide/commit/5406630466145990b5adbdadb59151036993060d))
- thanks clippy ([`04cfa63`](https://github.com/Byron/gitoxide/commit/04cfa635a65ae34ad6d22391f2febd2ca7eabca9))
diff --git a/git-credentials/Cargo.toml b/git-credentials/Cargo.toml
index 44dcf47ddb9..04f9bbf14ae 100644
--- a/git-credentials/Cargo.toml
+++ b/git-credentials/Cargo.toml
@@ -1,11 +1,11 @@
[package]
name = "git-credentials"
-version = "0.6.1"
+version = "0.7.0"
repository = "https://github.com/Byron/gitoxide"
license = "MIT/Apache-2.0"
description = "A WIP crate of the gitoxide project to interact with git credentials helpers"
authors = ["Sebastian Thiel "]
-edition = "2018"
+edition = "2021"
[lib]
doctest = false
@@ -15,12 +15,12 @@ doctest = false
serde1 = ["serde", "bstr/serde", "git-sec/serde1"]
[dependencies]
-git-sec = { version = "^0.4.2", path = "../git-sec" }
-git-url = { version = "^0.10.1", path = "../git-url" }
-git-path = { version = "^0.5.0", path = "../git-path" }
-git-command = { version = "^0.1.0", path = "../git-command" }
-git-config-value = { version = "^0.8.1", path = "../git-config-value" }
-git-prompt = { version = "^0.1.1", path = "../git-prompt" }
+git-sec = { version = "^0.5.0", path = "../git-sec" }
+git-url = { version = "^0.11.0", path = "../git-url" }
+git-path = { version = "^0.6.0", path = "../git-path" }
+git-command = { version = "^0.2.0", path = "../git-command" }
+git-config-value = { version = "^0.9.0", path = "../git-config-value" }
+git-prompt = { version = "^0.2.0", path = "../git-prompt" }
thiserror = "1.0.32"
serde = { version = "1.0.114", optional = true, default-features = false, features = ["derive"] }
diff --git a/git-date/CHANGELOG.md b/git-date/CHANGELOG.md
index f24429895e0..057c9fca8e3 100644
--- a/git-date/CHANGELOG.md
+++ b/git-date/CHANGELOG.md
@@ -5,6 +5,43 @@ 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.3.0 (2022-11-21)
+
+### New Features (BREAKING)
+
+ - upgrade edition to 2021 in most crates.
+ MSRV for this is 1.56, and we are now at 1.60 so should be compatible.
+ This isn't more than a patch release as it should break nobody
+ who is adhering to the MSRV, but let's be careful and mark it
+ breaking.
+
+ Note that `git-features` and `git-pack` are still on edition 2018
+ as they make use of a workaround to support (safe) mutable access
+ to non-overlapping entries in a slice which doesn't work anymore
+ in edition 2021.
+
+### Commit Statistics
+
+
+
+ - 4 commits contributed to the release over the course of 62 calendar days.
+ - 62 days passed between releases.
+ - 1 commit was understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+
+
+view details
+
+ * **Uncategorized**
+ - prepare changelogs prior to release ([`e4648f8`](https://github.com/Byron/gitoxide/commit/e4648f827c97e9d13636d1bbdc83dd63436e6e5c))
+ - Merge branch 'version2021' ([`0e4462d`](https://github.com/Byron/gitoxide/commit/0e4462df7a5166fe85c23a779462cdca8ee013e8))
+ - upgrade edition to 2021 in most crates. ([`3d8fa8f`](https://github.com/Byron/gitoxide/commit/3d8fa8fef9800b1576beab8a5bc39b821157a5ed))
+ - Merge branch 'diff' ([`25a7726`](https://github.com/Byron/gitoxide/commit/25a7726377fbe400ea3c4927d04e9dec99802b7b))
+
+
## 0.2.0 (2022-09-20)
### Changed (BREAKING)
@@ -16,7 +53,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- - 27 commits contributed to the release over the course of 24 calendar days.
+ - 34 commits contributed to the release over the course of 27 calendar days.
- 27 days passed between releases.
- 2 commits were understood as [conventional](https://www.conventionalcommits.org).
- 2 unique issues were worked on: [#450](https://github.com/Byron/gitoxide/issues/450), [#470](https://github.com/Byron/gitoxide/issues/470)
@@ -38,20 +75,25 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
* **[#470](https://github.com/Byron/gitoxide/issues/470)**
- update changelogs prior to release ([`caa7a1b`](https://github.com/Byron/gitoxide/commit/caa7a1bdef74d7d3166a7e38127a59f5ab3cfbdd))
* **Uncategorized**
- - Merge branch 'index-from-tree' ([`172f73c`](https://github.com/Byron/gitoxide/commit/172f73cf26878d153d51790fa01853fa4ba6beb7))
+ - Release git-hash v0.9.10, git-features v0.22.5, git-date v0.2.0, git-actor v0.12.0, git-glob v0.4.0, git-path v0.5.0, git-quote v0.3.0, git-attributes v0.4.0, git-config-value v0.8.0, git-tempfile v2.0.5, git-validate v0.6.0, git-object v0.21.0, git-ref v0.16.0, git-sec v0.4.0, git-config v0.8.0, git-discover v0.5.0, git-traverse v0.17.0, git-index v0.5.0, git-worktree v0.5.0, git-testtools v0.9.0, git-command v0.1.0, git-prompt v0.1.0, git-url v0.9.0, git-credentials v0.5.0, git-diff v0.19.0, git-mailmap v0.4.0, git-chunk v0.3.2, git-pack v0.23.0, git-odb v0.33.0, git-packetline v0.13.0, git-transport v0.20.0, git-protocol v0.20.0, git-revision v0.5.0, git-refspec v0.2.0, git-repository v0.24.0, git-commitgraph v0.9.0, gitoxide-core v0.18.0, gitoxide v0.16.0, safety bump 28 crates ([`29a043b`](https://github.com/Byron/gitoxide/commit/29a043be6808a3e9199a9b26bd076fe843afe4f4))
+ - Merge branch 'filter-refs' ([`fd14489`](https://github.com/Byron/gitoxide/commit/fd14489f729172d615d0fa1e8dbd605e9eacf69d))
+ - Merge branch 'git_date_relative' ([`83a3832`](https://github.com/Byron/gitoxide/commit/83a38329c59e9ebc057221da832fd8320bbeddb1))
- refactor ([`c5c6bf6`](https://github.com/Byron/gitoxide/commit/c5c6bf6ef3f0c9c12389bb638ab4d32b61839dec))
- refactor ([`956613f`](https://github.com/Byron/gitoxide/commit/956613fcdb33a845526fa9743aa0e7f80b3badfa))
- refactor ([`1026b7c`](https://github.com/Byron/gitoxide/commit/1026b7c613a3a8b46a27dd7cd5e3520043b21ab7))
- WIP. ([`79d82d4`](https://github.com/Byron/gitoxide/commit/79d82d46613c83280d2401ef4d72a35010a70b87))
- Parse the output while parsing the baseline file. ([`70fe59f`](https://github.com/Byron/gitoxide/commit/70fe59f4a1cad25f687397206ee2cbe50e643181))
- make fmt ([`535e967`](https://github.com/Byron/gitoxide/commit/535e967666c6da657ff1b7eff7c64ab27cafb182))
+ - Merge branch 'main' into filter-refs-by-spec ([`1f6e5ab`](https://github.com/Byron/gitoxide/commit/1f6e5ab15f5fd8d23719b13e6aea59cd231ac0fe))
- parse now takes the current time `parse(…, Option
## 0.1.0 (2022-08-24)
@@ -79,7 +123,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- 3 commits contributed to the release.
- 1 commit was understood as [conventional](https://www.conventionalcommits.org).
- - 0 issues like '(#ID)' where seen in commit messages
+ - 0 issues like '(#ID)' were seen in commit messages
### Commit Details
@@ -112,10 +156,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- - 7 commits contributed to the release over the course of 3 calendar days.
+ - 10 commits contributed to the release over the course of 4 calendar days.
- 4 days passed between releases.
- 4 commits were understood as [conventional](https://www.conventionalcommits.org).
- - 0 issues like '(#ID)' where seen in commit messages
+ - 0 issues like '(#ID)' were seen in commit messages
### Commit Details
@@ -125,12 +169,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
* **Uncategorized**
- Release git-date v0.0.5, git-hash v0.9.8, git-features v0.22.2, git-actor v0.11.3, git-glob v0.3.2, git-quote v0.2.1, git-attributes v0.3.2, git-tempfile v2.0.4, git-lock v2.1.1, git-validate v0.5.5, git-object v0.20.2, git-ref v0.15.2, git-sec v0.3.1, git-config v0.7.0, git-credentials v0.4.0, git-diff v0.17.2, git-discover v0.4.1, git-bitmap v0.1.2, git-index v0.4.2, git-mailmap v0.3.2, git-chunk v0.3.1, git-traverse v0.16.2, git-pack v0.21.2, git-odb v0.31.2, git-packetline v0.12.7, git-url v0.7.2, git-transport v0.19.2, git-protocol v0.19.0, git-revision v0.4.2, git-refspec v0.1.0, git-worktree v0.4.2, git-repository v0.22.0, safety bump 4 crates ([`4974eca`](https://github.com/Byron/gitoxide/commit/4974eca96d525d1ee4f8cad79bb713af7a18bf9d))
+ - Merge pull request #497 from svetli-n/patch-2 ([`bd02b39`](https://github.com/Byron/gitoxide/commit/bd02b392734d8074adedc504a2cf69952d6fa980))
- Fix doc comment ([`51cd9ce`](https://github.com/Byron/gitoxide/commit/51cd9ceda6a8a0127a18802dc2cc49861013a65d))
- - Merge branch 'example-new-repo' ([`946dd3a`](https://github.com/Byron/gitoxide/commit/946dd3a80522ef437e09528a93aa1433f01b0ee8))
+ - Merge branch 'main' into remote-ls-refs ([`e2ee3de`](https://github.com/Byron/gitoxide/commit/e2ee3ded97e5c449933712883535b30d151c7c78))
+ - Merge branch 'docsrs-show-features' ([`31c2351`](https://github.com/Byron/gitoxide/commit/31c235140cad212d16a56195763fbddd971d87ce))
- use docsrs feature in code to show what is feature-gated automatically on docs.rs ([`b1c40b0`](https://github.com/Byron/gitoxide/commit/b1c40b0364ef092cd52d03b34f491b254816b18d))
- uniformize deny attributes ([`f7f136d`](https://github.com/Byron/gitoxide/commit/f7f136dbe4f86e7dee1d54835c420ec07c96cd78))
- pass --cfg docsrs when compiling for https://docs.rs ([`5176771`](https://github.com/Byron/gitoxide/commit/517677147f1c17304c62cf97a1dd09f232ebf5db))
- remove default link to cargo doc everywhere ([`533e887`](https://github.com/Byron/gitoxide/commit/533e887e80c5f7ede8392884562e1c5ba56fb9a8))
+ - Merge branch 'main' into remote-ls-refs ([`c82bbfa`](https://github.com/Byron/gitoxide/commit/c82bbfaddc45bf9b5b55f056613046d977d9ef09))
## 0.0.4 (2022-08-19)
@@ -144,10 +191,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- - 8 commits contributed to the release.
+ - 10 commits contributed to the release.
- 1 day passed between releases.
- 2 commits were understood as [conventional](https://www.conventionalcommits.org).
- - 0 issues like '(#ID)' where seen in commit messages
+ - 0 issues like '(#ID)' were seen in commit messages
### Commit Details
@@ -159,11 +206,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Release git-date v0.0.4, git-actor v0.11.2, git-revision v0.4.1, git-repository v0.21.1 ([`2f9dc84`](https://github.com/Byron/gitoxide/commit/2f9dc847e0d54f4181ce35ddadd9286ba80ca01f))
- update changelogs prior to release ([`1b5fd86`](https://github.com/Byron/gitoxide/commit/1b5fd86d121634f8567e8442f125377e460032c6))
- prepare for release of git-repository ([`8aa5389`](https://github.com/Byron/gitoxide/commit/8aa5389d5a1bdd3a07f1caa1c2f55c8af4f9844a))
+ - Merge branch 'add_common_git_formats' ([`c53e5a4`](https://github.com/Byron/gitoxide/commit/c53e5a4c521fbae7d74ad8323f79ced4dfe4f037))
- Raw and Unix formats. ([`8f7f9ce`](https://github.com/Byron/gitoxide/commit/8f7f9ce2b06ec884220b8cd5010b3df04b1ff0bc))
- Foundation for custom formats that aren't easily done with `time` formatting ([`b74eaf8`](https://github.com/Byron/gitoxide/commit/b74eaf85d41e1ec67d8c84cc8484702514c3e7cd))
- Add ISO-strict format ([`4b0c219`](https://github.com/Byron/gitoxide/commit/4b0c2198f9d5b28584c717123c7cfb1b27724605))
- refinements ([`b1fea0f`](https://github.com/Byron/gitoxide/commit/b1fea0fe76bd94850c7da34ee9504525ad667748))
- Add common git date formats. ([`090795b`](https://github.com/Byron/gitoxide/commit/090795b4040e2dad995390e502f87c2ced8045f8))
+ - Merge branch 'main' into remote-ls-refs ([`bd5f3e8`](https://github.com/Byron/gitoxide/commit/bd5f3e8db7e0bb4abfb7b0f79f585ab82c3a14ab))
## 0.0.3 (2022-08-17)
@@ -174,7 +223,7 @@ A maintenance release without user facing changes.
- - 18 commits contributed to the release over the course of 25 calendar days.
+ - 21 commits contributed to the release over the course of 25 calendar days.
- 26 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- 1 unique issue was worked on: [#427](https://github.com/Byron/gitoxide/issues/427)
@@ -191,19 +240,22 @@ A maintenance release without user facing changes.
* **Uncategorized**
- Release git-date v0.0.3, git-actor v0.11.1, git-attributes v0.3.1, git-tempfile v2.0.3, git-object v0.20.1, git-ref v0.15.1, git-config v0.6.1, git-diff v0.17.1, git-discover v0.4.0, git-bitmap v0.1.1, git-index v0.4.1, git-mailmap v0.3.1, git-traverse v0.16.1, git-pack v0.21.1, git-odb v0.31.1, git-packetline v0.12.6, git-url v0.7.1, git-transport v0.19.1, git-protocol v0.18.1, git-revision v0.4.0, git-worktree v0.4.1, git-repository v0.21.0, safety bump 5 crates ([`c96473d`](https://github.com/Byron/gitoxide/commit/c96473dce21c3464aacbc0a62d520c1a33172611))
- prepare changelogs prior to reelase ([`c06ae1c`](https://github.com/Byron/gitoxide/commit/c06ae1c606b6af9c2a12021103d99c2810750d60))
- - Merge branch 'index-write-refactor' ([`805f432`](https://github.com/Byron/gitoxide/commit/805f432bf8e9d2dd9ede56caf959de386d5d80c7))
+ - Merge branch 'main' into remote-ls-refs ([`c4bf958`](https://github.com/Byron/gitoxide/commit/c4bf9585d815bc342e5fb383336cc654280dd34f))
- adjust `git_date::parsea(str)` to use a str ([`0f8680a`](https://github.com/Byron/gitoxide/commit/0f8680a60913556b7fbd7543fda6a409ac05b121))
- refactor ([`11a5fa2`](https://github.com/Byron/gitoxide/commit/11a5fa29615d47c24f78446a1c3f5d3b8acf2f93))
- refactor ([`8e6f4a9`](https://github.com/Byron/gitoxide/commit/8e6f4a921b6b45945e711aaf5858b7714371fb41))
+ - Merge branch 'format_git_date_time' ([`99e12be`](https://github.com/Byron/gitoxide/commit/99e12bee16ab3f344c71818bfd1c95cf50e1721b))
- thanks clipppy ([`b139d70`](https://github.com/Byron/gitoxide/commit/b139d7043fbbbe5b933d96e83544059fe2a7bdd8))
- refactor ([`bd64387`](https://github.com/Byron/gitoxide/commit/bd64387d8ad3377571755dff14577cc3c53ee9cc))
- Use time format strings. ([`f84e8f5`](https://github.com/Byron/gitoxide/commit/f84e8f5f16ec2197d1967fb1cc06e9609ea52c16))
- refactor ([`556dd8c`](https://github.com/Byron/gitoxide/commit/556dd8cb78ea9321031984e2c6b4f9bc415f1be5))
- refactor ([`5bbcbcd`](https://github.com/Byron/gitoxide/commit/5bbcbcd75d1ab26746da7a927390ff3b6cc19a85))
- Format `git-date::Time` with `time::format_description`. ([`d4243bc`](https://github.com/Byron/gitoxide/commit/d4243bc4feb994bde99156ba77fff63bc9c875e9))
- - Merge branch 'write-index-files' into write-index-v2 ([`cddc2ca`](https://github.com/Byron/gitoxide/commit/cddc2ca06f63f66e887ff821452d1f56fb08fe6a))
- - Merge branch 'write-index-files' into rev-parse-delegate ([`370110d`](https://github.com/Byron/gitoxide/commit/370110d3356528af38150c2280ed505354ceca5b))
- - Merge branch 'main' into rev-parse-delegate ([`4ae2bed`](https://github.com/Byron/gitoxide/commit/4ae2bedfc25d1881d58ebdc54aca0936c68d4859))
+ - Merge branch 'rev-parse-delegate' ([`2f506c7`](https://github.com/Byron/gitoxide/commit/2f506c7c2988477b0f97d272a9ac9ed47b236457))
+ - Merge pull request #2 from SidneyDouw/main ([`ce885ad`](https://github.com/Byron/gitoxide/commit/ce885ad4c3324c09c83751c32e014f246c748766))
+ - Merge branch 'Byron:main' into main ([`9b9ea02`](https://github.com/Byron/gitoxide/commit/9b9ea0275f8ff5862f24cf5a4ca53bb1cd610709))
+ - Merge branch 'main' into rev-parse-delegate ([`6da8250`](https://github.com/Byron/gitoxide/commit/6da82507588d3bc849217c11d9a1d398b67f2ed6))
+ - Merge branch 'main' into pathspec ([`7b61506`](https://github.com/Byron/gitoxide/commit/7b615060712565f515515e35a3e8346278ad770c))
- make fmt ([`47724c0`](https://github.com/Byron/gitoxide/commit/47724c0edb382c036a3fc99884becfd2b0740d4b))
@@ -222,7 +274,7 @@ A maintenance release without user facing changes.
- - 4 commits contributed to the release.
+ - 8 commits contributed to the release over the course of 32 calendar days.
- 39 days passed between releases.
- 2 commits were understood as [conventional](https://www.conventionalcommits.org).
- 1 unique issue was worked on: [#331](https://github.com/Byron/gitoxide/issues/331)
@@ -239,6 +291,10 @@ A maintenance release without user facing changes.
* **Uncategorized**
- Release git-hash v0.9.6, git-features v0.22.0, git-date v0.0.2, git-actor v0.11.0, git-glob v0.3.1, git-path v0.4.0, git-attributes v0.3.0, git-tempfile v2.0.2, git-object v0.20.0, git-ref v0.15.0, git-sec v0.3.0, git-config v0.6.0, git-credentials v0.3.0, git-diff v0.17.0, git-discover v0.3.0, git-index v0.4.0, git-mailmap v0.3.0, git-traverse v0.16.0, git-pack v0.21.0, git-odb v0.31.0, git-url v0.7.0, git-transport v0.19.0, git-protocol v0.18.0, git-revision v0.3.0, git-worktree v0.4.0, git-repository v0.20.0, git-commitgraph v0.8.0, gitoxide-core v0.15.0, gitoxide v0.13.0, safety bump 22 crates ([`4737b1e`](https://github.com/Byron/gitoxide/commit/4737b1eea1d4c9a8d5a69fb63ecac5aa5d378ae5))
- prepare changelog prior to release ([`3c50625`](https://github.com/Byron/gitoxide/commit/3c50625fa51350ec885b0f38ec9e92f9444df0f9))
+ - Merge branch 'config-cascade' ([`f144eaf`](https://github.com/Byron/gitoxide/commit/f144eaf5863ae5cac63103f0db51c35fcf03a948))
+ - Merge pull request #1 from Byron/main ([`085e76b`](https://github.com/Byron/gitoxide/commit/085e76b121291ed9bd324139105d2bd4117bedf8))
+ - Merge branch 'main' into pathspec ([`89ea12b`](https://github.com/Byron/gitoxide/commit/89ea12b558bcc056b892193ee8fb44b8664b5da4))
+ - Merge branch 'main' into cont_include_if ([`41ea8ba`](https://github.com/Byron/gitoxide/commit/41ea8ba78e74f5c988148367386a1f4f304cb951))
## 0.0.1 (2022-06-13)
@@ -252,7 +308,7 @@ A maintenance release without user facing changes.
- - 5 commits contributed to the release over the course of 58 calendar days.
+ - 6 commits contributed to the release over the course of 57 calendar days.
- 59 days passed between releases.
- 1 commit was understood as [conventional](https://www.conventionalcommits.org).
- 1 unique issue was worked on: [#427](https://github.com/Byron/gitoxide/issues/427)
@@ -269,7 +325,8 @@ A maintenance release without user facing changes.
* **Uncategorized**
- Release git-date v0.0.1, git-hash v0.9.5, git-features v0.21.1, git-actor v0.10.1, git-path v0.2.0, git-attributes v0.2.0, git-ref v0.14.0, git-sec v0.2.0, git-config v0.5.0, git-credentials v0.2.0, git-discover v0.2.0, git-pack v0.20.0, git-odb v0.30.0, git-url v0.6.0, git-transport v0.18.0, git-protocol v0.17.0, git-revision v0.2.1, git-worktree v0.3.0, git-repository v0.19.0, safety bump 13 crates ([`a417177`](https://github.com/Byron/gitoxide/commit/a41717712578f590f04a33d27adaa63171f25267))
- update changelogs prior to release ([`bb424f5`](https://github.com/Byron/gitoxide/commit/bb424f51068b8a8e762696890a55ab48900ab980))
- - Merge branch 'test-archive-support' ([`350df01`](https://github.com/Byron/gitoxide/commit/350df01042d6ca8b93f8737fa101e69b50535a0f))
+ - Merge branch 'revspec-parsing' ([`a2c8969`](https://github.com/Byron/gitoxide/commit/a2c8969ba821fd387c39b14248074767f54749c8))
+ - Merge branch 'main' into repo-status ([`0eb2372`](https://github.com/Byron/gitoxide/commit/0eb23721dca78f6e6bf864c5c3a3e44df8b419f0))
## 0.0.0 (2022-04-14)
diff --git a/git-date/Cargo.toml b/git-date/Cargo.toml
index f55bdba7443..feee4f8b5e2 100644
--- a/git-date/Cargo.toml
+++ b/git-date/Cargo.toml
@@ -1,11 +1,11 @@
[package]
name = "git-date"
-version = "0.2.0"
+version = "0.3.0"
repository = "https://github.com/Byron/gitoxide"
license = "MIT/Apache-2.0"
description = "A WIP crate of the gitoxide project parsing dates the way git does"
authors = ["Sebastian Thiel "]
-edition = "2018"
+edition = "2021"
include = ["src/**/*", "CHANGELOG.md"]
[lib]
diff --git a/git-diff/CHANGELOG.md b/git-diff/CHANGELOG.md
index 3fb10868be6..a5c0c7490ef 100644
--- a/git-diff/CHANGELOG.md
+++ b/git-diff/CHANGELOG.md
@@ -5,6 +5,43 @@ 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.23.0 (2022-11-21)
+
+### New Features (BREAKING)
+
+ - upgrade edition to 2021 in most crates.
+ MSRV for this is 1.56, and we are now at 1.60 so should be compatible.
+ This isn't more than a patch release as it should break nobody
+ who is adhering to the MSRV, but let's be careful and mark it
+ breaking.
+
+ Note that `git-features` and `git-pack` are still on edition 2018
+ as they make use of a workaround to support (safe) mutable access
+ to non-overlapping entries in a slice which doesn't work anymore
+ in edition 2021.
+
+### Commit Statistics
+
+
+
+ - 4 commits contributed to the release over the course of 13 calendar days.
+ - 13 days passed between releases.
+ - 1 commit was understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+
+
+view details
+
+ * **Uncategorized**
+ - prepare changelogs prior to release ([`e4648f8`](https://github.com/Byron/gitoxide/commit/e4648f827c97e9d13636d1bbdc83dd63436e6e5c))
+ - Merge branch 'version2021' ([`0e4462d`](https://github.com/Byron/gitoxide/commit/0e4462df7a5166fe85c23a779462cdca8ee013e8))
+ - upgrade edition to 2021 in most crates. ([`3d8fa8f`](https://github.com/Byron/gitoxide/commit/3d8fa8fef9800b1576beab8a5bc39b821157a5ed))
+ - Merge branch 'main' into http-config ([`7c5b37d`](https://github.com/Byron/gitoxide/commit/7c5b37d28e98f59a6847368a0d0166d2dbb4acc1))
+
+
## 0.22.0 (2022-11-08)
### Changed (BREAKING)
@@ -23,7 +60,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- - 6 commits contributed to the release.
+ - 7 commits contributed to the release.
- 1 day passed between releases.
- 2 commits were understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
@@ -35,6 +72,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details
* **Uncategorized**
+ - Release git-diff v0.22.0, git-index v0.7.1, git-pack v0.26.0, git-odb v0.36.0, git-transport v0.21.2, git-repository v0.27.0, safety bump 6 crates ([`f0cab31`](https://github.com/Byron/gitoxide/commit/f0cab317bb0c2799fa80d16f3ae1b89d6aee4284))
- prepare changelogs prior to release ([`f5f3a9e`](https://github.com/Byron/gitoxide/commit/f5f3a9edd038a89c8c6c4da02054e5439bcc0071))
- Merge branch 'fixes-for-crates-index-diff' ([`255be4d`](https://github.com/Byron/gitoxide/commit/255be4ddcd6cbca0a89f286eeecdd19ff70e000f))
- re-export the `imara-diff` crate as `git_diff::blob::*`. ([`16b5533`](https://github.com/Byron/gitoxide/commit/16b553367518153b8f5b0bb6b23d2fcefcaac801))
diff --git a/git-diff/Cargo.toml b/git-diff/Cargo.toml
index 941aa8d5076..ec660de7f28 100644
--- a/git-diff/Cargo.toml
+++ b/git-diff/Cargo.toml
@@ -1,11 +1,11 @@
[package]
name = "git-diff"
-version = "0.22.0"
+version = "0.23.0"
repository = "https://github.com/Byron/gitoxide"
license = "MIT/Apache-2.0"
description = "Calculate differences between various git objects"
authors = ["Sebastian Thiel "]
-edition = "2018"
+edition = "2021"
include = ["src/**/*"]
[features]
@@ -15,8 +15,8 @@ serde1 = ["serde", "git-hash/serde1", "git-object/serde1"]
doctest = false
[dependencies]
-git-hash = { version = "^0.9.11", path = "../git-hash" }
-git-object = { version = "^0.22.1", path = "../git-object" }
+git-hash = { version = "^0.10.0", path = "../git-hash" }
+git-object = { version = "^0.23.0", path = "../git-object" }
thiserror = "1.0.32"
imara-diff = "0.1.3"
serde = { version = "1.0.114", optional = true, default-features = false, features = ["derive"]}
diff --git a/git-discover/CHANGELOG.md b/git-discover/CHANGELOG.md
index 3177518408f..b8d5f5637cc 100644
--- a/git-discover/CHANGELOG.md
+++ b/git-discover/CHANGELOG.md
@@ -5,6 +5,77 @@ 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.9.0 (2022-11-21)
+
+### Bug Fixes
+
+ - Discover repo with relative path and ceiling
+ A couple of problems are repaired to allow discovering a repository from
+ "." with a ceiling directory.
+
+ One problem was that find_ceiling_height() did the wrong thing when
+ confronted with any relative search_dir. This is resolved by converting
+ search_dir to be absolute if it is relative.
+
+ The other problem was that discover_opts() also mishandled relative paths.
+ When the cursor started out as ".", cursor.pop() would be blindly called
+ such that cursor would be "" for the second iteration. When a ceiling
+ directory was in use such that there was a max_height, the current height
+ would be burned going from ".", to "", and then to "", before finally
+ actually getting to a real parent directory. This problem is ameliorated by
+ testing whether the cursor has a non-empty parent before popping.
+
+ N.B. the new test case relies on the test running from the git-discover
+ directory such that the gitoxide repository will be found. This is a bit
+ fragile and will fail if, for example, the test is run from an unpacked
+ gitoxide source tarball.
+
+### New Features (BREAKING)
+
+ - `Path::from_dot_git_dir()` now takes the `current_dir` as argument and returns `Option`
+ That way it's possible to avoid at least one call of
+ `std::env::current_dir()` per invocation, which also is more consnstent
+ with similar plumbing methods.
+
+ Furthermore it can signal with `None` if the input directory was invalid.
+ - upgrade edition to 2021 in most crates.
+ MSRV for this is 1.56, and we are now at 1.60 so should be compatible.
+ This isn't more than a patch release as it should break nobody
+ who is adhering to the MSRV, but let's be careful and mark it
+ breaking.
+
+ Note that `git-features` and `git-pack` are still on edition 2018
+ as they make use of a workaround to support (safe) mutable access
+ to non-overlapping entries in a slice which doesn't work anymore
+ in edition 2021.
+
+### Commit Statistics
+
+
+
+ - 9 commits contributed to the release over the course of 2 calendar days.
+ - 4 days passed between releases.
+ - 3 commits were understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+
+
+view details
+
+ * **Uncategorized**
+ - prepare changelogs prior to release ([`e4648f8`](https://github.com/Byron/gitoxide/commit/e4648f827c97e9d13636d1bbdc83dd63436e6e5c))
+ - Merge branch 'discover-rel-path' ([`5f908fb`](https://github.com/Byron/gitoxide/commit/5f908fb86857d565715b9b0b8b453b29273fb022))
+ - add test that actually uses chdir like in the real world. ([`048c8b2`](https://github.com/Byron/gitoxide/commit/048c8b260f78ee1eac74bf8f4ee2374d6b0eb308))
+ - refactor ([`cdb9556`](https://github.com/Byron/gitoxide/commit/cdb95567c83d52cf93a621bf616883f09f5544bb))
+ - Discover repo with relative path and ceiling ([`6fc5c06`](https://github.com/Byron/gitoxide/commit/6fc5c06482636540804f7a8fb74794f52c72eda6))
+ - Merge branch 'cwd-consistency' ([`ea7c6a3`](https://github.com/Byron/gitoxide/commit/ea7c6a3b069c9e13905b51b87538c57ba9182dca))
+ - `Path::from_dot_git_dir()` now takes the `current_dir` as argument and returns `Option` ([`b4dcfc7`](https://github.com/Byron/gitoxide/commit/b4dcfc716a80ffccbab6f7ccc586d8063cc10fff))
+ - Merge branch 'version2021' ([`0e4462d`](https://github.com/Byron/gitoxide/commit/0e4462df7a5166fe85c23a779462cdca8ee013e8))
+ - upgrade edition to 2021 in most crates. ([`3d8fa8f`](https://github.com/Byron/gitoxide/commit/3d8fa8fef9800b1576beab8a5bc39b821157a5ed))
+
+
## 0.8.0 (2022-11-17)
A maintenance release without user-facing changes.
@@ -13,7 +84,7 @@ A maintenance release without user-facing changes.
- - 1 commit contributed to the release.
+ - 2 commits contributed to the release.
- 10 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
@@ -25,6 +96,7 @@ A maintenance release without user-facing changes.
view details
* **Uncategorized**
+ - Release git-glob v0.4.2, git-config-value v0.8.2, git-lock v2.2.0, git-ref v0.19.0, git-config v0.11.0, git-discover v0.8.0, git-index v0.8.0, git-transport v0.22.0, git-protocol v0.23.0, git-worktree v0.8.0, git-repository v0.28.0, gitoxide-core v0.20.0, gitoxide v0.18.0, safety bump 9 crates ([`0c253b1`](https://github.com/Byron/gitoxide/commit/0c253b15143dcedfe4c66d64ab1ea6e097030651))
- prepare changelogs prior to release ([`fe5721f`](https://github.com/Byron/gitoxide/commit/fe5721f888c64c79fe9a734a9e33b94a282f8d97))
diff --git a/git-discover/Cargo.toml b/git-discover/Cargo.toml
index 218092c7824..fd53ece11e4 100644
--- a/git-discover/Cargo.toml
+++ b/git-discover/Cargo.toml
@@ -1,27 +1,28 @@
[package]
name = "git-discover"
-version = "0.8.0"
+version = "0.9.0"
repository = "https://github.com/Byron/gitoxide"
license = "MIT/Apache-2.0"
description = "Discover git repositories and check if a directory is a git repository"
authors = ["Sebastian Thiel "]
-edition = "2018"
+edition = "2021"
include = ["src/**/*", "CHANGELOG.md"]
[lib]
doctest = false
[dependencies]
-git-sec = { version = "^0.4.2", path = "../git-sec" }
-git-path = { version = "^0.5.0", path = "../git-path" }
-git-ref = { version = "^0.19.0", path = "../git-ref" }
-git-hash = { version = "^0.9.11", path = "../git-hash" }
+git-sec = { version = "^0.5.0", path = "../git-sec" }
+git-path = { version = "^0.6.0", path = "../git-path" }
+git-ref = { version = "^0.20.0", path = "../git-ref" }
+git-hash = { version = "^0.10.0", path = "../git-hash" }
bstr = { version = "1.0.1", default-features = false, features = ["std", "unicode"] }
thiserror = "1.0.26"
[dev-dependencies]
git-testtools = { path = "../tests/tools" }
+serial_test = "0.9.0"
is_ci = "1.1.1"
[target.'cfg(target_os = "macos")'.dev-dependencies]
diff --git a/git-discover/src/repository.rs b/git-discover/src/repository.rs
index af9c4ec096c..321c3106888 100644
--- a/git-discover/src/repository.rs
+++ b/git-discover/src/repository.rs
@@ -44,60 +44,40 @@ mod path {
impl Path {
/// Instantiate a new path from `dir` which is expected to be the `.git` directory, with `kind` indicating
- /// whether it's a bare repository or not.
- pub fn from_dot_git_dir(dir: impl Into, kind: Kind) -> Self {
- Self::from_dot_git_dir_inner(dir, kind, std::env::current_dir().ok())
- }
- /// Returns the [kind][Kind] of this repository path.
- pub fn kind(&self) -> Kind {
- match self {
- Path::LinkedWorkTree { work_dir: _, git_dir } => Kind::WorkTree {
- linked_git_dir: Some(git_dir.to_owned()),
- },
- Path::WorkTree(_) => Kind::WorkTree { linked_git_dir: None },
- Path::Repository(_) => Kind::Bare,
- }
- }
-
- /// Consume and split this path into the location of the `.git` directory as well as an optional path to the work tree.
- pub fn into_repository_and_work_tree_directories(self) -> (PathBuf, Option) {
- match self {
- Path::LinkedWorkTree { work_dir, git_dir } => (git_dir, Some(work_dir)),
- Path::WorkTree(working_tree) => (working_tree.join(DOT_GIT_DIR), Some(working_tree)),
- Path::Repository(repository) => (repository, None),
- }
- }
- }
-
- impl Path {
- pub(crate) fn from_dot_git_dir_inner(
+ /// whether it's a bare repository or not, with `current_dir` being used to absolutize relative paths
+ /// as needed.
+ ///
+ /// `None` is returned if `dir` could not be resolved due to being relative and trying to reach outside of the filesystem root.
+ pub fn from_dot_git_dir(
dir: impl Into,
kind: Kind,
- current_dir: Option,
- ) -> Self {
- let absolutize_on_trailing_dot_dot = |dir: PathBuf| -> PathBuf {
+ current_dir: impl AsRef,
+ ) -> Option {
+ let cwd = current_dir.as_ref();
+ let absolutize_on_trailing_dot_dot = |dir: PathBuf| -> Option {
if !matches!(dir.components().rev().next(), Some(std::path::Component::ParentDir)) {
dir
} else {
- git_path::absolutize(&dir, current_dir.as_deref()).into_owned()
+ git_path::absolutize(&dir, cwd)?.into_owned()
}
+ .into()
};
let dir = dir.into();
match kind {
Kind::Submodule { git_dir } => Path::LinkedWorkTree {
- git_dir: git_path::absolutize(git_dir, current_dir.as_deref()).into_owned(),
- work_dir: without_dot_git_dir(absolutize_on_trailing_dot_dot(dir)),
+ git_dir: git_path::absolutize(git_dir, cwd)?.into_owned(),
+ work_dir: without_dot_git_dir(absolutize_on_trailing_dot_dot(dir)?),
},
Kind::SubmoduleGitDir => Path::Repository(dir),
Kind::WorkTreeGitDir { work_dir } => Path::LinkedWorkTree { git_dir: dir, work_dir },
Kind::WorkTree { linked_git_dir } => match linked_git_dir {
Some(git_dir) => Path::LinkedWorkTree {
git_dir,
- work_dir: without_dot_git_dir(absolutize_on_trailing_dot_dot(dir)),
+ work_dir: without_dot_git_dir(absolutize_on_trailing_dot_dot(dir)?),
},
None => {
- let mut dir = absolutize_on_trailing_dot_dot(dir);
+ let mut dir = absolutize_on_trailing_dot_dot(dir)?;
dir.pop(); // ".git" suffix
let work_dir = dir.as_os_str().is_empty().then(|| PathBuf::from(".")).unwrap_or(dir);
Path::WorkTree(work_dir)
@@ -105,6 +85,26 @@ mod path {
},
Kind::Bare => Path::Repository(dir),
}
+ .into()
+ }
+ /// Returns the [kind][Kind] of this repository path.
+ pub fn kind(&self) -> Kind {
+ match self {
+ Path::LinkedWorkTree { work_dir: _, git_dir } => Kind::WorkTree {
+ linked_git_dir: Some(git_dir.to_owned()),
+ },
+ Path::WorkTree(_) => Kind::WorkTree { linked_git_dir: None },
+ Path::Repository(_) => Kind::Bare,
+ }
+ }
+
+ /// Consume and split this path into the location of the `.git` directory as well as an optional path to the work tree.
+ pub fn into_repository_and_work_tree_directories(self) -> (PathBuf, Option) {
+ match self {
+ Path::LinkedWorkTree { work_dir, git_dir } => (git_dir, Some(work_dir)),
+ Path::WorkTree(working_tree) => (working_tree.join(DOT_GIT_DIR), Some(working_tree)),
+ Path::Repository(repository) => (repository, None),
+ }
}
}
}
diff --git a/git-discover/src/upwards/mod.rs b/git-discover/src/upwards/mod.rs
index 5919f887613..4a7f432b51b 100644
--- a/git-discover/src/upwards/mod.rs
+++ b/git-discover/src/upwards/mod.rs
@@ -4,7 +4,7 @@ pub use types::{Error, Options};
mod util;
pub(crate) mod function {
- use std::path::Path;
+ use std::{borrow::Cow, path::Path};
use git_sec::Trust;
@@ -30,14 +30,20 @@ pub(crate) mod function {
ceiling_dirs,
match_ceiling_dir_or_error,
cross_fs,
- }: Options,
+ current_dir,
+ }: Options<'_>,
) -> Result<(crate::repository::Path, Trust), Error> {
// Absolutize the path so that `Path::parent()` _actually_ gives
// us the parent directory. (`Path::parent` just strips off the last
// path component, which means it will not do what you expect when
// working with paths paths that contain '..'.)
- let cwd = std::env::current_dir().ok();
- let dir = git_path::absolutize(directory.as_ref(), cwd.as_deref());
+ let cwd = current_dir
+ .map(|cwd| Ok(Cow::Borrowed(cwd)))
+ .unwrap_or_else(|| std::env::current_dir().map(Cow::Owned))?;
+ let directory = directory.as_ref();
+ let dir = git_path::absolutize(directory, cwd.as_ref()).ok_or_else(|| Error::InvalidInput {
+ directory: directory.into(),
+ })?;
let dir_metadata = dir.metadata().map_err(|_| Error::InaccessibleDirectory {
path: dir.to_path_buf(),
})?;
@@ -45,12 +51,12 @@ pub(crate) mod function {
if !dir_metadata.is_dir() {
return Err(Error::InaccessibleDirectory { path: dir.into_owned() });
}
- let mut dir_made_absolute = !directory.as_ref().is_absolute()
- && cwd.as_deref().map_or(false, |cwd| {
- cwd.strip_prefix(dir.as_ref())
- .or_else(|_| dir.as_ref().strip_prefix(cwd))
- .is_ok()
- });
+ let mut dir_made_absolute = !directory.is_absolute()
+ && cwd
+ .as_ref()
+ .strip_prefix(dir.as_ref())
+ .or_else(|_| dir.as_ref().strip_prefix(cwd.as_ref()))
+ .is_ok();
let filter_by_trust = |x: &Path| -> Result
## 0.1.2 (2022-05-21)
@@ -257,7 +313,7 @@ A maintenance release without user-facing changes.
- - 6 commits contributed to the release over the course of 2 calendar days.
+ - 7 commits contributed to the release over the course of 2 calendar days.
- 3 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- 1 unique issue was worked on: [#422](https://github.com/Byron/gitoxide/issues/422)
@@ -272,6 +328,7 @@ A maintenance release without user-facing changes.
- prepare changelog ([`de2d587`](https://github.com/Byron/gitoxide/commit/de2d5874b8d75c53165a9fc3ed35e2b37142bf52))
* **Uncategorized**
- Release git-path v0.1.2, git-sec v0.1.1, git-config v0.4.0, git-discover v0.1.1, git-pack v0.19.1, git-repository v0.18.0, cargo-smart-release v0.10.0, safety bump 2 crates ([`ceb6dff`](https://github.com/Byron/gitoxide/commit/ceb6dff13362a2b4318a551893217c1d11643b9f))
+ - Merge branch 'svetli-n-git_includeif' ([`cf24fbe`](https://github.com/Byron/gitoxide/commit/cf24fbe4b62d67b06138243d470dcc1805ebd55b))
- Remove forbid missing_docs ([`23acebb`](https://github.com/Byron/gitoxide/commit/23acebb8e9e53d89e7f629ab690253610358b0bb))
- Merge branch 'main' into git_includeif ([`229d938`](https://github.com/Byron/gitoxide/commit/229d9383bef8844111d2bf3c406a2ea570109c8b))
- declare `git-path` usable ([`496594d`](https://github.com/Byron/gitoxide/commit/496594d2d8b4216b51cfbd97805834c71c030c75))
@@ -304,7 +361,7 @@ A maintenance release without user-facing changes.
- - 49 commits contributed to the release over the course of 19 calendar days.
+ - 51 commits contributed to the release over the course of 19 calendar days.
- 20 days passed between releases.
- 2 commits were understood as [conventional](https://www.conventionalcommits.org).
- 1 unique issue was worked on: [#301](https://github.com/Byron/gitoxide/issues/301)
@@ -359,6 +416,7 @@ A maintenance release without user-facing changes.
- Fix merge. ([`f2b46df`](https://github.com/Byron/gitoxide/commit/f2b46dfbf73387d4501a7bf5039cb80ac4cb8d9c))
- Merge branch 'main' into git_includeif ([`b1bfc8f`](https://github.com/Byron/gitoxide/commit/b1bfc8fe8efb6d8941f54dddd0fcad99aa13ed6c))
- Add custom tempdir in. ([`8bfd52a`](https://github.com/Byron/gitoxide/commit/8bfd52a65fcecb33ae69917a67c48027f8fb3dff))
+ - Merge branch 'basic-worktree-support' ([`e058bda`](https://github.com/Byron/gitoxide/commit/e058bdabf8449b6a6fdff851e3929137d9b71568))
- thanks clippy ([`a084951`](https://github.com/Byron/gitoxide/commit/a084951c72818d7cb2061053078793213890c899))
- Temp ignore real_path_tests. ([`27f4bfc`](https://github.com/Byron/gitoxide/commit/27f4bfcb2fba45bd02d1977094acb31b7b989cac))
- Windows fix. ([`ce0b408`](https://github.com/Byron/gitoxide/commit/ce0b408fcdeae80d6c9263955f70a00ead3841e1))
@@ -370,8 +428,9 @@ A maintenance release without user-facing changes.
- Use thiserror in `real_path()` ([`2bd7a44`](https://github.com/Byron/gitoxide/commit/2bd7a441beb7e0a86169ec89ca56a8ba448fbf2b))
- input_path is Iterator. ([`c993d78`](https://github.com/Byron/gitoxide/commit/c993d7826fcf76ddaddffca619b4d35555b6636c))
- real_path wip ([`3890a61`](https://github.com/Byron/gitoxide/commit/3890a6149683663b16dccdc3b50e2aab7eb4e048))
+ - Merge branch 'main' into msrv-for-windows ([`7cb1972`](https://github.com/Byron/gitoxide/commit/7cb19729133325bdfacedf44cdc0500cbcf36684))
- make fmt ([`251b6df`](https://github.com/Byron/gitoxide/commit/251b6df5dbdda24b7bdc452085f808f3acef69d8))
- - Merge branch 'git_includeif' of https://github.com/svetli-n/gitoxide into svetli-n-git_includeif ([`0e01da7`](https://github.com/Byron/gitoxide/commit/0e01da74dffedaa46190db6a7b60a2aaff190d81))
+ - Merge branch 'worktree-stack' ([`98da8ba`](https://github.com/Byron/gitoxide/commit/98da8ba52cef8ec27f705fcbc84773e5bacc4e10))
## 0.1.0 (2022-04-28)
diff --git a/git-path/Cargo.toml b/git-path/Cargo.toml
index 9d164b02c1f..08c80a92035 100644
--- a/git-path/Cargo.toml
+++ b/git-path/Cargo.toml
@@ -1,11 +1,11 @@
[package]
name = "git-path"
-version = "0.5.0"
+version = "0.6.0"
repository = "https://github.com/Byron/gitoxide"
license = "MIT/Apache-2.0"
description = "A WIP crate of the gitoxide project dealing paths and their conversions"
authors = ["Sebastian Thiel "]
-edition = "2018"
+edition = "2021"
include = ["src/**/*", "CHANGELOG.md"]
[lib]
diff --git a/git-path/src/convert.rs b/git-path/src/convert.rs
index 2ddbcbbd607..81701438cfb 100644
--- a/git-path/src/convert.rs
+++ b/git-path/src/convert.rs
@@ -220,32 +220,46 @@ pub fn to_windows_separators<'a>(path: impl Into>) -> Cow<'a, BStr
/// Resolve relative components virtually without accessing the file system, e.g. turn `a/./b/c/.././..` into `a`,
/// without keeping intermediate `..` and `/a/../b/..` becomes `/`.
-/// Note that we might access the `current_dir` if we run out of path components to pop off. If unset, we continue
-/// which might lead to an invalid/uninteded path.
-pub fn absolutize<'a>(path: impl Into>, mut current_dir: Option>) -> Cow<'a, Path> {
+///
+/// This is particularly useful when manipulating paths that are based on user input, and not resolving intermediate
+/// symlinks keeps the path similar to what the user provided. If that's not desirable, use `[realpath()][crate::realpath()`
+/// instead.
+///
+/// Note that we might access the `current_dir` if we run out of path components to pop off, which is expected to be absolute
+/// as typical return value of `std::env::current_dir()`.
+/// As a `current_dir` like `/c` can be exhausted by paths like `../../r`, `None` will be returned to indicate the inability
+/// to produce a logically consistent path.
+pub fn absolutize<'a>(path: impl Into>, current_dir: impl AsRef) -> Option> {
use std::path::Component::ParentDir;
let path = path.into();
if !path.components().any(|c| matches!(c, ParentDir)) {
- return path;
+ return Some(path);
}
+ let current_dir = current_dir.as_ref();
+ let mut current_dir_opt = Some(current_dir);
let mut components = path.components();
let mut path = PathBuf::from_iter(components.next());
for component in components {
if let ParentDir = component {
- if path.as_os_str() == "." || (!path.pop() && path.as_os_str().is_empty()) {
- if let Some(cwd) = current_dir.take() {
- path = cwd.into();
- path.pop();
+ let path_was_dot = path == Path::new(".");
+ if !path.pop() {
+ return None;
+ }
+ if path.as_os_str().is_empty() {
+ path.clear();
+ path.push(current_dir_opt.take()?);
+ if path_was_dot && !path.pop() {
+ return None;
}
}
} else {
path.push(component)
}
}
- if path.as_os_str().is_empty() {
+ Some(if path.as_os_str().is_empty() || path == current_dir {
PathBuf::from(".").into()
} else {
path.into()
- }
+ })
}
diff --git a/git-path/tests/convert/absolutize.rs b/git-path/tests/convert/absolutize.rs
index 83d37f517f7..3e5a76ae4c0 100644
--- a/git-path/tests/convert/absolutize.rs
+++ b/git-path/tests/convert/absolutize.rs
@@ -10,7 +10,7 @@ fn p(input: &str) -> &Path {
fn no_change_if_there_are_no_trailing_relative_components() {
for input in ["./a/b/c/d", "/absolute/path", "C:\\hello\\world"] {
let path = p(input);
- assert_eq!(absolutize(path, None::<&Path>), path);
+ assert_eq!(absolutize(path, std::env::current_dir().unwrap()).unwrap(), path);
}
}
@@ -18,37 +18,70 @@ fn no_change_if_there_are_no_trailing_relative_components() {
fn special_cases_around_cwd() -> crate::Result {
let cwd = std::env::current_dir()?;
assert_eq!(
- absolutize(p("./../../.git/modules/src/llvm-project"), Some(&cwd)),
+ absolutize(p("./../../.git/modules/src/llvm-project"), &cwd).unwrap(),
cwd.parent()
.unwrap()
.parent()
.unwrap()
.join(".git/modules/src/llvm-project"),
- ". is handled specifically to not fail to swap in the CWD"
+ "'.' is handled specifically to not fail to swap in the CWD"
);
assert_eq!(
- absolutize(p("a/.."), None::<&Path>),
- p("."),
- "empty paths are never returned as they are invalid"
+ absolutize(&cwd, &cwd).unwrap(),
+ cwd,
+ "absolute inputs yield absolute outputs"
);
assert_eq!(
- absolutize(p("a/../.."), Some(&cwd)),
+ absolutize(p("a/../.."), &cwd).unwrap(),
cwd.parent().expect("parent"),
- "it automatically extends the poppable items by using the current working dir"
+ "it automatically extends the pop-able items by using the current working dir"
);
+ assert_eq!(
+ absolutize(p("a/.."), &cwd).unwrap(),
+ p("."),
+ "absolute CWDs are always shortened…"
+ );
+ assert_eq!(absolutize(p("./a/.."), &cwd).unwrap(), p("."), "…like this as well…");
Ok(())
}
+#[test]
+fn parent_dirs_cause_the_cwd_to_be_used() {
+ assert_eq!(
+ absolutize(p("./a/b/../../.."), "/users/name").unwrap().as_ref(),
+ p("/users")
+ );
+}
+
+#[test]
+fn walking_up_too_much_yield_none() {
+ let cwd = "/users/name";
+ assert_eq!(absolutize(p("./a/b/../../../../../."), cwd), None);
+ assert_eq!(absolutize(p("./a/../../../.."), cwd), None);
+}
+
+#[test]
+fn trailing_directories_after_too_numereous_parent_dirs_yield_none() {
+ assert_eq!(
+ absolutize(p("./a/b/../../../../../actually-invalid"), "/users").as_ref(),
+ None,
+ );
+ assert_eq!(absolutize(p("/a/b/../../.."), "/does-not/matter").as_ref(), None,);
+}
+
#[test]
fn trailing_relative_components_are_resolved() {
+ let cwd = std::env::current_dir().unwrap();
for (input, expected) in [
("./a/b/./c/../d/..", "./a/b"),
+ ("a/./b/c/.././..", "a"),
("/a/b/c/.././../.", "/a"),
("./a/..", "."),
("a/..", "."),
- ("./a/b/../../..", "."),
- ("/a/b/../../..", "/"),
+ ("./a", "./a"),
+ ("./a/./b/..", "./a/."),
("/a/./b/c/.././../.", "/a"),
+ ("/a/./b", "/a/./b"),
("/a/././c/.././../.", "/"),
("/a/b/../c/../..", "/"),
("C:/hello/../a", "C:/a"),
@@ -57,7 +90,7 @@ fn trailing_relative_components_are_resolved() {
] {
let path = p(input);
assert_eq!(
- absolutize(path, None::<&Path>),
+ absolutize(path, &cwd).unwrap_or_else(|| panic!("{path:?}")),
Cow::Borrowed(p(expected)),
"'{}' got an unexpected result",
input
diff --git a/git-pathspec/Cargo.toml b/git-pathspec/Cargo.toml
index 13c689f1ae2..e6dc4b08028 100644
--- a/git-pathspec/Cargo.toml
+++ b/git-pathspec/Cargo.toml
@@ -5,14 +5,14 @@ repository = "https://github.com/Byron/gitoxide"
license = "MIT/Apache-2.0"
description = "A WIP crate of the gitoxide project dealing magical pathspecs"
authors = ["Sebastian Thiel "]
-edition = "2018"
+edition = "2021"
[lib]
doctest = false
[dependencies]
-git-glob = { version = "^0.4.2", path = "../git-glob" }
-git-attributes = { version = "^0.5.0", path = "../git-attributes" }
+git-glob = { version = "^0.5.0", path = "../git-glob" }
+git-attributes = { version = "^0.6.0", path = "../git-attributes" }
bstr = { version = "1.0.1", default-features = false, features = ["std"]}
bitflags = "1.3.2"
diff --git a/git-pathspec/fuzz/Cargo.toml b/git-pathspec/fuzz/Cargo.toml
index 16240362973..650dd5bfe66 100644
--- a/git-pathspec/fuzz/Cargo.toml
+++ b/git-pathspec/fuzz/Cargo.toml
@@ -3,7 +3,7 @@ name = "git-pathspec-fuzz"
version = "0.0.0"
authors = ["Automatically generated"]
publish = false
-edition = "2018"
+edition = "2021"
[package.metadata]
cargo-fuzz = true
diff --git a/git-prompt/CHANGELOG.md b/git-prompt/CHANGELOG.md
index 317ad669255..ebc9d455593 100644
--- a/git-prompt/CHANGELOG.md
+++ b/git-prompt/CHANGELOG.md
@@ -5,6 +5,42 @@ 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.2.0 (2022-11-21)
+
+### New Features (BREAKING)
+
+ - upgrade edition to 2021 in most crates.
+ MSRV for this is 1.56, and we are now at 1.60 so should be compatible.
+ This isn't more than a patch release as it should break nobody
+ who is adhering to the MSRV, but let's be careful and mark it
+ breaking.
+
+ Note that `git-features` and `git-pack` are still on edition 2018
+ as they make use of a workaround to support (safe) mutable access
+ to non-overlapping entries in a slice which doesn't work anymore
+ in edition 2021.
+
+### Commit Statistics
+
+
+
+ - 3 commits contributed to the release over the course of 2 calendar days.
+ - 14 days passed between releases.
+ - 1 commit was understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+
+
+view details
+
+ * **Uncategorized**
+ - prepare changelogs prior to release ([`e4648f8`](https://github.com/Byron/gitoxide/commit/e4648f827c97e9d13636d1bbdc83dd63436e6e5c))
+ - Merge branch 'version2021' ([`0e4462d`](https://github.com/Byron/gitoxide/commit/0e4462df7a5166fe85c23a779462cdca8ee013e8))
+ - upgrade edition to 2021 in most crates. ([`3d8fa8f`](https://github.com/Byron/gitoxide/commit/3d8fa8fef9800b1576beab8a5bc39b821157a5ed))
+
+
## 0.1.1 (2022-11-06)
A maintenance release without user-facing changes.
@@ -13,7 +49,7 @@ A maintenance release without user-facing changes.
- - 4 commits contributed to the release over the course of 47 calendar days.
+ - 5 commits contributed to the release over the course of 47 calendar days.
- 47 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
@@ -31,6 +67,7 @@ A maintenance release without user-facing changes.
view details
* **Uncategorized**
+ - Release git-features v0.23.1, git-glob v0.4.1, git-config-value v0.8.1, git-tempfile v2.0.6, git-object v0.22.1, git-ref v0.18.0, git-sec v0.4.2, git-config v0.10.0, git-prompt v0.1.1, git-url v0.10.1, git-credentials v0.6.1, git-diff v0.21.0, git-discover v0.7.0, git-index v0.7.0, git-pack v0.25.0, git-odb v0.35.0, git-transport v0.21.1, git-protocol v0.22.0, git-refspec v0.3.1, git-worktree v0.7.0, git-repository v0.26.0, git-commitgraph v0.10.0, gitoxide-core v0.19.0, gitoxide v0.17.0, safety bump 9 crates ([`d071583`](https://github.com/Byron/gitoxide/commit/d071583c5576fdf5f7717765ffed5681792aa81f))
- prepare changelogs prior to release ([`423af90`](https://github.com/Byron/gitoxide/commit/423af90c8202d62dc1ea4a76a0df6421d1f0aa06))
- Merge branch 'main' into write-sparse-index (upgrade to Rust 1.65) ([`5406630`](https://github.com/Byron/gitoxide/commit/5406630466145990b5adbdadb59151036993060d))
- thanks clippy ([`04cfa63`](https://github.com/Byron/gitoxide/commit/04cfa635a65ae34ad6d22391f2febd2ca7eabca9))
diff --git a/git-prompt/Cargo.toml b/git-prompt/Cargo.toml
index 46e3a5ff517..7cfe5b4708c 100644
--- a/git-prompt/Cargo.toml
+++ b/git-prompt/Cargo.toml
@@ -1,19 +1,19 @@
[package]
name = "git-prompt"
-version = "0.1.1"
+version = "0.2.0"
repository = "https://github.com/Byron/gitoxide"
license = "MIT/Apache-2.0"
description = "A crate of the gitoxide project for handling prompts in the terminal"
authors = ["Sebastian Thiel "]
-edition = "2018"
+edition = "2021"
include = ["src/**/*", "README.md", "CHANGELOG.md"]
[lib]
doctest = false
[dependencies]
-git-command = { version = "^0.1.0", path = "../git-command" }
-git-config-value = { version = "^0.8.1", path = "../git-config-value" }
+git-command = { version = "^0.2.0", path = "../git-command" }
+git-config-value = { version = "^0.9.0", path = "../git-config-value" }
thiserror = "1.0.32"
parking_lot = "0.12.1"
diff --git a/git-protocol/CHANGELOG.md b/git-protocol/CHANGELOG.md
index 55dc58dab2a..df8876a36da 100644
--- a/git-protocol/CHANGELOG.md
+++ b/git-protocol/CHANGELOG.md
@@ -5,6 +5,42 @@ 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.24.0 (2022-11-21)
+
+### New Features (BREAKING)
+
+ - upgrade edition to 2021 in most crates.
+ MSRV for this is 1.56, and we are now at 1.60 so should be compatible.
+ This isn't more than a patch release as it should break nobody
+ who is adhering to the MSRV, but let's be careful and mark it
+ breaking.
+
+ Note that `git-features` and `git-pack` are still on edition 2018
+ as they make use of a workaround to support (safe) mutable access
+ to non-overlapping entries in a slice which doesn't work anymore
+ in edition 2021.
+
+### Commit Statistics
+
+
+
+ - 3 commits contributed to the release over the course of 2 calendar days.
+ - 4 days passed between releases.
+ - 1 commit was understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+
+
+view details
+
+ * **Uncategorized**
+ - prepare changelogs prior to release ([`e4648f8`](https://github.com/Byron/gitoxide/commit/e4648f827c97e9d13636d1bbdc83dd63436e6e5c))
+ - Merge branch 'version2021' ([`0e4462d`](https://github.com/Byron/gitoxide/commit/0e4462df7a5166fe85c23a779462cdca8ee013e8))
+ - upgrade edition to 2021 in most crates. ([`3d8fa8f`](https://github.com/Byron/gitoxide/commit/3d8fa8fef9800b1576beab8a5bc39b821157a5ed))
+
+
## 0.23.0 (2022-11-17)
### New Features
@@ -49,7 +85,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- - 19 commits contributed to the release over the course of 8 calendar days.
+ - 20 commits contributed to the release over the course of 8 calendar days.
- 10 days passed between releases.
- 8 commits were understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
@@ -61,6 +97,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details
* **Uncategorized**
+ - Release git-glob v0.4.2, git-config-value v0.8.2, git-lock v2.2.0, git-ref v0.19.0, git-config v0.11.0, git-discover v0.8.0, git-index v0.8.0, git-transport v0.22.0, git-protocol v0.23.0, git-worktree v0.8.0, git-repository v0.28.0, gitoxide-core v0.20.0, gitoxide v0.18.0, safety bump 9 crates ([`0c253b1`](https://github.com/Byron/gitoxide/commit/0c253b15143dcedfe4c66d64ab1ea6e097030651))
- prepare changelogs prior to release ([`fe5721f`](https://github.com/Byron/gitoxide/commit/fe5721f888c64c79fe9a734a9e33b94a282f8d97))
- Merge branch 'http-config' ([`665b53e`](https://github.com/Byron/gitoxide/commit/665b53e1c2e1de65fafa28b669f58977868bbc81))
- fix docs ([`b5c316e`](https://github.com/Byron/gitoxide/commit/b5c316e285369a84e57ec6f7425b92fec2978a49))
diff --git a/git-protocol/Cargo.toml b/git-protocol/Cargo.toml
index 841d68fc5d9..d6f177f5b33 100644
--- a/git-protocol/Cargo.toml
+++ b/git-protocol/Cargo.toml
@@ -1,11 +1,11 @@
[package]
name = "git-protocol"
-version = "0.23.0"
+version = "0.24.0"
repository = "https://github.com/Byron/gitoxide"
license = "MIT/Apache-2.0"
description = "A WIP crate of the gitoxide project for implementing git protocols"
authors = ["Sebastian Thiel "]
-edition = "2018"
+edition = "2021"
include = ["src/**/*", "CHANGELOG.md", "!**/tests/**/*"]
[lib]
@@ -39,10 +39,10 @@ path = "tests/async-protocol.rs"
required-features = ["async-client"]
[dependencies]
-git-features = { version = "^0.23.1", path = "../git-features", features = ["progress"] }
-git-transport = { version = "^0.22.0", path = "../git-transport" }
-git-hash = { version = "^0.9.11", path = "../git-hash" }
-git-credentials = { version = "^0.6.1", path = "../git-credentials" }
+git-features = { version = "^0.24.0", path = "../git-features", features = ["progress"] }
+git-transport = { version = "^0.23.0", path = "../git-transport" }
+git-hash = { version = "^0.10.0", path = "../git-hash" }
+git-credentials = { version = "^0.7.0", path = "../git-credentials" }
thiserror = "1.0.32"
serde = { version = "1.0.114", optional = true, default-features = false, features = ["derive"]}
@@ -60,7 +60,7 @@ document-features = { version = "0.2.0", optional = true }
[dev-dependencies]
async-std = { version = "1.9.0", features = ["attributes"] }
-git-packetline = { path = "../git-packetline" ,version = "^0.13.1" }
+git-packetline = { path = "../git-packetline" ,version = "^0.14.0" }
git-testtools = { path = "../tests/tools" }
[package.metadata.docs.rs]
diff --git a/git-protocol/src/command/mod.rs b/git-protocol/src/command/mod.rs
index bfe4657891e..08392033748 100644
--- a/git-protocol/src/command/mod.rs
+++ b/git-protocol/src/command/mod.rs
@@ -1,7 +1,8 @@
//! V2 command abstraction to validate invocations and arguments, like a database of what we know about them.
-use super::Command;
use std::borrow::Cow;
+use super::Command;
+
/// A key value pair of values known at compile time.
pub type Feature = (&'static str, Option>);
diff --git a/git-protocol/src/command/tests.rs b/git-protocol/src/command/tests.rs
index c7ced620031..b921fda2eac 100644
--- a/git-protocol/src/command/tests.rs
+++ b/git-protocol/src/command/tests.rs
@@ -8,8 +8,10 @@ mod v1 {
const GITHUB_CAPABILITIES: &str = "multi_ack thin-pack side-band ofs-delta shallow deepen-since deepen-not deepen-relative no-progress include-tag allow-tip-sha1-in-want allow-reachable-sha1-in-want no-done symref=HEAD:refs/heads/main filter agent=git/github-gdf51a71f0236";
mod fetch {
mod default_features {
- use crate::command::tests::v1::{capabilities, GITHUB_CAPABILITIES};
- use crate::Command;
+ use crate::{
+ command::tests::v1::{capabilities, GITHUB_CAPABILITIES},
+ Command,
+ };
#[test]
fn it_chooses_the_best_multi_ack_and_sideband() {
@@ -57,8 +59,7 @@ mod v2 {
mod fetch {
mod default_features {
- use crate::command::tests::v2::capabilities;
- use crate::Command;
+ use crate::{command::tests::v2::capabilities, Command};
#[test]
fn all_features() {
@@ -78,8 +79,7 @@ mod v2 {
mod initial_arguments {
use bstr::ByteSlice;
- use crate::command::tests::v2::capabilities;
- use crate::Command;
+ use crate::{command::tests::v2::capabilities, Command};
#[test]
fn for_all_features() {
@@ -99,8 +99,7 @@ mod v2 {
mod ls_refs {
mod default_features {
- use crate::command::tests::v2::capabilities;
- use crate::Command;
+ use crate::{command::tests::v2::capabilities, Command};
#[test]
fn default_as_there_are_no_features() {
@@ -117,8 +116,7 @@ mod v2 {
mod validate {
use bstr::ByteSlice;
- use crate::command::tests::v2::capabilities;
- use crate::Command;
+ use crate::{command::tests::v2::capabilities, Command};
#[test]
fn ref_prefixes_can_always_be_used() {
diff --git a/git-protocol/src/fetch/arguments/async_io.rs b/git-protocol/src/fetch/arguments/async_io.rs
index 222fc45fab0..433e59bdce0 100644
--- a/git-protocol/src/fetch/arguments/async_io.rs
+++ b/git-protocol/src/fetch/arguments/async_io.rs
@@ -1,8 +1,7 @@
use futures_lite::io::AsyncWriteExt;
use git_transport::{client, client::TransportV2Ext};
-use crate::fetch::Arguments;
-use crate::Command;
+use crate::{fetch::Arguments, Command};
impl Arguments {
/// Send fetch arguments to the server, and indicate this is the end of negotiations only if `add_done_argument` is present.
diff --git a/git-protocol/src/fetch/arguments/blocking_io.rs b/git-protocol/src/fetch/arguments/blocking_io.rs
index 159f66c7694..71895244df8 100644
--- a/git-protocol/src/fetch/arguments/blocking_io.rs
+++ b/git-protocol/src/fetch/arguments/blocking_io.rs
@@ -2,8 +2,7 @@ use std::io::Write;
use git_transport::{client, client::TransportV2Ext};
-use crate::fetch::Arguments;
-use crate::Command;
+use crate::{fetch::Arguments, Command};
impl Arguments {
/// Send fetch arguments to the server, and indicate this is the end of negotiations only if `add_done_argument` is present.
diff --git a/git-protocol/src/fetch/delegate.rs b/git-protocol/src/fetch/delegate.rs
index 54f91f37184..1995026bdac 100644
--- a/git-protocol/src/fetch/delegate.rs
+++ b/git-protocol/src/fetch/delegate.rs
@@ -1,5 +1,5 @@
-use std::borrow::Cow;
use std::{
+ borrow::Cow,
io,
ops::{Deref, DerefMut},
};
@@ -7,8 +7,10 @@ use std::{
use bstr::BString;
use git_transport::client::Capabilities;
-use crate::fetch::{Arguments, Response};
-use crate::handshake::Ref;
+use crate::{
+ fetch::{Arguments, Response},
+ handshake::Ref,
+};
/// Defines what to do next after certain [`Delegate`] operations.
#[derive(PartialEq, Eq, Debug, Hash, Ord, PartialOrd, Clone, Copy)]
@@ -183,8 +185,10 @@ mod blocking_io {
use git_features::progress::Progress;
- use crate::fetch::{DelegateBlocking, Response};
- use crate::handshake::Ref;
+ use crate::{
+ fetch::{DelegateBlocking, Response},
+ handshake::Ref,
+ };
/// The protocol delegate is the bare minimal interface needed to fully control the [`fetch`][crate::fetch()] operation.
///
@@ -244,8 +248,10 @@ mod async_io {
use futures_io::AsyncBufRead;
use git_features::progress::Progress;
- use crate::fetch::{DelegateBlocking, Response};
- use crate::handshake::Ref;
+ use crate::{
+ fetch::{DelegateBlocking, Response},
+ handshake::Ref,
+ };
/// The protocol delegate is the bare minimal interface needed to fully control the [`fetch`][crate::fetch()] operation.
///
@@ -301,6 +307,7 @@ mod async_io {
}
}
}
-use crate::ls_refs;
#[cfg(feature = "async-client")]
pub use async_io::Delegate;
+
+use crate::ls_refs;
diff --git a/git-protocol/src/fetch/error.rs b/git-protocol/src/fetch/error.rs
index 349f21dc7e8..2552a3c7518 100644
--- a/git-protocol/src/fetch/error.rs
+++ b/git-protocol/src/fetch/error.rs
@@ -2,8 +2,7 @@ use std::io;
use git_transport::client;
-use crate::fetch::response;
-use crate::{handshake, ls_refs};
+use crate::{fetch::response, handshake, ls_refs};
/// The error used in [`fetch()`][crate::fetch()].
#[derive(Debug, thiserror::Error)]
diff --git a/git-protocol/src/fetch/handshake.rs b/git-protocol/src/fetch/handshake.rs
index 9e4a2f64f5f..b7b99137dfc 100644
--- a/git-protocol/src/fetch/handshake.rs
+++ b/git-protocol/src/fetch/handshake.rs
@@ -1,10 +1,12 @@
-use crate::credentials;
use git_features::progress::Progress;
use git_transport::{client, Service};
-
-use crate::handshake::{Error, Outcome};
use maybe_async::maybe_async;
+use crate::{
+ credentials,
+ handshake::{Error, Outcome},
+};
+
/// Perform a handshake with the server on the other side of `transport`, with `authenticate` being used if authentication
/// turns out to be required. `extra_parameters` are the parameters `(name, optional value)` to add to the handshake,
/// each time it is performed in case authentication is required.
diff --git a/git-protocol/src/fetch/tests/arguments.rs b/git-protocol/src/fetch/tests/arguments.rs
index 60c56a1344b..334e571ab15 100644
--- a/git-protocol/src/fetch/tests/arguments.rs
+++ b/git-protocol/src/fetch/tests/arguments.rs
@@ -18,13 +18,14 @@ struct Transport {
#[cfg(feature = "blocking-client")]
mod impls {
+ use std::borrow::Cow;
+
use bstr::BStr;
use git_transport::{
client,
client::{Error, MessageKind, RequestWriter, SetServiceResponse, WriteMode},
Protocol, Service,
};
- use std::borrow::Cow;
use crate::fetch::tests::arguments::Transport;
@@ -70,6 +71,8 @@ mod impls {
#[cfg(feature = "async-client")]
mod impls {
+ use std::borrow::Cow;
+
use async_trait::async_trait;
use bstr::BStr;
use git_transport::{
@@ -77,7 +80,6 @@ mod impls {
client::{Error, MessageKind, RequestWriter, SetServiceResponse, WriteMode},
Protocol, Service,
};
- use std::borrow::Cow;
use crate::fetch::tests::arguments::Transport;
impl client::TransportWithoutIO for Transport {
diff --git a/git-protocol/src/fetch_fn.rs b/git-protocol/src/fetch_fn.rs
index 0976566afae..c53a1c5fb57 100644
--- a/git-protocol/src/fetch_fn.rs
+++ b/git-protocol/src/fetch_fn.rs
@@ -1,7 +1,8 @@
+use std::borrow::Cow;
+
use git_features::progress::Progress;
use git_transport::client;
use maybe_async::maybe_async;
-use std::borrow::Cow;
use crate::{
credentials,
diff --git a/git-protocol/src/handshake/refs/mod.rs b/git-protocol/src/handshake/refs/mod.rs
index 2ed210ab5aa..5eeabf6d3d5 100644
--- a/git-protocol/src/handshake/refs/mod.rs
+++ b/git-protocol/src/handshake/refs/mod.rs
@@ -1,6 +1,7 @@
-use super::Ref;
use bstr::BStr;
+use super::Ref;
+
///
pub mod parse {
use bstr::BString;
diff --git a/git-protocol/src/ls_refs.rs b/git-protocol/src/ls_refs.rs
index 22c5ed1e304..9a7e84955b5 100644
--- a/git-protocol/src/ls_refs.rs
+++ b/git-protocol/src/ls_refs.rs
@@ -28,16 +28,18 @@ pub enum Action {
}
pub(crate) mod function {
+ use std::borrow::Cow;
+
use bstr::BString;
use git_features::progress::Progress;
use git_transport::client::{Capabilities, Transport, TransportV2Ext};
use maybe_async::maybe_async;
- use std::borrow::Cow;
use super::{Action, Error};
- use crate::handshake::{refs::from_v2_refs, Ref};
- use crate::indicate_end_of_interaction;
- use crate::Command;
+ use crate::{
+ handshake::{refs::from_v2_refs, Ref},
+ indicate_end_of_interaction, Command,
+ };
/// Invoke an ls-refs V2 command on `transport`, which requires a prior handshake that yielded
/// server `capabilities`. `prepare_ls_refs(capabilities, arguments, features)` can be used to alter the _ls-refs_. `progress` is used to provide feedback.
diff --git a/git-protocol/tests/fetch/mod.rs b/git-protocol/tests/fetch/mod.rs
index f84355dc3f7..0ba18fb94c7 100644
--- a/git-protocol/tests/fetch/mod.rs
+++ b/git-protocol/tests/fetch/mod.rs
@@ -1,9 +1,10 @@
-use std::borrow::Cow;
-use std::io;
+use std::{borrow::Cow, io};
use bstr::{BString, ByteSlice};
-use git_protocol::fetch::{self, Action, Arguments, Response};
-use git_protocol::{handshake, ls_refs};
+use git_protocol::{
+ fetch::{self, Action, Arguments, Response},
+ handshake, ls_refs,
+};
use git_transport::client::Capabilities;
use crate::fixture_bytes;
@@ -149,8 +150,7 @@ mod blocking_io {
use std::io;
use git_features::progress::Progress;
- use git_protocol::handshake::Ref;
- use git_protocol::{fetch, fetch::Response, handshake};
+ use git_protocol::{fetch, fetch::Response, handshake, handshake::Ref};
use crate::fetch::{CloneDelegate, CloneRefInWantDelegate, LsRemoteDelegate};
@@ -206,8 +206,7 @@ mod async_io {
use async_trait::async_trait;
use futures_io::AsyncBufRead;
use git_features::progress::Progress;
- use git_protocol::handshake::Ref;
- use git_protocol::{fetch, fetch::Response, handshake};
+ use git_protocol::{fetch, fetch::Response, handshake, handshake::Ref};
use crate::fetch::{CloneDelegate, CloneRefInWantDelegate, LsRemoteDelegate};
diff --git a/git-quote/CHANGELOG.md b/git-quote/CHANGELOG.md
index fcf6167ea61..91bff28ce5a 100644
--- a/git-quote/CHANGELOG.md
+++ b/git-quote/CHANGELOG.md
@@ -5,6 +5,43 @@ 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.4.0 (2022-11-21)
+
+### New Features (BREAKING)
+
+ - upgrade edition to 2021 in most crates.
+ MSRV for this is 1.56, and we are now at 1.60 so should be compatible.
+ This isn't more than a patch release as it should break nobody
+ who is adhering to the MSRV, but let's be careful and mark it
+ breaking.
+
+ Note that `git-features` and `git-pack` are still on edition 2018
+ as they make use of a workaround to support (safe) mutable access
+ to non-overlapping entries in a slice which doesn't work anymore
+ in edition 2021.
+
+### Commit Statistics
+
+
+
+ - 4 commits contributed to the release over the course of 62 calendar days.
+ - 62 days passed between releases.
+ - 1 commit was understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+
+
+view details
+
+ * **Uncategorized**
+ - prepare changelogs prior to release ([`e4648f8`](https://github.com/Byron/gitoxide/commit/e4648f827c97e9d13636d1bbdc83dd63436e6e5c))
+ - Merge branch 'version2021' ([`0e4462d`](https://github.com/Byron/gitoxide/commit/0e4462df7a5166fe85c23a779462cdca8ee013e8))
+ - upgrade edition to 2021 in most crates. ([`3d8fa8f`](https://github.com/Byron/gitoxide/commit/3d8fa8fef9800b1576beab8a5bc39b821157a5ed))
+ - Merge branch 'diff' ([`25a7726`](https://github.com/Byron/gitoxide/commit/25a7726377fbe400ea3c4927d04e9dec99802b7b))
+
+
## 0.3.0 (2022-09-20)
### Changed (BREAKING)
@@ -15,7 +52,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- - 2 commits contributed to the release over the course of 7 calendar days.
+ - 6 commits contributed to the release over the course of 27 calendar days.
- 27 days passed between releases.
- 1 commit was understood as [conventional](https://www.conventionalcommits.org).
- 2 unique issues were worked on: [#450](https://github.com/Byron/gitoxide/issues/450), [#470](https://github.com/Byron/gitoxide/issues/470)
@@ -30,6 +67,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- upgrade `bstr` to `1.0.1` ([`99905ba`](https://github.com/Byron/gitoxide/commit/99905bacace8aed42b16d43f0f04cae996cb971c))
* **[#470](https://github.com/Byron/gitoxide/issues/470)**
- update changelogs prior to release ([`caa7a1b`](https://github.com/Byron/gitoxide/commit/caa7a1bdef74d7d3166a7e38127a59f5ab3cfbdd))
+ * **Uncategorized**
+ - Release git-hash v0.9.10, git-features v0.22.5, git-date v0.2.0, git-actor v0.12.0, git-glob v0.4.0, git-path v0.5.0, git-quote v0.3.0, git-attributes v0.4.0, git-config-value v0.8.0, git-tempfile v2.0.5, git-validate v0.6.0, git-object v0.21.0, git-ref v0.16.0, git-sec v0.4.0, git-config v0.8.0, git-discover v0.5.0, git-traverse v0.17.0, git-index v0.5.0, git-worktree v0.5.0, git-testtools v0.9.0, git-command v0.1.0, git-prompt v0.1.0, git-url v0.9.0, git-credentials v0.5.0, git-diff v0.19.0, git-mailmap v0.4.0, git-chunk v0.3.2, git-pack v0.23.0, git-odb v0.33.0, git-packetline v0.13.0, git-transport v0.20.0, git-protocol v0.20.0, git-revision v0.5.0, git-refspec v0.2.0, git-repository v0.24.0, git-commitgraph v0.9.0, gitoxide-core v0.18.0, gitoxide v0.16.0, safety bump 28 crates ([`29a043b`](https://github.com/Byron/gitoxide/commit/29a043be6808a3e9199a9b26bd076fe843afe4f4))
+ - Merge branch 'filter-refs' ([`fd14489`](https://github.com/Byron/gitoxide/commit/fd14489f729172d615d0fa1e8dbd605e9eacf69d))
+ - Merge branch 'main' into index-from-tree ([`bc64b96`](https://github.com/Byron/gitoxide/commit/bc64b96a2ec781c72d1d4daad38aa7fb8b74f99b))
+ - Merge branch 'main' into filter-refs-by-spec ([`cfa1440`](https://github.com/Byron/gitoxide/commit/cfa144031dbcac2707ab0cec012bc35e78f9c475))
## 0.2.1 (2022-08-24)
@@ -46,10 +88,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- - 4 commits contributed to the release over the course of 3 calendar days.
+ - 5 commits contributed to the release over the course of 3 calendar days.
- 142 days passed between releases.
- 2 commits were understood as [conventional](https://www.conventionalcommits.org).
- - 0 issues like '(#ID)' where seen in commit messages
+ - 0 issues like '(#ID)' were seen in commit messages
### Commit Details
@@ -59,7 +101,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
* **Uncategorized**
- Release git-date v0.0.5, git-hash v0.9.8, git-features v0.22.2, git-actor v0.11.3, git-glob v0.3.2, git-quote v0.2.1, git-attributes v0.3.2, git-tempfile v2.0.4, git-lock v2.1.1, git-validate v0.5.5, git-object v0.20.2, git-ref v0.15.2, git-sec v0.3.1, git-config v0.7.0, git-credentials v0.4.0, git-diff v0.17.2, git-discover v0.4.1, git-bitmap v0.1.2, git-index v0.4.2, git-mailmap v0.3.2, git-chunk v0.3.1, git-traverse v0.16.2, git-pack v0.21.2, git-odb v0.31.2, git-packetline v0.12.7, git-url v0.7.2, git-transport v0.19.2, git-protocol v0.19.0, git-revision v0.4.2, git-refspec v0.1.0, git-worktree v0.4.2, git-repository v0.22.0, safety bump 4 crates ([`4974eca`](https://github.com/Byron/gitoxide/commit/4974eca96d525d1ee4f8cad79bb713af7a18bf9d))
- - Merge branch 'example-new-repo' ([`946dd3a`](https://github.com/Byron/gitoxide/commit/946dd3a80522ef437e09528a93aa1433f01b0ee8))
+ - Merge branch 'main' into remote-ls-refs ([`e2ee3de`](https://github.com/Byron/gitoxide/commit/e2ee3ded97e5c449933712883535b30d151c7c78))
+ - Merge branch 'docsrs-show-features' ([`31c2351`](https://github.com/Byron/gitoxide/commit/31c235140cad212d16a56195763fbddd971d87ce))
- uniformize deny attributes ([`f7f136d`](https://github.com/Byron/gitoxide/commit/f7f136dbe4f86e7dee1d54835c420ec07c96cd78))
- remove default link to cargo doc everywhere ([`533e887`](https://github.com/Byron/gitoxide/commit/533e887e80c5f7ede8392884562e1c5ba56fb9a8))
@@ -75,7 +118,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- - 4 commits contributed to the release over the course of 9 calendar days.
+ - 3 commits contributed to the release over the course of 9 calendar days.
- 9 days passed between releases.
- 1 commit was understood as [conventional](https://www.conventionalcommits.org).
- 1 unique issue was worked on: [#301](https://github.com/Byron/gitoxide/issues/301)
@@ -91,7 +134,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- validate out-of-quote portions can be passed ([`22c776b`](https://github.com/Byron/gitoxide/commit/22c776badd1ea26a2b1ece84fd8c551784c72212))
* **Uncategorized**
- Release git-diff v0.14.0, git-bitmap v0.1.0, git-index v0.2.0, git-tempfile v2.0.1, git-lock v2.0.0, git-mailmap v0.1.0, git-traverse v0.13.0, git-pack v0.17.0, git-quote v0.2.0, git-odb v0.27.0, git-packetline v0.12.4, git-url v0.4.0, git-transport v0.16.0, git-protocol v0.15.0, git-ref v0.12.0, git-worktree v0.1.0, git-repository v0.15.0, cargo-smart-release v0.9.0, safety bump 5 crates ([`e58dc30`](https://github.com/Byron/gitoxide/commit/e58dc3084cf17a9f618ae3a6554a7323e44428bf))
- - Merge branch 'describe-rev' ([`77b7cd9`](https://github.com/Byron/gitoxide/commit/77b7cd9a7813aaa1a15d035ea42c1e3fe4eef8dd))
## 0.1.0 (2022-03-24)
diff --git a/git-quote/Cargo.toml b/git-quote/Cargo.toml
index 77cb5232565..f7ed731933c 100644
--- a/git-quote/Cargo.toml
+++ b/git-quote/Cargo.toml
@@ -1,11 +1,11 @@
[package]
name = "git-quote"
-version = "0.3.0"
+version = "0.4.0"
repository = "https://github.com/Byron/gitoxide"
license = "MIT/Apache-2.0"
description = "A WIP crate of the gitoxide project dealing with various quotations used by git"
authors = ["Sebastian Thiel "]
-edition = "2018"
+edition = "2021"
[lib]
doctest = false
diff --git a/git-rebase/Cargo.toml b/git-rebase/Cargo.toml
index c66b92f378a..c93a448649d 100644
--- a/git-rebase/Cargo.toml
+++ b/git-rebase/Cargo.toml
@@ -5,7 +5,7 @@ repository = "https://github.com/Byron/gitoxide"
license = "MIT/Apache-2.0"
description = "A WIP crate of the gitoxide project dealing rebases"
authors = ["Sebastian Thiel "]
-edition = "2018"
+edition = "2021"
[lib]
doctest = false
diff --git a/git-ref/CHANGELOG.md b/git-ref/CHANGELOG.md
index 450172308cf..110b7eb16e9 100644
--- a/git-ref/CHANGELOG.md
+++ b/git-ref/CHANGELOG.md
@@ -5,6 +5,42 @@ 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.20.0 (2022-11-21)
+
+### New Features (BREAKING)
+
+ - upgrade edition to 2021 in most crates.
+ MSRV for this is 1.56, and we are now at 1.60 so should be compatible.
+ This isn't more than a patch release as it should break nobody
+ who is adhering to the MSRV, but let's be careful and mark it
+ breaking.
+
+ Note that `git-features` and `git-pack` are still on edition 2018
+ as they make use of a workaround to support (safe) mutable access
+ to non-overlapping entries in a slice which doesn't work anymore
+ in edition 2021.
+
+### Commit Statistics
+
+
+
+ - 3 commits contributed to the release over the course of 2 calendar days.
+ - 4 days passed between releases.
+ - 1 commit was understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+
+
+view details
+
+ * **Uncategorized**
+ - prepare changelogs prior to release ([`e4648f8`](https://github.com/Byron/gitoxide/commit/e4648f827c97e9d13636d1bbdc83dd63436e6e5c))
+ - Merge branch 'version2021' ([`0e4462d`](https://github.com/Byron/gitoxide/commit/0e4462df7a5166fe85c23a779462cdca8ee013e8))
+ - upgrade edition to 2021 in most crates. ([`3d8fa8f`](https://github.com/Byron/gitoxide/commit/3d8fa8fef9800b1576beab8a5bc39b821157a5ed))
+
+
## 0.19.0 (2022-11-17)
### New Features
@@ -49,7 +85,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- - 18 commits contributed to the release over the course of 1 calendar day.
+ - 19 commits contributed to the release over the course of 1 calendar day.
- 10 days passed between releases.
- 6 commits were understood as [conventional](https://www.conventionalcommits.org).
- 1 unique issue was worked on: [#595](https://github.com/Byron/gitoxide/issues/595)
@@ -77,6 +113,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- `file::Transaction::rollback()` allows to explicitly roll back a pending change. ([`e86e159`](https://github.com/Byron/gitoxide/commit/e86e159e00c9b54803abbfa09809707be7ac8aee))
- higher performance for edits which would write the same value. ([`bbdb480`](https://github.com/Byron/gitoxide/commit/bbdb4804d8c3bd6a1fb8bea97adce509c90c5ca8))
* **Uncategorized**
+ - Release git-glob v0.4.2, git-config-value v0.8.2, git-lock v2.2.0, git-ref v0.19.0, git-config v0.11.0, git-discover v0.8.0, git-index v0.8.0, git-transport v0.22.0, git-protocol v0.23.0, git-worktree v0.8.0, git-repository v0.28.0, gitoxide-core v0.20.0, gitoxide v0.18.0, safety bump 9 crates ([`0c253b1`](https://github.com/Byron/gitoxide/commit/0c253b15143dcedfe4c66d64ab1ea6e097030651))
- prepare changelogs prior to release ([`fe5721f`](https://github.com/Byron/gitoxide/commit/fe5721f888c64c79fe9a734a9e33b94a282f8d97))
- Merge branch 'http-config' ([`665b53e`](https://github.com/Byron/gitoxide/commit/665b53e1c2e1de65fafa28b669f58977868bbc81))
- Don't assert on state that is based on a transaction that isn't committed ([`00f6f7a`](https://github.com/Byron/gitoxide/commit/00f6f7a2d056d150306817b3563470173a091b4c))
diff --git a/git-ref/Cargo.toml b/git-ref/Cargo.toml
index 7dddb961637..9e93c843f25 100644
--- a/git-ref/Cargo.toml
+++ b/git-ref/Cargo.toml
@@ -1,11 +1,11 @@
[package]
name = "git-ref"
-version = "0.19.0"
+version = "0.20.0"
repository = "https://github.com/Byron/gitoxide"
license = "MIT/Apache-2.0"
description = "A crate to handle git references"
authors = ["Sebastian Thiel "]
-edition = "2018"
+edition = "2021"
include = ["src/**/*"]
[lib]
@@ -23,14 +23,14 @@ path = "tests/refs-parallel.rs"
required-features = ["internal-testing-git-features-parallel"]
[dependencies]
-git-features = { version = "^0.23.1", path = "../git-features", features = ["walkdir"]}
-git-path = { version = "^0.5.0", path = "../git-path" }
-git-hash = { version = "^0.9.11", path = "../git-hash" }
-git-object = { version = "^0.22.1", path = "../git-object" }
-git-validate = { version = "^0.6.0", path = "../git-validate" }
-git-actor = { version = "^0.13.0", path = "../git-actor" }
-git-lock = { version = "^2.0.0", path = "../git-lock" }
-git-tempfile = { version = "^2.0.0", path = "../git-tempfile" }
+git-features = { version = "^0.24.0", path = "../git-features", features = ["walkdir"]}
+git-path = { version = "^0.6.0", path = "../git-path" }
+git-hash = { version = "^0.10.0", path = "../git-hash" }
+git-object = { version = "^0.23.0", path = "../git-object" }
+git-validate = { version = "^0.7.0", path = "../git-validate" }
+git-actor = { version = "^0.14.0", path = "../git-actor" }
+git-lock = { version = "^3.0.0", path = "../git-lock" }
+git-tempfile = { version = "^3.0.0", path = "../git-tempfile" }
thiserror = "1.0.34"
nom = { version = "7", default-features = false, features = ["std"]}
diff --git a/git-ref/src/store/file/transaction/mod.rs b/git-ref/src/store/file/transaction/mod.rs
index 9eefb78700f..39ae6e7cf57 100644
--- a/git-ref/src/store/file/transaction/mod.rs
+++ b/git-ref/src/store/file/transaction/mod.rs
@@ -1,6 +1,7 @@
+use std::fmt::Formatter;
+
use git_hash::ObjectId;
use git_object::bstr::BString;
-use std::fmt::Formatter;
use crate::{
store_impl::{file, file::Transaction},
diff --git a/git-ref/src/store/file/transaction/prepare.rs b/git-ref/src/store/file/transaction/prepare.rs
index 938f6521471..8e981ce1790 100644
--- a/git-ref/src/store/file/transaction/prepare.rs
+++ b/git-ref/src/store/file/transaction/prepare.rs
@@ -1,5 +1,6 @@
use crate::{
packed,
+ packed::transaction::buffer_into_transaction,
store_impl::{
file,
file::{
@@ -8,12 +9,10 @@ use crate::{
Transaction,
},
},
- transaction::{Change, LogChange, RefEdit, RefEditsExt, RefLog},
+ transaction::{Change, LogChange, PreviousValue, RefEdit, RefEditsExt, RefLog},
FullName, FullNameRef, Reference, Target,
};
-use crate::{packed::transaction::buffer_into_transaction, transaction::PreviousValue};
-
impl<'s, 'p> Transaction<'s, 'p> {
fn lock_ref_and_apply_change(
store: &file::Store,
diff --git a/git-ref/src/store/packed/transaction.rs b/git-ref/src/store/packed/transaction.rs
index 1ec11381f42..43951c5b3f1 100644
--- a/git-ref/src/store/packed/transaction.rs
+++ b/git-ref/src/store/packed/transaction.rs
@@ -1,5 +1,4 @@
-use std::fmt::Formatter;
-use std::io::Write;
+use std::{fmt::Formatter, io::Write};
use crate::{
file,
diff --git a/git-ref/tests/file/store/iter.rs b/git-ref/tests/file/store/iter.rs
index 5223c90b5bd..0ee791e953f 100644
--- a/git-ref/tests/file/store/iter.rs
+++ b/git-ref/tests/file/store/iter.rs
@@ -8,8 +8,7 @@ use crate::file::{store, store_at, store_with_packed_refs};
mod with_namespace {
use git_object::bstr::{BString, ByteSlice};
- use crate::file::store_at;
- use crate::file::transaction::prepare_and_commit::empty_store;
+ use crate::file::{store_at, transaction::prepare_and_commit::empty_store};
#[test]
fn missing_refs_dir_yields_empty_iteration() -> crate::Result {
diff --git a/git-ref/tests/file/transaction/mod.rs b/git-ref/tests/file/transaction/mod.rs
index 6c93b8af489..7573ae1a40f 100644
--- a/git-ref/tests/file/transaction/mod.rs
+++ b/git-ref/tests/file/transaction/mod.rs
@@ -1,11 +1,15 @@
pub(crate) mod prepare_and_commit {
+ use std::convert::TryInto;
+
use git_actor::{Sign, Time};
use git_hash::ObjectId;
use git_object::bstr::BString;
- use git_ref::transaction::{Change, LogChange, PreviousValue, RefEdit, RefLog};
- use git_ref::{file, Target};
+ use git_ref::{
+ file,
+ transaction::{Change, LogChange, PreviousValue, RefEdit, RefLog},
+ Target,
+ };
use git_testtools::hex_to_id;
- use std::convert::TryInto;
fn reflog_lines(store: &file::Store, name: &str) -> crate::Result> {
let mut buf = Vec::new();
diff --git a/git-ref/tests/file/transaction/prepare_and_commit/create_or_update/collisions.rs b/git-ref/tests/file/transaction/prepare_and_commit/create_or_update/collisions.rs
index 6cf94b17884..757cad2035d 100644
--- a/git-ref/tests/file/transaction/prepare_and_commit/create_or_update/collisions.rs
+++ b/git-ref/tests/file/transaction/prepare_and_commit/create_or_update/collisions.rs
@@ -1,10 +1,14 @@
-use crate::file::transaction::prepare_and_commit::{committer, create_at, create_symbolic_at, delete_at, empty_store};
+use std::convert::TryInto;
+
use git_lock::acquire::Fail;
-use git_ref::file::transaction::PackedRefs;
-use git_ref::transaction::{Change, LogChange, PreviousValue, RefEdit};
-use git_ref::Target;
+use git_ref::{
+ file::transaction::PackedRefs,
+ transaction::{Change, LogChange, PreviousValue, RefEdit},
+ Target,
+};
use git_testtools::hex_to_id;
-use std::convert::TryInto;
+
+use crate::file::transaction::prepare_and_commit::{committer, create_at, create_symbolic_at, delete_at, empty_store};
fn case_sensitive(tmp_dir: &std::path::Path) -> bool {
std::fs::write(tmp_dir.join("config"), "").expect("can create file once");
diff --git a/git-ref/tests/file/transaction/prepare_and_commit/create_or_update/mod.rs b/git-ref/tests/file/transaction/prepare_and_commit/create_or_update/mod.rs
index c14abf4ac6b..7c8716a3288 100644
--- a/git-ref/tests/file/transaction/prepare_and_commit/create_or_update/mod.rs
+++ b/git-ref/tests/file/transaction/prepare_and_commit/create_or_update/mod.rs
@@ -15,10 +15,11 @@ use git_ref::{
};
use git_testtools::hex_to_id;
-use crate::file::transaction::prepare_and_commit::{create_at, create_symbolic_at, delete_at};
use crate::file::{
store_with_packed_refs, store_writable,
- transaction::prepare_and_commit::{committer, empty_store, log_line, reflog_lines},
+ transaction::prepare_and_commit::{
+ committer, create_at, create_symbolic_at, delete_at, empty_store, log_line, reflog_lines,
+ },
};
mod collisions;
diff --git a/git-refspec/CHANGELOG.md b/git-refspec/CHANGELOG.md
index 1189dd56cf3..3cc8852c54c 100644
--- a/git-refspec/CHANGELOG.md
+++ b/git-refspec/CHANGELOG.md
@@ -5,6 +5,42 @@ 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.4.0 (2022-11-21)
+
+### New Features (BREAKING)
+
+ - upgrade edition to 2021 in most crates.
+ MSRV for this is 1.56, and we are now at 1.60 so should be compatible.
+ This isn't more than a patch release as it should break nobody
+ who is adhering to the MSRV, but let's be careful and mark it
+ breaking.
+
+ Note that `git-features` and `git-pack` are still on edition 2018
+ as they make use of a workaround to support (safe) mutable access
+ to non-overlapping entries in a slice which doesn't work anymore
+ in edition 2021.
+
+### Commit Statistics
+
+
+
+ - 3 commits contributed to the release over the course of 2 calendar days.
+ - 14 days passed between releases.
+ - 1 commit was understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+
+
+view details
+
+ * **Uncategorized**
+ - prepare changelogs prior to release ([`e4648f8`](https://github.com/Byron/gitoxide/commit/e4648f827c97e9d13636d1bbdc83dd63436e6e5c))
+ - Merge branch 'version2021' ([`0e4462d`](https://github.com/Byron/gitoxide/commit/0e4462df7a5166fe85c23a779462cdca8ee013e8))
+ - upgrade edition to 2021 in most crates. ([`3d8fa8f`](https://github.com/Byron/gitoxide/commit/3d8fa8fef9800b1576beab8a5bc39b821157a5ed))
+
+
## 0.3.1 (2022-11-06)
### New Features
@@ -28,7 +64,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- - 11 commits contributed to the release over the course of 24 calendar days.
+ - 12 commits contributed to the release over the course of 24 calendar days.
- 27 days passed between releases.
- 2 commits were understood as [conventional](https://www.conventionalcommits.org).
- 2 unique issues were worked on: [#450](https://github.com/Byron/gitoxide/issues/450), [#571](https://github.com/Byron/gitoxide/issues/571)
@@ -48,6 +84,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- refactor ([`ef7467c`](https://github.com/Byron/gitoxide/commit/ef7467cd61762dc4206fa82e66adc287ba2f7f52))
- assure sub-branches can be matched correctly ([`c9383c6`](https://github.com/Byron/gitoxide/commit/c9383c693e0b3c506c9b1c42f339f40c1145f998))
* **Uncategorized**
+ - Release git-features v0.23.1, git-glob v0.4.1, git-config-value v0.8.1, git-tempfile v2.0.6, git-object v0.22.1, git-ref v0.18.0, git-sec v0.4.2, git-config v0.10.0, git-prompt v0.1.1, git-url v0.10.1, git-credentials v0.6.1, git-diff v0.21.0, git-discover v0.7.0, git-index v0.7.0, git-pack v0.25.0, git-odb v0.35.0, git-transport v0.21.1, git-protocol v0.22.0, git-refspec v0.3.1, git-worktree v0.7.0, git-repository v0.26.0, git-commitgraph v0.10.0, gitoxide-core v0.19.0, gitoxide v0.17.0, safety bump 9 crates ([`d071583`](https://github.com/Byron/gitoxide/commit/d071583c5576fdf5f7717765ffed5681792aa81f))
- prepare changelogs prior to release ([`423af90`](https://github.com/Byron/gitoxide/commit/423af90c8202d62dc1ea4a76a0df6421d1f0aa06))
- Merge branch 'main' into write-sparse-index ([`c4e6849`](https://github.com/Byron/gitoxide/commit/c4e68496c368611ebe17c6693d06c8147c28c717))
- Merge branch 'gix-clone' ([`def53b3`](https://github.com/Byron/gitoxide/commit/def53b36c3dec26fa78939ab0584fe4ff930909c))
diff --git a/git-refspec/Cargo.toml b/git-refspec/Cargo.toml
index 381320d7e50..22cf078e8a6 100644
--- a/git-refspec/Cargo.toml
+++ b/git-refspec/Cargo.toml
@@ -1,20 +1,20 @@
[package]
name = "git-refspec"
-version = "0.3.1"
+version = "0.4.0"
repository = "https://github.com/Byron/gitoxide"
license = "MIT/Apache-2.0"
description = "A WIP crate of the gitoxide project for parsing and representing refspecs"
authors = ["Sebastian Thiel "]
-edition = "2018"
+edition = "2021"
include = ["src/**/*", "CHANGELOG.md", "README.md"]
[lib]
doctest = false
[dependencies]
-git-revision = { version = "^0.6.0", path = "../git-revision" }
-git-validate = { version = "^0.6.0", path = "../git-validate" }
-git-hash = { version = "^0.9.11", path = "../git-hash" }
+git-revision = { version = "^0.7.0", path = "../git-revision" }
+git-validate = { version = "^0.7.0", path = "../git-validate" }
+git-hash = { version = "^0.10.0", path = "../git-hash" }
bstr = { version = "1.0.1", default-features = false, features = ["std"]}
thiserror = "1.0.26"
diff --git a/git-refspec/fuzz/Cargo.toml b/git-refspec/fuzz/Cargo.toml
index bcbabbb425a..d43d511d9aa 100644
--- a/git-refspec/fuzz/Cargo.toml
+++ b/git-refspec/fuzz/Cargo.toml
@@ -3,7 +3,7 @@ name = "git-refspec-fuzz"
version = "0.0.0"
authors = ["Automatically generated"]
publish = false
-edition = "2018"
+edition = "2021"
[package.metadata]
cargo-fuzz = true
diff --git a/git-repository/CHANGELOG.md b/git-repository/CHANGELOG.md
index b8338f0d6ff..9a2b1e3ffda 100644
--- a/git-repository/CHANGELOG.md
+++ b/git-repository/CHANGELOG.md
@@ -5,6 +5,110 @@ 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.29.0 (2022-11-21)
+
+
+
+### New Features
+
+
+
+ - Make `reqwest` TLS backend configuration easy.
+ We provide the choice of `native-tls` or `rust-tls`. If none is
+ provided, the user can configure on their on similar to how it's done
+ in `git-repository`.
+
+ Please note that a choice now has to be made or HTTPS will not be
+ available, so use one of…
+
+ * blocking-http-transport-reqwest-rust-tls
+* blocking-http-transport-reqwest-native-tls
+
+### Bug Fixes
+
+ - `git_repository::Commit::describe()` chooses tag names (more) correctly.
+ Previously, if there were multiple choices for tags on the same commit,
+ `git describe` would disagree with `gitoxide` due to different
+ prioritization of names.
+
+ This has now been fixed.
+ - also sort entries lexicographically
+
+### Other
+
+ - Set GIT_EDITOR in make_rebase_i_repo.sh
+ If the user has core.editor set in their global git config, then that value
+ takes precidence over the EDITOR environment variable. The GIT_EDITOR
+ environment variable, however, has higher precidence than core.editor. For
+ this test, using GIT_EDITOR ensures that the desired sed command line is
+ used.
+
+### New Features (BREAKING)
+
+ - rename `blocking-http-transport` feature to `blocking-http-transport-curl`; add `blocking-http-transport-reqwest`.
+ With the new and relatively immature second tier http backend we pave
+ the way to support builds without the use of open-ssl and probably many
+ other C libraries.
+
+ Note that it's early and not `http` configuration option is implemented
+ yet.
+ - upgrade edition to 2021 in most crates.
+ MSRV for this is 1.56, and we are now at 1.60 so should be compatible.
+ This isn't more than a patch release as it should break nobody
+ who is adhering to the MSRV, but let's be careful and mark it
+ breaking.
+
+ Note that `git-features` and `git-pack` are still on edition 2018
+ as they make use of a workaround to support (safe) mutable access
+ to non-overlapping entries in a slice which doesn't work anymore
+ in edition 2021.
+
+### Commit Statistics
+
+
+
+ - 24 commits contributed to the release over the course of 3 calendar days.
+ - 4 days passed between releases.
+ - 7 commits were understood as [conventional](https://www.conventionalcommits.org).
+ - 1 unique issue was worked on: [#606](https://github.com/Byron/gitoxide/issues/606)
+
+### Commit Details
+
+
+
+view details
+
+ * **[#606](https://github.com/Byron/gitoxide/issues/606)**
+ - `git_repository::Commit::describe()` chooses tag names (more) correctly. ([`c6a6902`](https://github.com/Byron/gitoxide/commit/c6a690219915b2b401d2d11f61db35b2931e5b3a))
+ * **Uncategorized**
+ - prepare changelogs prior to release ([`e4648f8`](https://github.com/Byron/gitoxide/commit/e4648f827c97e9d13636d1bbdc83dd63436e6e5c))
+ - Make `reqwest` TLS backend configuration easy. ([`3ddbd2d`](https://github.com/Byron/gitoxide/commit/3ddbd2de369b521fa3f21935f10fe9c248840893))
+ - Merge branch 'max-pure' ([`03ff188`](https://github.com/Byron/gitoxide/commit/03ff1882f2982fba38fbbf245eea13ef9df50f33))
+ - rename `blocking-http-transport` feature to `blocking-http-transport-curl`; add `blocking-http-transport-reqwest`. ([`bc2a399`](https://github.com/Byron/gitoxide/commit/bc2a399f2fbb69d23b0b05e8dfb95f3c64ff93b9))
+ - Merge branch 'jpgrayson/main' ([`72abac6`](https://github.com/Byron/gitoxide/commit/72abac68055947d3ff3fb4443f29da14a389e45d))
+ - Merge branch 'breadthfirst-improvements' ([`b755b5b`](https://github.com/Byron/gitoxide/commit/b755b5bd4cbf8839ba43a143183ae785584f1d59))
+ - improve docs for breadthfirst traversal - talking about sorting seems odd ([`6dc3ec1`](https://github.com/Byron/gitoxide/commit/6dc3ec1936b8c74e162e95a5aa1ff0a0d13e6fc8))
+ - Set GIT_EDITOR in make_rebase_i_repo.sh ([`f302fc1`](https://github.com/Byron/gitoxide/commit/f302fc1bcd06fadccd126f4f5f9c0165afabedda))
+ - add `Repository::empty_tree()` to obtain the empty tree object. ([`ff9e157`](https://github.com/Byron/gitoxide/commit/ff9e1571b558475e727dc6ba11dab24ef15fb6f4))
+ - Merge branch 'cwd-consistency' ([`ea7c6a3`](https://github.com/Byron/gitoxide/commit/ea7c6a3b069c9e13905b51b87538c57ba9182dca))
+ - Adapt to changes in `git-discover` and `git-path` and `git-odb` ([`98c2501`](https://github.com/Byron/gitoxide/commit/98c250175a39598b9d37613c43dda2299da8eff3))
+ - Merge branch 'pierrechevalier83/main' ([`a5b1d73`](https://github.com/Byron/gitoxide/commit/a5b1d738d23d0a343bee1b72bcb72250b5fdae11))
+ - restore original representation of `Tag` at the cost of some duplication ([`dd0a23d`](https://github.com/Byron/gitoxide/commit/dd0a23d710be0eb6c7ea7f883aeb1400bcbc0709))
+ - refactor ([`c02a6bd`](https://github.com/Byron/gitoxide/commit/c02a6bdcc3669a48cd4b5b640280701fd089575d))
+ - stabilize tests (unwrap() -> ?) and improve fixture ([`d4f58a9`](https://github.com/Byron/gitoxide/commit/d4f58a941e3936fb2f11ec66b75156e1b9120fa2))
+ - [refactor] Deduplicate Tag and TagRef ([`6003fa2`](https://github.com/Byron/gitoxide/commit/6003fa22085b5031565c51b2b5a0a9feb1579fb0))
+ - add additional tests ([`5b97d1b`](https://github.com/Byron/gitoxide/commit/5b97d1b8c787927fba246647427915fa2ca9dd4e))
+ - Sort like described in the comment ([`dfe125e`](https://github.com/Byron/gitoxide/commit/dfe125edb9ba15ec4b44155ac0028c44ba0bdb1f))
+ - rename tuple fields to what they actually are (without changing logic) ([`3177b2b`](https://github.com/Byron/gitoxide/commit/3177b2bf3f7ee9185d3afab05e50cd25e9561127))
+ - refactor ([`cf523cd`](https://github.com/Byron/gitoxide/commit/cf523cdaee36ea084826660ba0605dd5107cfe1f))
+ - Merge branch 'version2021' ([`0e4462d`](https://github.com/Byron/gitoxide/commit/0e4462df7a5166fe85c23a779462cdca8ee013e8))
+ - upgrade edition to 2021 in most crates. ([`3d8fa8f`](https://github.com/Byron/gitoxide/commit/3d8fa8fef9800b1576beab8a5bc39b821157a5ed))
+ - also sort entries lexicographically ([`84ed89c`](https://github.com/Byron/gitoxide/commit/84ed89c3bf6692f18c4bb97173527de1bcba7ac6))
+
+
+
+ add Repository::empty_tree() to obtain the empty tree object.Useful for diffing mostly.
+
## 0.28.0 (2022-11-17)
@@ -42,7 +146,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- - 52 commits contributed to the release over the course of 8 calendar days.
+ - 53 commits contributed to the release over the course of 8 calendar days.
- 8 days passed between releases.
- 6 commits were understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
@@ -60,6 +164,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details
* **Uncategorized**
+ - Release git-glob v0.4.2, git-config-value v0.8.2, git-lock v2.2.0, git-ref v0.19.0, git-config v0.11.0, git-discover v0.8.0, git-index v0.8.0, git-transport v0.22.0, git-protocol v0.23.0, git-worktree v0.8.0, git-repository v0.28.0, gitoxide-core v0.20.0, gitoxide v0.18.0, safety bump 9 crates ([`0c253b1`](https://github.com/Byron/gitoxide/commit/0c253b15143dcedfe4c66d64ab1ea6e097030651))
- prepare changelogs prior to release ([`fe5721f`](https://github.com/Byron/gitoxide/commit/fe5721f888c64c79fe9a734a9e33b94a282f8d97))
- Merge branch 'http-config' ([`665b53e`](https://github.com/Byron/gitoxide/commit/665b53e1c2e1de65fafa28b669f58977868bbc81))
- fix docs ([`b5c316e`](https://github.com/Byron/gitoxide/commit/b5c316e285369a84e57ec6f7425b92fec2978a49))
diff --git a/git-repository/Cargo.toml b/git-repository/Cargo.toml
index 06bc0689b5d..c2d5f650ed4 100644
--- a/git-repository/Cargo.toml
+++ b/git-repository/Cargo.toml
@@ -3,9 +3,9 @@ name = "git-repository"
repository = "https://github.com/Byron/gitoxide"
description = "Abstractions for git repositories"
license = "MIT/Apache-2.0"
-version = "0.28.0"
+version = "0.29.0"
authors = ["Sebastian Thiel "]
-edition = "2018"
+edition = "2021"
include = ["src/**/*", "CHANGELOG.md"]
rust-version = "1.60"
@@ -36,8 +36,14 @@ async-network-client = ["git-protocol/async-client"]
async-network-client-async-std = ["async-std", "async-network-client", "git-transport/async-std"]
## Make `git-protocol` available along with a blocking client.
blocking-network-client = ["git-protocol/blocking-client"]
-## Stacks with `blocking-network-client` to provide support for HTTP/S, and implies blocking networking as a whole.
-blocking-http-transport = ["git-transport/http-client-curl"]
+## Stacks with `blocking-network-client` to provide support for HTTP/S using **curl**, and implies blocking networking as a whole.
+blocking-http-transport-curl = ["blocking-network-client", "git-transport/http-client-curl"]
+## Stacks with `blocking-network-client` to provide support for HTTP/S using **reqwest**, and implies blocking networking as a whole.
+blocking-http-transport-reqwest = ["blocking-network-client", "git-transport/http-client-reqwest"]
+## Stacks with `blocking-http-transport-reqwest` and enables HTTPS via the `rustls` crate. Note that https isn't available without a selection.
+blocking-http-transport-reqwest-rust-tls = ["blocking-http-transport-reqwest", "reqwest-for-configuration-only/rustls-tls", "reqwest-for-configuration-only/trust-dns"]
+## Stacks with `blocking-http-transport-reqwest` and enables HTTPS via the `native-tls` crate. Note that https isn't available without a selection.
+blocking-http-transport-reqwest-native-tls = ["blocking-http-transport-reqwest", "reqwest-for-configuration-only/default-tls" ]
#! ### Other
@@ -77,38 +83,38 @@ cache-efficiency-debug = ["git-features/cache-efficiency-debug"]
[dependencies]
-git-ref = { version = "^0.19.0", path = "../git-ref" }
-git-discover = { version = "^0.8.0", path = "../git-discover" }
-git-tempfile = { version = "^2.0.0", path = "../git-tempfile" }
-git-lock = { version = "^2.0.0", path = "../git-lock" }
-git-validate = { version = "^0.6.0", path = "../git-validate" }
-git-sec = { version = "^0.4.2", path = "../git-sec" }
-git-date = { version = "^0.2.0", path = "../git-date" }
-git-refspec = { version = "^0.3.1", path = "../git-refspec" }
-
-git-config = { version = "^0.11.0", path = "../git-config" }
-git-odb = { version = "^0.36.0", path = "../git-odb" }
-git-hash = { version = "^0.9.11", path = "../git-hash" }
-git-object = { version = "^0.22.1", path = "../git-object" }
-git-actor = { version = "^0.13.0", path = "../git-actor" }
-git-pack = { version = "^0.26.0", path = "../git-pack", features = ["object-cache-dynamic"] }
-git-revision = { version = "^0.6.0", path = "../git-revision" }
-
-git-path = { version = "^0.5.0", path = "../git-path" }
-git-url = { version = "^0.10.1", path = "../git-url" }
-git-traverse = { version = "^0.18.0", path = "../git-traverse" }
-git-protocol = { version = "^0.23.0", path = "../git-protocol", optional = true }
-git-transport = { version = "^0.22.0", path = "../git-transport", optional = true }
-git-diff = { version = "^0.22.0", path = "../git-diff" }
-git-mailmap = { version = "^0.5.0", path = "../git-mailmap" }
-git-features = { version = "^0.23.1", path = "../git-features", features = ["progress", "once_cell"] }
-
-git-attributes = { version = "^0.5.0", path = "../git-attributes" }
-git-glob = { version = "^0.4.2", path = "../git-glob" }
-git-credentials = { version = "^0.6.1", path = "../git-credentials" }
-git-prompt = { version = "^0.1.1", path = "../git-prompt" }
-git-index = { version = "^0.8.0", path = "../git-index" }
-git-worktree = { version = "^0.8.0", path = "../git-worktree" }
+git-ref = { version = "^0.20.0", path = "../git-ref" }
+git-discover = { version = "^0.9.0", path = "../git-discover" }
+git-tempfile = { version = "^3.0.0", path = "../git-tempfile" }
+git-lock = { version = "^3.0.0", path = "../git-lock" }
+git-validate = { version = "^0.7.0", path = "../git-validate" }
+git-sec = { version = "^0.5.0", path = "../git-sec" }
+git-date = { version = "^0.3.0", path = "../git-date" }
+git-refspec = { version = "^0.4.0", path = "../git-refspec" }
+
+git-config = { version = "^0.12.0", path = "../git-config" }
+git-odb = { version = "^0.37.0", path = "../git-odb" }
+git-hash = { version = "^0.10.0", path = "../git-hash" }
+git-object = { version = "^0.23.0", path = "../git-object" }
+git-actor = { version = "^0.14.0", path = "../git-actor" }
+git-pack = { version = "^0.27.0", path = "../git-pack", features = ["object-cache-dynamic"] }
+git-revision = { version = "^0.7.0", path = "../git-revision" }
+
+git-path = { version = "^0.6.0", path = "../git-path" }
+git-url = { version = "^0.11.0", path = "../git-url" }
+git-traverse = { version = "^0.19.0", path = "../git-traverse" }
+git-protocol = { version = "^0.24.0", path = "../git-protocol", optional = true }
+git-transport = { version = "^0.23.0", path = "../git-transport", optional = true }
+git-diff = { version = "^0.23.0", path = "../git-diff" }
+git-mailmap = { version = "^0.6.0", path = "../git-mailmap" }
+git-features = { version = "^0.24.0", path = "../git-features", features = ["progress", "once_cell"] }
+
+git-attributes = { version = "^0.6.0", path = "../git-attributes" }
+git-glob = { version = "^0.5.0", path = "../git-glob" }
+git-credentials = { version = "^0.7.0", path = "../git-credentials" }
+git-prompt = { version = "^0.2.0", path = "../git-prompt" }
+git-index = { version = "^0.9.0", path = "../git-index" }
+git-worktree = { version = "^0.9.0", path = "../git-worktree" }
once_cell = "1.14.0"
signal-hook = { version = "0.3.9", default-features = false }
@@ -126,6 +132,9 @@ async-std = { version = "1.12.0", optional = true }
## how a simple unanchored regex of only 'normal' characters would work.
regex = { version = "1.6.0", optional = true, default-features = false, features = ["std"] }
+# For internal use to allow pure-Rust builds without opensssl.
+reqwest-for-configuration-only = { package = "reqwest", version = "0.11.13", default-features = false, optional = true }
+
document-features = { version = "0.2.0", optional = true }
[target.'cfg(target_vendor = "apple")'.dependencies]
diff --git a/git-repository/src/commit.rs b/git-repository/src/commit.rs
index 08f2e614fc8..6a8cc560862 100644
--- a/git-repository/src/commit.rs
+++ b/git-repository/src/commit.rs
@@ -99,7 +99,16 @@ pub mod describe {
.into()
})
.collect();
- refs.sort_by(|a, b| a.2.cmp(&b.2).then_with(|| a.1.cmp(&b.1))); // by time ascending, then by priority. Older entries overwrite newer ones.
+ // By priority, then by time ascending, then lexicographically.
+ // More recent entries overwrite older ones due to collection into hashmap.
+ refs.sort_by(
+ |(_a_peeled_id, a_prio, a_time, a_name), (_b_peeled_id, b_prio, b_time, b_name)| {
+ a_prio
+ .cmp(b_prio)
+ .then_with(|| a_time.cmp(b_time))
+ .then_with(|| b_name.cmp(a_name))
+ },
+ );
refs.into_iter().map(|(a, _, _, b)| (a, b)).collect()
}
SelectRef::AnnotatedTags => {
@@ -116,10 +125,14 @@ pub mod describe {
.and_then(|s| s.map(|s| s.time.seconds_since_unix_epoch))
.unwrap_or(0);
let commit_id = tag.target_id().ok()?.object().ok()?.try_into_commit().ok()?.id;
- Some((commit_id, tag_time, r.name().shorten().to_owned().into()))
+ Some((commit_id, tag_time, Cow::::from(r.name().shorten().to_owned())))
})
.collect();
- peeled_commits_and_tag_date.sort_by(|a, b| a.1.cmp(&b.1)); // by time, ascending, causing older names to overwrite newer ones.
+ // Sort by time ascending, then lexicographically.
+ // More recent entries overwrite older ones due to collection into hashmap.
+ peeled_commits_and_tag_date.sort_by(|(_a_id, a_time, a_name), (_b_id, b_time, b_name)| {
+ a_time.cmp(b_time).then_with(|| b_name.cmp(a_name))
+ });
peeled_commits_and_tag_date
.into_iter()
.map(|(a, _, c)| (a, c))
diff --git a/git-repository/src/config/cache/access.rs b/git-repository/src/config/cache/access.rs
index b44650742cf..81fa50165cb 100644
--- a/git-repository/src/config/cache/access.rs
+++ b/git-repository/src/config/cache/access.rs
@@ -2,9 +2,8 @@ use std::{borrow::Cow, convert::TryInto, path::PathBuf, time::Duration};
use git_lock::acquire::Fail;
-use crate::config::cache::util::ApplyLeniencyDefault;
use crate::{
- config::{checkout_options, Cache},
+ config::{cache::util::ApplyLeniencyDefault, checkout_options, Cache},
remote,
repository::identity,
};
diff --git a/git-repository/src/config/cache/init.rs b/git-repository/src/config/cache/init.rs
index 41b846db347..7f69b833d28 100644
--- a/git-repository/src/config/cache/init.rs
+++ b/git-repository/src/config/cache/init.rs
@@ -1,6 +1,9 @@
use super::{interpolate_context, util, Error, StageOne};
-use crate::config::cache::util::ApplyLeniency;
-use crate::{bstr::BString, config::Cache, repository};
+use crate::{
+ bstr::BString,
+ config::{cache::util::ApplyLeniency, Cache},
+ repository,
+};
/// Initialization
impl Cache {
diff --git a/git-repository/src/create.rs b/git-repository/src/create.rs
index f71b03848f2..4f997fd3443 100644
--- a/git-repository/src/create.rs
+++ b/git-repository/src/create.rs
@@ -12,6 +12,8 @@ use git_discover::DOT_GIT_DIR;
#[derive(Debug, thiserror::Error)]
#[allow(missing_docs)]
pub enum Error {
+ #[error("Could not obtain the current directory")]
+ CurrentDir(#[from] std::io::Error),
#[error("Could not open data at '{}'", .path.display())]
IoOpen { source: std::io::Error, path: PathBuf },
#[error("Could not write data at '{}'", .path.display())]
@@ -229,7 +231,9 @@ pub fn into(
dot_git,
bare.then(|| git_discover::repository::Kind::Bare)
.unwrap_or(git_discover::repository::Kind::WorkTree { linked_git_dir: None }),
- ))
+ std::env::current_dir()?,
+ )
+ .expect("by now the `dot_git` dir is valid as we have accessed it"))
}
fn key(name: &'static str) -> section::Key<'static> {
diff --git a/git-repository/src/discover.rs b/git-repository/src/discover.rs
index a7c77cc6d6a..54cd0898df3 100644
--- a/git-repository/src/discover.rs
+++ b/git-repository/src/discover.rs
@@ -32,13 +32,14 @@ impl ThreadSafeRepository {
/// seems acceptable).
pub fn discover_opts(
directory: impl AsRef,
- options: upwards::Options,
+ options: upwards::Options<'_>,
trust_map: git_sec::trust::Mapping,
) -> Result {
let (path, trust) = upwards_opts(directory, options)?;
let (git_dir, worktree_dir) = path.into_repository_and_work_tree_directories();
let mut options = trust_map.into_value_by_level(trust);
options.git_dir_trust = trust.into();
+ options.current_dir = Some(std::env::current_dir().map_err(upwards::Error::CurrentDir)?);
Self::open_from_paths(git_dir, worktree_dir, options).map_err(Into::into)
}
@@ -60,12 +61,10 @@ impl ThreadSafeRepository {
/// based on the trust level of the effective repository directory.
pub fn discover_with_environment_overrides_opts(
directory: impl AsRef,
- mut options: upwards::Options,
+ mut options: upwards::Options<'_>,
trust_map: git_sec::trust::Mapping,
) -> Result {
- fn apply_additional_environment(mut opts: upwards::Options) -> upwards::Options {
- use std::convert::TryFrom;
-
+ fn apply_additional_environment(mut opts: upwards::Options<'_>) -> upwards::Options<'_> {
use crate::bstr::ByteVec;
if let Some(cross_fs) = std::env::var_os("GIT_DISCOVERY_ACROSS_FILESYSTEM")
diff --git a/git-repository/src/init.rs b/git-repository/src/init.rs
index 3163b9de716..96e9bb17217 100644
--- a/git-repository/src/init.rs
+++ b/git-repository/src/init.rs
@@ -19,6 +19,8 @@ pub const DEFAULT_BRANCH_NAME: &str = "main";
#[derive(Debug, thiserror::Error)]
#[allow(missing_docs)]
pub enum Error {
+ #[error("Could not obtain the current directory")]
+ CurrentDir(#[from] std::io::Error),
#[error(transparent)]
Init(#[from] crate::create::Error),
#[error(transparent)]
@@ -62,6 +64,7 @@ impl ThreadSafeRepository {
let path = crate::create::into(directory.as_ref(), kind, create_options)?;
let (git_dir, worktree_dir) = path.into_repository_and_work_tree_directories();
open_options.git_dir_trust = Some(git_sec::Trust::Full);
+ open_options.current_dir = std::env::current_dir()?.into();
let repo = ThreadSafeRepository::open_from_paths(git_dir, worktree_dir, open_options)?;
let branch_name = repo
diff --git a/git-repository/src/object/blob.rs b/git-repository/src/object/blob.rs
index 07791fff2dd..228aeb53155 100644
--- a/git-repository/src/object/blob.rs
+++ b/git-repository/src/object/blob.rs
@@ -1,9 +1,9 @@
///
pub mod diff {
- use crate::bstr::ByteSlice;
- use crate::object::blob::diff::line::Change;
use std::ops::Range;
+ use crate::{bstr::ByteSlice, object::blob::diff::line::Change};
+
/// A platform to keep temporary information to perform line diffs on modified blobs.
///
pub struct Platform<'old, 'new> {
diff --git a/git-repository/src/object/tree/iter.rs b/git-repository/src/object/tree/iter.rs
index a7acc10a467..0ea72992354 100644
--- a/git-repository/src/object/tree/iter.rs
+++ b/git-repository/src/object/tree/iter.rs
@@ -45,7 +45,7 @@ impl<'repo, 'a> std::fmt::Display for EntryRef<'repo, 'a> {
}
impl<'repo> Tree<'repo> {
- /// Return an iterator over tree entries.
+ /// Return an iterator over tree entries to obtain information about files and directories this tree contains.
pub fn iter(&self) -> impl Iterator, git_object::decode::Error>> {
let repo = self.repo;
git_object::TreeRefIter::from_bytes(&self.data).map(move |e| e.map(|entry| EntryRef { inner: entry, repo }))
diff --git a/git-repository/src/object/tree/traverse.rs b/git-repository/src/object/tree/traverse.rs
index a6927b8bc3d..1c40efb5e23 100644
--- a/git-repository/src/object/tree/traverse.rs
+++ b/git-repository/src/object/tree/traverse.rs
@@ -40,11 +40,12 @@ impl<'a, 'repo> BreadthFirstPresets<'a, 'repo> {
}
impl<'a, 'repo> Platform<'a, 'repo> {
- /// Start a breadth-first traversal using `delegate`, for which a [`Recorder`][git_traverse::tree::Recorder] can be used to get started.
+ /// Start a breadth-first, recursive traversal using `delegate`, for which a [`Recorder`][git_traverse::tree::Recorder] can be used to get started.
///
/// # Note
///
- /// Results are not sorted.
+ /// - Results are returned in sort order according to tree-entry sorting rules, one level at a time.
+ /// - for obtaining the direct children of the tree, use [.iter()][crate::Tree::iter()] instead.
pub fn breadthfirst(&self, delegate: &mut V) -> Result<(), git_traverse::tree::breadthfirst::Error>
where
V: git_traverse::tree::Visit,
diff --git a/git-repository/src/open.rs b/git-repository/src/open.rs
index baf4ef3abc1..779ecff6c22 100644
--- a/git-repository/src/open.rs
+++ b/git-repository/src/open.rs
@@ -76,6 +76,8 @@ pub struct Options {
pub(crate) lenient_config: bool,
pub(crate) bail_if_untrusted: bool,
pub(crate) config_overrides: Vec,
+ /// Internal to pass an already obtained CWD on to where it may also be used. This avoids the CWD being queried more than once per repo.
+ pub(crate) current_dir: Option,
}
impl Default for Options {
@@ -90,6 +92,7 @@ impl Default for Options {
lenient_config: true,
bail_if_untrusted: false,
config_overrides: Vec::new(),
+ current_dir: None,
}
}
}
@@ -239,6 +242,7 @@ impl git_sec::trust::DefaultForLevel for Options {
bail_if_untrusted: false,
lenient_config: true,
config_overrides: Vec::new(),
+ current_dir: None,
},
git_sec::Trust::Reduced => Options {
object_store_slots: git_odb::store::init::Slots::Given(32), // limit resource usage
@@ -250,6 +254,7 @@ impl git_sec::trust::DefaultForLevel for Options {
lenient_config: true,
lossy_config: None,
config_overrides: Vec::new(),
+ current_dir: None,
},
}
}
@@ -292,11 +297,14 @@ impl ThreadSafeRepository {
}
}
};
- let (git_dir, worktree_dir) =
- git_discover::repository::Path::from_dot_git_dir(path, kind).into_repository_and_work_tree_directories();
+ let cwd = std::env::current_dir()?;
+ let (git_dir, worktree_dir) = git_discover::repository::Path::from_dot_git_dir(path, kind, &cwd)
+ .expect("we have sanitized path with is_git()")
+ .into_repository_and_work_tree_directories();
if options.git_dir_trust.is_none() {
options.git_dir_trust = git_sec::Trust::from_path_ownership(&git_dir)?.into();
}
+ options.current_dir = Some(cwd);
ThreadSafeRepository::open_from_paths(git_dir, worktree_dir, options)
}
@@ -327,12 +335,15 @@ impl ThreadSafeRepository {
}
};
- let (git_dir, worktree_dir) = git_discover::repository::Path::from_dot_git_dir(path, path_kind)
+ let cwd = std::env::current_dir()?;
+ let (git_dir, worktree_dir) = git_discover::repository::Path::from_dot_git_dir(path, path_kind, &cwd)
+ .expect("we have sanitized path with is_git()")
.into_repository_and_work_tree_directories();
let worktree_dir = worktree_dir.or(overrides.worktree_dir);
let git_dir_trust = git_sec::Trust::from_path_ownership(&git_dir)?;
- let options = trust_map.into_value_by_level(git_dir_trust);
+ let mut options = trust_map.into_value_by_level(git_dir_trust);
+ options.current_dir = Some(cwd);
ThreadSafeRepository::open_from_paths(git_dir, worktree_dir, options)
}
@@ -351,7 +362,9 @@ impl ThreadSafeRepository {
bail_if_untrusted,
permissions: Permissions { ref env, config },
ref config_overrides,
+ ref current_dir,
} = options;
+ let current_dir = current_dir.as_deref().expect("BUG: current_dir must be set by caller");
let git_dir_trust = git_dir_trust.expect("trust must be been determined by now");
// TODO: assure we handle the worktree-dir properly as we can have config per worktree with an extension.
@@ -406,8 +419,8 @@ impl ThreadSafeRepository {
.interpolate(interpolate_context(git_install_dir.as_deref(), home.as_deref()))
.map_err(config::Error::PathInterpolation)?;
worktree_dir = {
- let wt = git_path::absolutize(git_dir.join(wt_path), None::).into_owned();
- wt.is_dir().then(|| wt)
+ git_path::absolutize(git_dir.join(wt_path), current_dir)
+ .and_then(|wt| wt.as_ref().is_dir().then(|| wt.into_owned()))
}
}
}
@@ -452,6 +465,7 @@ impl ThreadSafeRepository {
slots: object_store_slots,
object_hash: config.object_hash,
use_multi_pack_index: config.use_multi_pack_index,
+ current_dir: current_dir.to_owned().into(),
},
)?),
common_dir,
@@ -557,10 +571,12 @@ mod tests {
#[test]
fn size_of_options() {
let actual = std::mem::size_of::();
+ let limit = 140;
assert!(
- actual <= 104,
- "{} <= 104: size shouldn't change without us knowing (on windows, it's bigger)",
- actual
+ actual <= limit,
+ "{} <= {}: size shouldn't change without us knowing (on windows, it's bigger)",
+ actual,
+ limit
);
}
}
diff --git a/git-repository/src/remote/connect.rs b/git-repository/src/remote/connect.rs
index 4333471fcf9..573e83dfa0a 100644
--- a/git-repository/src/remote/connect.rs
+++ b/git-repository/src/remote/connect.rs
@@ -9,6 +9,10 @@ mod error {
#[derive(Debug, thiserror::Error)]
#[allow(missing_docs)]
pub enum Error {
+ #[error("Could not obtain the current directory")]
+ CurrentDir(#[from] std::io::Error),
+ #[error("Could not access remote repository at \"{}\"", directory.display())]
+ InvalidRemoteRepositoryPath { directory: std::path::PathBuf },
#[error(transparent)]
SchemePermission(#[from] remote::url::scheme_permission::init::Error),
#[error("Protocol {scheme:?} of url {url:?} is denied per configuration")]
@@ -82,8 +86,15 @@ impl<'repo> Remote<'repo> {
dir.to_mut().push(git_discover::DOT_GIT_DIR);
git_discover::is_git(dir.as_ref())
})?;
- let (git_dir, _work_dir) = git_discover::repository::Path::from_dot_git_dir(dir.into_owned(), kind)
- .into_repository_and_work_tree_directories();
+ let (git_dir, _work_dir) = git_discover::repository::Path::from_dot_git_dir(
+ dir.clone().into_owned(),
+ kind,
+ std::env::current_dir()?,
+ )
+ .ok_or_else(|| Error::InvalidRemoteRepositoryPath {
+ directory: dir.into_owned(),
+ })?
+ .into_repository_and_work_tree_directories();
url.path = git_path::into_bstr(git_dir).into_owned();
}
Ok(url)
diff --git a/git-repository/src/remote/connection/fetch/mod.rs b/git-repository/src/remote/connection/fetch/mod.rs
index 89644ea1c2a..d85c60db866 100644
--- a/git-repository/src/remote/connection/fetch/mod.rs
+++ b/git-repository/src/remote/connection/fetch/mod.rs
@@ -11,9 +11,10 @@ use crate::{
};
mod error;
-use crate::remote::fetch::WritePackedRefs;
pub use error::Error;
+use crate::remote::fetch::WritePackedRefs;
+
/// The way reflog messages should be composed whenever a ref is written with recent objects from a remote.
pub enum RefLogMessage {
/// Prefix the log with `action` and generate the typical suffix as `git` would.
diff --git a/git-repository/src/repository/cache.rs b/git-repository/src/repository/cache.rs
index 26c64be1233..2dd03767a9c 100644
--- a/git-repository/src/repository/cache.rs
+++ b/git-repository/src/repository/cache.rs
@@ -79,7 +79,6 @@ fn parse_bytes_from_var(name: &str) -> Option {
.ok()
})
.and_then(|unit| {
- use std::convert::TryInto;
unit.get_bytes()
.try_into()
.map_err(|err| {
diff --git a/git-repository/src/repository/config/transport.rs b/git-repository/src/repository/config/transport.rs
index ba344ffb1ab..6243c8491b3 100644
--- a/git-repository/src/repository/config/transport.rs
+++ b/git-repository/src/repository/config/transport.rs
@@ -1,6 +1,7 @@
-use crate::bstr::BStr;
use std::any::Any;
+use crate::bstr::BStr;
+
impl crate::Repository {
/// Produce configuration suitable for `url`, as differentiated by its protocol/scheme, to be passed to a transport instance via
/// [configure()][git_transport::client::TransportWithoutIO::configure()] (via `&**config` to pass the contained `Any` and not the `Box`).
@@ -23,20 +24,28 @@ impl crate::Repository {
match &url.scheme {
Http | Https => {
- #[cfg(not(feature = "blocking-http-transport"))]
+ #[cfg(not(any(
+ feature = "blocking-http-transport-reqwest",
+ feature = "blocking-http-transport-curl"
+ )))]
{
Ok(None)
}
- #[cfg(feature = "blocking-http-transport")]
+ #[cfg(any(
+ feature = "blocking-http-transport-reqwest",
+ feature = "blocking-http-transport-curl"
+ ))]
{
- use crate::bstr::ByteVec;
- use crate::config::cache::util::{ApplyLeniency, ApplyLeniencyDefault};
- use git_transport::client::http;
- use git_transport::client::http::options::ProxyAuthMethod;
use std::borrow::Cow;
- use std::convert::{TryFrom, TryInto};
use std::sync::{Arc, Mutex};
+ use git_transport::client::http;
+ use git_transport::client::http::options::ProxyAuthMethod;
+
+ use crate::{
+ bstr::ByteVec,
+ config::cache::util::{ApplyLeniency, ApplyLeniencyDefault},
+ };
fn try_cow_to_string(
v: Cow<'_, BStr>,
lenient: bool,
diff --git a/git-repository/src/repository/object.rs b/git-repository/src/repository/object.rs
index 9c4cb31399a..abc23925212 100644
--- a/git-repository/src/repository/object.rs
+++ b/git-repository/src/repository/object.rs
@@ -1,13 +1,13 @@
use std::convert::TryInto;
-use git_hash::{oid, ObjectId};
+use git_hash::ObjectId;
use git_odb::{Find, FindExt, Write};
use git_ref::{
transaction::{LogChange, PreviousValue, RefLog},
FullName,
};
-use crate::{commit, ext::ObjectIdExt, object, tag, Id, Object, Reference};
+use crate::{commit, ext::ObjectIdExt, object, tag, Id, Object, Reference, Tree};
/// Methods related to object creation.
impl crate::Repository {
@@ -106,13 +106,12 @@ impl crate::Repository {
pub fn tag(
&self,
name: impl AsRef,
- target: impl AsRef,
+ target: impl AsRef,
target_kind: git_object::Kind,
tagger: Option>,
message: impl AsRef,
constraint: PreviousValue,
) -> Result, tag::Error> {
- // NOTE: This could be more efficient if we use a TagRef instead.
let tag = git_object::Tag {
target: target.as_ref().into(),
target_kind,
@@ -194,4 +193,14 @@ impl crate::Repository {
})?;
Ok(commit_id)
}
+
+ /// Return an empty tree object, suitable for [getting changes](crate::Tree::changes()).
+ ///
+ /// Note that it is special and doesn't physically exist in the object database even though it can be returned.
+ /// This means that this object can be used in an uninitialized, empty repository which would report to have no objects at all.
+ pub fn empty_tree(&self) -> Tree<'_> {
+ self.find_object(git_hash::ObjectId::empty_tree(self.object_hash()))
+ .expect("always present")
+ .into_tree()
+ }
}
diff --git a/git-repository/src/repository/worktree.rs b/git-repository/src/repository/worktree.rs
index 9468c96caec..023c25671f4 100644
--- a/git-repository/src/repository/worktree.rs
+++ b/git-repository/src/repository/worktree.rs
@@ -59,7 +59,6 @@ impl crate::Repository {
/// Note that it may fail if there is no index.
// TODO: test
pub fn open_index(&self) -> Result {
- use std::convert::{TryFrom, TryInto};
let thread_limit = self
.config
.resolved
diff --git a/git-repository/tests/commit/mod.rs b/git-repository/tests/commit/mod.rs
index 0330c177618..44b483d9e1e 100644
--- a/git-repository/tests/commit/mod.rs
+++ b/git-repository/tests/commit/mod.rs
@@ -4,12 +4,42 @@ mod describe {
use crate::named_repo;
#[test]
- fn tags_are_sorted_by_date_and_lexigraphically() {
- let repo = named_repo("make_commit_describe_multiple_tags.sh").unwrap();
- let mut describe = repo.head_commit().unwrap().describe();
+ fn tags_are_sorted_by_date_and_lexicographically() -> crate::Result {
+ let repo = named_repo("make_commit_describe_multiple_tags.sh")?;
+ let mut describe = repo.head_commit()?.describe();
for filter in &[AnnotatedTags, AllTags, AllRefs] {
describe = describe.names(*filter);
- assert_eq!(describe.format().unwrap().to_string(), "v2", "{:?}", filter);
+ assert_eq!(describe.format()?.to_string(), "v4", "{:?}", filter);
}
+ Ok(())
+ }
+
+ #[test]
+ fn tags_are_sorted_by_priority() -> crate::Result {
+ let repo = named_repo("make_commit_describe_multiple_tags.sh")?;
+ let commit = repo.find_reference("refs/tags/v0")?.id().object()?.into_commit();
+ let mut describe = commit.describe();
+ for filter in &[AnnotatedTags, AllTags, AllRefs] {
+ describe = describe.names(*filter);
+ assert_eq!(describe.format()?.to_string(), "v1", "{:?}", filter);
+ }
+ Ok(())
+ }
+
+ #[test]
+ fn lightweight_tags_are_sorted_lexicographically() -> crate::Result {
+ let repo = named_repo("make_commit_describe_multiple_tags.sh")?;
+ let commit = repo.find_reference("refs/tags/l0")?.id().object()?.into_commit();
+ let mut describe = commit.describe();
+ for filter in &[AnnotatedTags, AllTags, AllRefs] {
+ describe = describe.names(*filter);
+ let expected = match filter {
+ AnnotatedTags => None,
+ _ => Some("l0"),
+ };
+ let actual = describe.try_format()?.map(|f| f.to_string());
+ assert_eq!(actual.as_deref(), expected, "{:?}", filter);
+ }
+ Ok(())
}
}
diff --git a/git-repository/tests/fixtures/generated-archives/make_commit_describe_multiple_tags.tar.xz b/git-repository/tests/fixtures/generated-archives/make_commit_describe_multiple_tags.tar.xz
index 19c70cb4076..d7326f0bdf0 100644
--- a/git-repository/tests/fixtures/generated-archives/make_commit_describe_multiple_tags.tar.xz
+++ b/git-repository/tests/fixtures/generated-archives/make_commit_describe_multiple_tags.tar.xz
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:22fd60100187fc3f4180b31d3ae1d8c5506a65c3ee059b4bbc3a40009fb23f60
-size 10408
+oid sha256:3a91e061f556696e1412e1af977f7b029bdc6a4166e87935841d706a762fa39e
+size 10996
diff --git a/git-repository/tests/fixtures/make_commit_describe_multiple_tags.sh b/git-repository/tests/fixtures/make_commit_describe_multiple_tags.sh
index cdafd0b9892..db27f0acb8b 100644
--- a/git-repository/tests/fixtures/make_commit_describe_multiple_tags.sh
+++ b/git-repository/tests/fixtures/make_commit_describe_multiple_tags.sh
@@ -4,8 +4,20 @@ set -eu -o pipefail
git init -q
git commit --allow-empty -q -m c1
git commit --allow-empty -q -m c2
+git commit --allow-empty -q -m c3
-git tag v0 -m "tag object 0" "HEAD~1"
-git tag v1 -m "tag object 1"
-git tag v1.5
-GIT_COMMITTER_DATE="2022-01-02 00:00:00 +0000" git tag v2 -m "tag object 2"
+# Tag the first commit (with lightweight tags only)
+git tag l0 ":/c1"
+GIT_COMMITTER_DATE="2022-01-02 00:00:00 +0000" git tag l1 "HEAD~2"
+
+# Tag the second commit (for tests involving tag priority)
+# The date is not checked for lightweight tags, so date the annotated tag to 0
+GIT_COMMITTER_DATE="1970-01-01 00:00:00 +0000" git tag v1 -m "tag object 0" :/c2
+git tag v0 ":/c2"
+
+# Tag the third (HEAD) commit (testing the combination of priority, date and lexicographical order)
+git tag v2 -m "tag object 1"
+git tag v2.5
+GIT_COMMITTER_DATE="2022-01-02 00:00:00 +0000" git tag v4 -m "tag object 4"
+GIT_COMMITTER_DATE="2022-01-02 00:00:00 +0000" git tag v5 -m "tag object 5"
+GIT_COMMITTER_DATE="2022-01-03 00:00:00 +0000" git tag v3
diff --git a/git-repository/tests/fixtures/make_rebase_i_repo.sh b/git-repository/tests/fixtures/make_rebase_i_repo.sh
index 3f31a7bf4ae..a9ef1db1db4 100644
--- a/git-repository/tests/fixtures/make_rebase_i_repo.sh
+++ b/git-repository/tests/fixtures/make_rebase_i_repo.sh
@@ -13,4 +13,4 @@ git commit -m 3 3
# NOTE: Starting around git 2.35.0 --preserve-merges was renamed to --rebase-merges
# however --preserve-merges first appeared in git 2.18. That should cover most use cases.
-EDITOR="sed -i.bak 's/pick/edit/g'" git rebase --rebase-merges --interactive HEAD~2
+GIT_EDITOR="sed -i.bak 's/pick/edit/g'" git rebase --rebase-merges --interactive HEAD~2
diff --git a/git-repository/tests/object/tree.rs b/git-repository/tests/object/tree.rs
index 294c9272c53..ed9a62a17a4 100644
--- a/git-repository/tests/object/tree.rs
+++ b/git-repository/tests/object/tree.rs
@@ -3,8 +3,7 @@ mod diff {
use git_object::{bstr::ByteSlice, tree::EntryMode};
use git_repository as git;
- use git_repository::object::blob::diff::line::Change;
- use git_repository::object::tree::diff::change::Event;
+ use git_repository::object::{blob::diff::line::Change, tree::diff::change::Event};
use crate::named_repo;
@@ -52,10 +51,7 @@ mod diff {
#[test]
fn changes_against_tree_with_filename_tracking() {
let repo = named_repo("make_diff_repo.sh").unwrap();
- let from = tree_named(
- &repo,
- &git::hash::ObjectId::empty_tree(git::hash::Kind::Sha1).to_string(),
- );
+ let from = repo.empty_tree();
let to = tree_named(&repo, ":/c1");
let mut expected = vec!["a", "b", "c", "d"];
diff --git a/git-repository/tests/remote/fetch.rs b/git-repository/tests/remote/fetch.rs
index dd0ae2fb528..10654c57fd9 100644
--- a/git-repository/tests/remote/fetch.rs
+++ b/git-repository/tests/remote/fetch.rs
@@ -1,15 +1,15 @@
#[cfg(any(feature = "blocking-network-client", feature = "async-network-client-async-std"))]
mod blocking_and_async_io {
- use git_repository as git;
- use git_repository::remote::Direction::Fetch;
use std::sync::atomic::AtomicBool;
- use crate::remote::{into_daemon_remote_if_async, spawn_git_daemon_if_async};
use git_features::progress;
use git_protocol::maybe_async;
- use git_repository::remote::fetch;
+ use git_repository as git;
+ use git_repository::remote::{fetch, Direction::Fetch};
use git_testtools::hex_to_id;
+ use crate::remote::{into_daemon_remote_if_async, spawn_git_daemon_if_async};
+
pub(crate) fn base_repo_path() -> String {
git::path::realpath(
git_testtools::scripted_fixture_repo_read_only("make_remote_repos.sh")
diff --git a/git-repository/tests/remote/ref_map.rs b/git-repository/tests/remote/ref_map.rs
index 922fe09241f..87d9ad4d168 100644
--- a/git-repository/tests/remote/ref_map.rs
+++ b/git-repository/tests/remote/ref_map.rs
@@ -1,12 +1,14 @@
#[cfg(any(feature = "blocking-network-client", feature = "async-network-client-async-std"))]
mod blocking_and_async_io {
use git_features::progress;
+ use git_protocol::maybe_async;
use git_repository as git;
use git_repository::remote::Direction::Fetch;
- use crate::remote;
- use crate::remote::{into_daemon_remote_if_async, spawn_git_daemon_if_async};
- use git_protocol::maybe_async;
+ use crate::{
+ remote,
+ remote::{into_daemon_remote_if_async, spawn_git_daemon_if_async},
+ };
#[maybe_async::test(
feature = "blocking-network-client",
diff --git a/git-repository/tests/repository/config/transport_options.rs b/git-repository/tests/repository/config/transport_options.rs
index 022e69f5d54..f72451b7430 100644
--- a/git-repository/tests/repository/config/transport_options.rs
+++ b/git-repository/tests/repository/config/transport_options.rs
@@ -1,4 +1,7 @@
-#[cfg(feature = "blocking-http-transport")]
+#[cfg(any(
+ feature = "blocking-http-transport-reqwest",
+ feature = "blocking-http-transport-curl"
+))]
mod http {
use git_repository as git;
diff --git a/git-repository/tests/repository/mod.rs b/git-repository/tests/repository/mod.rs
index 6319c3c0a4a..310fcfdd02f 100644
--- a/git-repository/tests/repository/mod.rs
+++ b/git-repository/tests/repository/mod.rs
@@ -11,7 +11,7 @@ mod worktree;
#[test]
fn size_in_memory() {
let actual_size = std::mem::size_of::();
- let limit = 900;
+ let limit = 940;
assert!(
actual_size <= limit,
"size of Repository shouldn't change without us noticing, it's meant to be cloned: should have been below {:?}, was {} (bigger on windows)",
diff --git a/git-revision/CHANGELOG.md b/git-revision/CHANGELOG.md
index d1fc4f56701..ec0ef9be5a7 100644
--- a/git-revision/CHANGELOG.md
+++ b/git-revision/CHANGELOG.md
@@ -5,6 +5,42 @@ 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.7.0 (2022-11-21)
+
+### New Features (BREAKING)
+
+ - upgrade edition to 2021 in most crates.
+ MSRV for this is 1.56, and we are now at 1.60 so should be compatible.
+ This isn't more than a patch release as it should break nobody
+ who is adhering to the MSRV, but let's be careful and mark it
+ breaking.
+
+ Note that `git-features` and `git-pack` are still on edition 2018
+ as they make use of a workaround to support (safe) mutable access
+ to non-overlapping entries in a slice which doesn't work anymore
+ in edition 2021.
+
+### Commit Statistics
+
+
+
+ - 3 commits contributed to the release over the course of 2 calendar days.
+ - 42 days passed between releases.
+ - 1 commit was understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+
+
+view details
+
+ * **Uncategorized**
+ - prepare changelogs prior to release ([`e4648f8`](https://github.com/Byron/gitoxide/commit/e4648f827c97e9d13636d1bbdc83dd63436e6e5c))
+ - Merge branch 'version2021' ([`0e4462d`](https://github.com/Byron/gitoxide/commit/0e4462df7a5166fe85c23a779462cdca8ee013e8))
+ - upgrade edition to 2021 in most crates. ([`3d8fa8f`](https://github.com/Byron/gitoxide/commit/3d8fa8fef9800b1576beab8a5bc39b821157a5ed))
+
+
## 0.6.0 (2022-10-10)
Maintenance release without user-facing changes.
@@ -13,10 +49,10 @@ Maintenance release without user-facing changes.
- - 2 commits contributed to the release over the course of 20 calendar days.
+ - 3 commits contributed to the release over the course of 20 calendar days.
- 20 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- - 0 issues like '(#ID)' where seen in commit messages
+ - 0 issues like '(#ID)' were seen in commit messages
### Commit Details
@@ -25,6 +61,7 @@ Maintenance release without user-facing changes.
view details
* **Uncategorized**
+ - Release git-hash v0.9.11, git-features v0.23.0, git-actor v0.13.0, git-attributes v0.5.0, git-object v0.22.0, git-ref v0.17.0, git-sec v0.4.1, git-config v0.9.0, git-url v0.10.0, git-credentials v0.6.0, git-diff v0.20.0, git-discover v0.6.0, git-traverse v0.18.0, git-index v0.6.0, git-mailmap v0.5.0, git-pack v0.24.0, git-odb v0.34.0, git-packetline v0.13.1, git-transport v0.21.0, git-protocol v0.21.0, git-revision v0.6.0, git-refspec v0.3.0, git-worktree v0.6.0, git-repository v0.25.0, safety bump 24 crates ([`104d922`](https://github.com/Byron/gitoxide/commit/104d922add61ab21c534c24ce8ed37cddf3e275a))
- prepare changelogs for release ([`d232567`](https://github.com/Byron/gitoxide/commit/d23256701a95284857dc8d1cb37c7c94cada973c))
- Merge branch 'diff' ([`25a7726`](https://github.com/Byron/gitoxide/commit/25a7726377fbe400ea3c4927d04e9dec99802b7b))
@@ -114,7 +151,7 @@ A maintenance release without user facing changes.
- 3 commits contributed to the release.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- - 0 issues like '(#ID)' where seen in commit messages
+ - 0 issues like '(#ID)' were seen in commit messages
### Commit Details
@@ -151,7 +188,7 @@ A maintenance release without user facing changes.
- 9 commits contributed to the release over the course of 4 calendar days.
- 4 days passed between releases.
- 5 commits were understood as [conventional](https://www.conventionalcommits.org).
- - 0 issues like '(#ID)' where seen in commit messages
+ - 0 issues like '(#ID)' were seen in commit messages
### Commit Details
@@ -186,7 +223,7 @@ A maintenance release without user facing changes.
- 4 commits contributed to the release.
- 1 day passed between releases.
- 1 commit was understood as [conventional](https://www.conventionalcommits.org).
- - 0 issues like '(#ID)' where seen in commit messages
+ - 0 issues like '(#ID)' were seen in commit messages
### Commit Details
@@ -577,7 +614,7 @@ Reserve the name for a necessary crate of the `gitoxide` project.
- 2 commits contributed to the release.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- - 0 issues like '(#ID)' where seen in commit messages
+ - 0 issues like '(#ID)' were seen in commit messages
### Commit Details
diff --git a/git-revision/Cargo.toml b/git-revision/Cargo.toml
index bfda35efff5..e3a5d4fbd02 100644
--- a/git-revision/Cargo.toml
+++ b/git-revision/Cargo.toml
@@ -1,11 +1,11 @@
[package]
name = "git-revision"
-version = "0.6.0"
+version = "0.7.0"
repository = "https://github.com/Byron/gitoxide"
license = "MIT/Apache-2.0"
description = "A WIP crate of the gitoxide project dealing with finding names for revisions and parsing specifications"
authors = ["Sebastian Thiel "]
-edition = "2018"
+edition = "2021"
include = ["src/**/*", "CHANGELOG.md", "README.md"]
[lib]
@@ -16,9 +16,9 @@ doctest = false
serde1 = [ "serde", "git-hash/serde1", "git-object/serde1" ]
[dependencies]
-git-hash = { version = "^0.9.11", path = "../git-hash" }
-git-object = { version = "^0.22.0", path = "../git-object" }
-git-date = { version = "^0.2.0", path = "../git-date" }
+git-hash = { version = "^0.10.0", path = "../git-hash" }
+git-object = { version = "^0.23.0", path = "../git-object" }
+git-date = { version = "^0.3.0", path = "../git-date" }
bstr = { version = "1.0.1", default-features = false, features = ["std"]}
hash_hasher = "2.0.3"
diff --git a/git-revision/fuzz/Cargo.toml b/git-revision/fuzz/Cargo.toml
index e1faa8ec7ac..e65c18e2e16 100644
--- a/git-revision/fuzz/Cargo.toml
+++ b/git-revision/fuzz/Cargo.toml
@@ -3,7 +3,7 @@ name = "git-revision-fuzz"
version = "0.0.0"
authors = ["Automatically generated"]
publish = false
-edition = "2018"
+edition = "2021"
[package.metadata]
cargo-fuzz = true
diff --git a/git-sec/CHANGELOG.md b/git-sec/CHANGELOG.md
index 306908c6cc1..c2fc8482f7c 100644
--- a/git-sec/CHANGELOG.md
+++ b/git-sec/CHANGELOG.md
@@ -5,6 +5,42 @@ 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.5.0 (2022-11-21)
+
+### New Features (BREAKING)
+
+ - upgrade edition to 2021 in most crates.
+ MSRV for this is 1.56, and we are now at 1.60 so should be compatible.
+ This isn't more than a patch release as it should break nobody
+ who is adhering to the MSRV, but let's be careful and mark it
+ breaking.
+
+ Note that `git-features` and `git-pack` are still on edition 2018
+ as they make use of a workaround to support (safe) mutable access
+ to non-overlapping entries in a slice which doesn't work anymore
+ in edition 2021.
+
+### Commit Statistics
+
+
+
+ - 3 commits contributed to the release over the course of 2 calendar days.
+ - 14 days passed between releases.
+ - 1 commit was understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+
+
+view details
+
+ * **Uncategorized**
+ - prepare changelogs prior to release ([`e4648f8`](https://github.com/Byron/gitoxide/commit/e4648f827c97e9d13636d1bbdc83dd63436e6e5c))
+ - Merge branch 'version2021' ([`0e4462d`](https://github.com/Byron/gitoxide/commit/0e4462df7a5166fe85c23a779462cdca8ee013e8))
+ - upgrade edition to 2021 in most crates. ([`3d8fa8f`](https://github.com/Byron/gitoxide/commit/3d8fa8fef9800b1576beab8a5bc39b821157a5ed))
+
+
## 0.4.2 (2022-11-06)
A maintenance release without user-facing changes.
@@ -13,7 +49,7 @@ A maintenance release without user-facing changes.
- - 3 commits contributed to the release over the course of 2 calendar days.
+ - 4 commits contributed to the release over the course of 2 calendar days.
- 27 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
@@ -31,6 +67,7 @@ A maintenance release without user-facing changes.
view details
* **Uncategorized**
+ - Release git-features v0.23.1, git-glob v0.4.1, git-config-value v0.8.1, git-tempfile v2.0.6, git-object v0.22.1, git-ref v0.18.0, git-sec v0.4.2, git-config v0.10.0, git-prompt v0.1.1, git-url v0.10.1, git-credentials v0.6.1, git-diff v0.21.0, git-discover v0.7.0, git-index v0.7.0, git-pack v0.25.0, git-odb v0.35.0, git-transport v0.21.1, git-protocol v0.22.0, git-refspec v0.3.1, git-worktree v0.7.0, git-repository v0.26.0, git-commitgraph v0.10.0, gitoxide-core v0.19.0, gitoxide v0.17.0, safety bump 9 crates ([`d071583`](https://github.com/Byron/gitoxide/commit/d071583c5576fdf5f7717765ffed5681792aa81f))
- prepare changelogs prior to release ([`423af90`](https://github.com/Byron/gitoxide/commit/423af90c8202d62dc1ea4a76a0df6421d1f0aa06))
- Merge branch 'main' into write-sparse-index (upgrade to Rust 1.65) ([`5406630`](https://github.com/Byron/gitoxide/commit/5406630466145990b5adbdadb59151036993060d))
- thanks clippy ([`04cfa63`](https://github.com/Byron/gitoxide/commit/04cfa635a65ae34ad6d22391f2febd2ca7eabca9))
diff --git a/git-sec/Cargo.toml b/git-sec/Cargo.toml
index fa021b5116c..a8233f80055 100644
--- a/git-sec/Cargo.toml
+++ b/git-sec/Cargo.toml
@@ -1,11 +1,11 @@
[package]
name = "git-sec"
-version = "0.4.2"
+version = "0.5.0"
repository = "https://github.com/Byron/gitoxide"
license = "MIT/Apache-2.0"
description = "A WIP crate of the gitoxide project providing a shared trust model"
authors = ["Sebastian Thiel "]
-edition = "2018"
+edition = "2021"
include = ["src/**/*", "CHANGELOG.md"]
[lib]
@@ -25,7 +25,7 @@ document-features = { version = "0.2.1", optional = true }
libc = "0.2.123"
[target.'cfg(windows)'.dependencies]
-git-path = { version = "^0.5.0", path = "../git-path" }
+git-path = { version = "^0.6.0", path = "../git-path" }
dirs = "4"
windows = { version = "0.40.0", features = [
"Win32_Foundation",
diff --git a/git-sequencer/Cargo.toml b/git-sequencer/Cargo.toml
index 992e8cb93a0..82224292444 100644
--- a/git-sequencer/Cargo.toml
+++ b/git-sequencer/Cargo.toml
@@ -5,7 +5,7 @@ repository = "https://github.com/Byron/gitoxide"
license = "MIT/Apache-2.0"
description = "A WIP crate of the gitoxide project handling sequences of human-aided operations"
authors = ["Sebastian Thiel "]
-edition = "2018"
+edition = "2021"
[lib]
doctest = false
diff --git a/git-submodule/Cargo.toml b/git-submodule/Cargo.toml
index 39f4b03663c..1aea7f4c160 100644
--- a/git-submodule/Cargo.toml
+++ b/git-submodule/Cargo.toml
@@ -5,7 +5,7 @@ repository = "https://github.com/Byron/gitoxide"
license = "MIT/Apache-2.0"
description = "A WIP crate of the gitoxide project dealing git submodules"
authors = ["Sebastian Thiel "]
-edition = "2018"
+edition = "2021"
[lib]
doctest = false
diff --git a/git-tempfile/CHANGELOG.md b/git-tempfile/CHANGELOG.md
index 97e908cc958..d4bde914a7c 100644
--- a/git-tempfile/CHANGELOG.md
+++ b/git-tempfile/CHANGELOG.md
@@ -5,6 +5,42 @@ 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).
+## 3.0.0 (2022-11-21)
+
+### New Features (BREAKING)
+
+ - upgrade edition to 2021 in most crates.
+ MSRV for this is 1.56, and we are now at 1.60 so should be compatible.
+ This isn't more than a patch release as it should break nobody
+ who is adhering to the MSRV, but let's be careful and mark it
+ breaking.
+
+ Note that `git-features` and `git-pack` are still on edition 2018
+ as they make use of a workaround to support (safe) mutable access
+ to non-overlapping entries in a slice which doesn't work anymore
+ in edition 2021.
+
+### Commit Statistics
+
+
+
+ - 3 commits contributed to the release over the course of 2 calendar days.
+ - 14 days passed between releases.
+ - 1 commit was understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+
+
+view details
+
+ * **Uncategorized**
+ - prepare changelogs prior to release ([`e4648f8`](https://github.com/Byron/gitoxide/commit/e4648f827c97e9d13636d1bbdc83dd63436e6e5c))
+ - Merge branch 'version2021' ([`0e4462d`](https://github.com/Byron/gitoxide/commit/0e4462df7a5166fe85c23a779462cdca8ee013e8))
+ - upgrade edition to 2021 in most crates. ([`3d8fa8f`](https://github.com/Byron/gitoxide/commit/3d8fa8fef9800b1576beab8a5bc39b821157a5ed))
+
+
## 2.0.6 (2022-11-06)
A maintenance release without user-facing changes.
@@ -13,7 +49,7 @@ A maintenance release without user-facing changes.
- - 4 commits contributed to the release over the course of 47 calendar days.
+ - 5 commits contributed to the release over the course of 47 calendar days.
- 47 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
@@ -31,6 +67,7 @@ A maintenance release without user-facing changes.
view details
* **Uncategorized**
+ - Release git-features v0.23.1, git-glob v0.4.1, git-config-value v0.8.1, git-tempfile v2.0.6, git-object v0.22.1, git-ref v0.18.0, git-sec v0.4.2, git-config v0.10.0, git-prompt v0.1.1, git-url v0.10.1, git-credentials v0.6.1, git-diff v0.21.0, git-discover v0.7.0, git-index v0.7.0, git-pack v0.25.0, git-odb v0.35.0, git-transport v0.21.1, git-protocol v0.22.0, git-refspec v0.3.1, git-worktree v0.7.0, git-repository v0.26.0, git-commitgraph v0.10.0, gitoxide-core v0.19.0, gitoxide v0.17.0, safety bump 9 crates ([`d071583`](https://github.com/Byron/gitoxide/commit/d071583c5576fdf5f7717765ffed5681792aa81f))
- prepare changelogs prior to release ([`423af90`](https://github.com/Byron/gitoxide/commit/423af90c8202d62dc1ea4a76a0df6421d1f0aa06))
- Merge branch 'main' into write-sparse-index (upgrade to Rust 1.65) ([`5406630`](https://github.com/Byron/gitoxide/commit/5406630466145990b5adbdadb59151036993060d))
- thanks clippy ([`04cfa63`](https://github.com/Byron/gitoxide/commit/04cfa635a65ae34ad6d22391f2febd2ca7eabca9))
diff --git a/git-tempfile/Cargo.toml b/git-tempfile/Cargo.toml
index 88938873f3b..969a69a2ac4 100644
--- a/git-tempfile/Cargo.toml
+++ b/git-tempfile/Cargo.toml
@@ -1,11 +1,11 @@
[package]
name = "git-tempfile"
-version = "2.0.6"
+version = "3.0.0"
repository = "https://github.com/Byron/gitoxide"
license = "MIT/Apache-2.0"
description = "A tempfile implementation with a global registry to assure cleanup"
authors = ["Sebastian Thiel "]
-edition = "2018"
+edition = "2021"
include = ["src/**/*", "LICENSE-*", "README.md", "CHANGELOG.md"]
[lib]
diff --git a/git-tix/Cargo.toml b/git-tix/Cargo.toml
index 6714c74fd67..8e931fef06a 100644
--- a/git-tix/Cargo.toml
+++ b/git-tix/Cargo.toml
@@ -5,7 +5,7 @@ repository = "https://github.com/Byron/gitoxide"
license = "MIT/Apache-2.0"
description = "A tool like `tig`, but minimal, fast and efficient"
authors = ["Sebastian Thiel "]
-edition = "2018"
+edition = "2021"
[lib]
doctest = false
diff --git a/git-transport/CHANGELOG.md b/git-transport/CHANGELOG.md
index d225a2691ea..4d1b4b4b2f4 100644
--- a/git-transport/CHANGELOG.md
+++ b/git-transport/CHANGELOG.md
@@ -5,6 +5,62 @@ 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.23.0 (2022-11-21)
+
+### New Features (BREAKING)
+
+ - upgrade edition to 2021 in most crates.
+ MSRV for this is 1.56, and we are now at 1.60 so should be compatible.
+ This isn't more than a patch release as it should break nobody
+ who is adhering to the MSRV, but let's be careful and mark it
+ breaking.
+
+ Note that `git-features` and `git-pack` are still on edition 2018
+ as they make use of a workaround to support (safe) mutable access
+ to non-overlapping entries in a slice which doesn't work anymore
+ in edition 2021.
+
+### Bug Fixes (BREAKING)
+
+ - `max-pure` now builds without any C build tooling due to lack of `openssl-sys`.
+ To make this work, we leave the `reqwest` configuration to downstream crates.
+ Note that this means downstream will have to select their TLS settings
+ themselves, so builds may fail after upgrade until this is done.
+
+ An example for a `reqwest` configuration can be found in the
+ `gitoxide` Cargo.toml in the root of the `gitoxide` repository.
+
+### Commit Statistics
+
+
+
+ - 6 commits contributed to the release over the course of 2 calendar days.
+ - 4 days passed between releases.
+ - 2 commits were understood as [conventional](https://www.conventionalcommits.org).
+ - 1 unique issue was worked on: [#602](https://github.com/Byron/gitoxide/issues/602)
+
+### Thanks Clippy
+
+
+
+[Clippy](https://github.com/rust-lang/rust-clippy) helped 1 time to make code idiomatic.
+
+### Commit Details
+
+
+
+view details
+
+ * **[#602](https://github.com/Byron/gitoxide/issues/602)**
+ - `max-pure` now builds without any C build tooling due to lack of `openssl-sys`. ([`4308a20`](https://github.com/Byron/gitoxide/commit/4308a209dddcbb461c34d45fb9af8b4621d4600a))
+ * **Uncategorized**
+ - prepare changelogs prior to release ([`e4648f8`](https://github.com/Byron/gitoxide/commit/e4648f827c97e9d13636d1bbdc83dd63436e6e5c))
+ - Merge branch 'max-pure' ([`03ff188`](https://github.com/Byron/gitoxide/commit/03ff1882f2982fba38fbbf245eea13ef9df50f33))
+ - thanks clippy ([`c7cba33`](https://github.com/Byron/gitoxide/commit/c7cba333dd8654995b367498609b4280fe394402))
+ - Merge branch 'version2021' ([`0e4462d`](https://github.com/Byron/gitoxide/commit/0e4462df7a5166fe85c23a779462cdca8ee013e8))
+ - upgrade edition to 2021 in most crates. ([`3d8fa8f`](https://github.com/Byron/gitoxide/commit/3d8fa8fef9800b1576beab8a5bc39b821157a5ed))
+
+
## 0.22.0 (2022-11-17)
### Changed
@@ -36,7 +92,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- - 27 commits contributed to the release over the course of 8 calendar days.
+ - 28 commits contributed to the release over the course of 8 calendar days.
- 8 days passed between releases.
- 5 commits were understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
@@ -48,6 +104,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details
* **Uncategorized**
+ - Release git-glob v0.4.2, git-config-value v0.8.2, git-lock v2.2.0, git-ref v0.19.0, git-config v0.11.0, git-discover v0.8.0, git-index v0.8.0, git-transport v0.22.0, git-protocol v0.23.0, git-worktree v0.8.0, git-repository v0.28.0, gitoxide-core v0.20.0, gitoxide v0.18.0, safety bump 9 crates ([`0c253b1`](https://github.com/Byron/gitoxide/commit/0c253b15143dcedfe4c66d64ab1ea6e097030651))
- prepare changelogs prior to release ([`fe5721f`](https://github.com/Byron/gitoxide/commit/fe5721f888c64c79fe9a734a9e33b94a282f8d97))
- Merge branch 'http-config' ([`665b53e`](https://github.com/Byron/gitoxide/commit/665b53e1c2e1de65fafa28b669f58977868bbc81))
- Merge branch 'push-support' ([`42356ab`](https://github.com/Byron/gitoxide/commit/42356abf9d08dd86ce464fa48e25bbcc98ceefd4))
diff --git a/git-transport/Cargo.toml b/git-transport/Cargo.toml
index 08a0e97ccf9..7d941379bd1 100644
--- a/git-transport/Cargo.toml
+++ b/git-transport/Cargo.toml
@@ -1,11 +1,11 @@
[package]
name = "git-transport"
-version = "0.22.0"
+version = "0.23.0"
repository = "https://github.com/Byron/gitoxide"
license = "MIT/Apache-2.0"
description = "A WIP crate of the gitoxide project dedicated to implementing the git transport layer"
authors = ["Sebastian Thiel "]
-edition = "2018"
+edition = "2021"
include = ["src/**/*", "CHANGELOG.md"]
[lib]
@@ -52,11 +52,11 @@ path = "tests/async-transport.rs"
required-features = ["async-client"]
[dependencies]
-git-features = { version = "^0.23.1", path = "../git-features" }
-git-url = { version = "^0.10.1", path = "../git-url" }
-git-sec = { version = "^0.4.2", path = "../git-sec" }
-git-packetline = { version = "^0.13.1", path = "../git-packetline" }
-git-credentials = { version = "^0.6.1", path = "../git-credentials", optional = true }
+git-features = { version = "^0.24.0", path = "../git-features" }
+git-url = { version = "^0.11.0", path = "../git-url" }
+git-sec = { version = "^0.5.0", path = "../git-sec" }
+git-packetline = { version = "^0.14.0", path = "../git-packetline" }
+git-credentials = { version = "^0.7.0", path = "../git-credentials", optional = true }
serde = { version = "1.0.114", optional = true, default-features = false, features = ["std", "derive"]}
bstr = { version = "1.0.1", default-features = false, features = ["std"] }
@@ -76,7 +76,7 @@ base64 = { version = "0.13.0", optional = true }
curl = { version = "0.4", optional = true, features = ["static-curl", "static-ssl", "zlib-ng-compat"] }
# for http-client-reqwest
-reqwest = { version = "0.11.12", optional = true, features = ["blocking"] }
+reqwest = { version = "0.11.12", optional = true, default-features = false, features = ["blocking"] }
## If used in conjunction with `async-client`, the `connect()` method will become available along with supporting the git protocol over TCP,
## where the TCP stream is created using this crate.
diff --git a/git-transport/src/client/blocking_io/file.rs b/git-transport/src/client/blocking_io/file.rs
index 7ad6a167166..ff0d5bd9bd3 100644
--- a/git-transport/src/client/blocking_io/file.rs
+++ b/git-transport/src/client/blocking_io/file.rs
@@ -1,6 +1,6 @@
-use std::borrow::Cow;
use std::{
any::Any,
+ borrow::Cow,
error::Error,
process::{self, Command, Stdio},
};
diff --git a/git-transport/src/client/blocking_io/http/mod.rs b/git-transport/src/client/blocking_io/http/mod.rs
index eb53d7ebf39..b1cef4428fc 100644
--- a/git-transport/src/client/blocking_io/http/mod.rs
+++ b/git-transport/src/client/blocking_io/http/mod.rs
@@ -1,11 +1,11 @@
-use bstr::BStr;
-use std::sync::{Arc, Mutex};
use std::{
any::Any,
borrow::Cow,
io::{BufRead, Read},
+ sync::{Arc, Mutex},
};
+use bstr::BStr;
use git_packetline::PacketLineRef;
pub use traits::{Error, GetResponse, Http, PostResponse};
diff --git a/git-transport/src/client/blocking_io/http/reqwest/mod.rs b/git-transport/src/client/blocking_io/http/reqwest/mod.rs
index ff53742718a..bce024f9741 100644
--- a/git-transport/src/client/blocking_io/http/reqwest/mod.rs
+++ b/git-transport/src/client/blocking_io/http/reqwest/mod.rs
@@ -10,18 +10,18 @@ pub struct Remote {
config: crate::client::http::Options,
}
+/// A function to configure a single request prior to sending it, support most complex configuration beyond what's possible with
+/// basic `git` http configuration.
+pub type ConfigureRequestFn = dyn FnMut(&mut reqwest::blocking::Request) -> Result<(), Box>
+ + Send
+ + Sync
+ + 'static;
+
/// Options to configure the reqwest HTTP handler.
#[derive(Default)]
pub struct Options {
/// A function to configure the request that is about to be made.
- pub configure_request: Option<
- Box<
- dyn FnMut(&mut reqwest::blocking::Request) -> Result<(), Box>
- + Send
- + Sync
- + 'static,
- >,
- >,
+ pub configure_request: Option>,
}
mod remote;
diff --git a/git-transport/src/client/git/async_io.rs b/git-transport/src/client/git/async_io.rs
index cc8a55d4af5..d5644a4e7f0 100644
--- a/git-transport/src/client/git/async_io.rs
+++ b/git-transport/src/client/git/async_io.rs
@@ -1,5 +1,4 @@
-use std::borrow::Cow;
-use std::error::Error;
+use std::{borrow::Cow, error::Error};
use async_trait::async_trait;
use bstr::{BStr, BString, ByteVec};
diff --git a/git-transport/src/client/git/blocking_io.rs b/git-transport/src/client/git/blocking_io.rs
index 0490f2b94c9..2553141be99 100644
--- a/git-transport/src/client/git/blocking_io.rs
+++ b/git-transport/src/client/git/blocking_io.rs
@@ -1,5 +1,4 @@
-use std::borrow::Cow;
-use std::{any::Any, error::Error, io::Write};
+use std::{any::Any, borrow::Cow, error::Error, io::Write};
use bstr::{BStr, BString, ByteVec};
use git_packetline::PacketLineRef;
diff --git a/git-transport/src/client/traits.rs b/git-transport/src/client/traits.rs
index 47dcdb14c5f..ca340bf94ef 100644
--- a/git-transport/src/client/traits.rs
+++ b/git-transport/src/client/traits.rs
@@ -1,10 +1,11 @@
-use bstr::BStr;
-use std::borrow::Cow;
use std::{
any::Any,
+ borrow::Cow,
ops::{Deref, DerefMut},
};
+use bstr::BStr;
+
#[cfg(any(feature = "blocking-client", feature = "async-client"))]
use crate::client::{MessageKind, RequestWriter, WriteMode};
use crate::{client::Error, Protocol};
diff --git a/git-traverse/CHANGELOG.md b/git-traverse/CHANGELOG.md
index 7e20e641af4..42257e5c4e8 100644
--- a/git-traverse/CHANGELOG.md
+++ b/git-traverse/CHANGELOG.md
@@ -5,6 +5,44 @@ 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.19.0 (2022-11-21)
+
+### New Features (BREAKING)
+
+ - upgrade edition to 2021 in most crates.
+ MSRV for this is 1.56, and we are now at 1.60 so should be compatible.
+ This isn't more than a patch release as it should break nobody
+ who is adhering to the MSRV, but let's be careful and mark it
+ breaking.
+
+ Note that `git-features` and `git-pack` are still on edition 2018
+ as they make use of a workaround to support (safe) mutable access
+ to non-overlapping entries in a slice which doesn't work anymore
+ in edition 2021.
+
+### Commit Statistics
+
+
+
+ - 5 commits contributed to the release over the course of 2 calendar days.
+ - 42 days passed between releases.
+ - 1 commit was understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+
+
+view details
+
+ * **Uncategorized**
+ - prepare changelogs prior to release ([`e4648f8`](https://github.com/Byron/gitoxide/commit/e4648f827c97e9d13636d1bbdc83dd63436e6e5c))
+ - Merge branch 'breadthfirst-improvements' ([`b755b5b`](https://github.com/Byron/gitoxide/commit/b755b5bd4cbf8839ba43a143183ae785584f1d59))
+ - refactor ([`c0bfb42`](https://github.com/Byron/gitoxide/commit/c0bfb42f3b8bd7d94452d2023aab3901387178f9))
+ - Merge branch 'version2021' ([`0e4462d`](https://github.com/Byron/gitoxide/commit/0e4462df7a5166fe85c23a779462cdca8ee013e8))
+ - upgrade edition to 2021 in most crates. ([`3d8fa8f`](https://github.com/Byron/gitoxide/commit/3d8fa8fef9800b1576beab8a5bc39b821157a5ed))
+
+
## 0.18.0 (2022-10-10)
### New Features
@@ -17,7 +55,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- - 7 commits contributed to the release over the course of 20 calendar days.
+ - 8 commits contributed to the release over the course of 20 calendar days.
- 20 days passed between releases.
- 1 commit was understood as [conventional](https://www.conventionalcommits.org).
- 1 unique issue was worked on: [#450](https://github.com/Byron/gitoxide/issues/450)
@@ -31,6 +69,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
* **[#450](https://github.com/Byron/gitoxide/issues/450)**
- add `commit::Sorting::ByCommitTimeNewestFirstCutoffOlderThan(time)`. ([`86a99a9`](https://github.com/Byron/gitoxide/commit/86a99a90eb992322099a870fbba10dddbcb80e83))
* **Uncategorized**
+ - Release git-hash v0.9.11, git-features v0.23.0, git-actor v0.13.0, git-attributes v0.5.0, git-object v0.22.0, git-ref v0.17.0, git-sec v0.4.1, git-config v0.9.0, git-url v0.10.0, git-credentials v0.6.0, git-diff v0.20.0, git-discover v0.6.0, git-traverse v0.18.0, git-index v0.6.0, git-mailmap v0.5.0, git-pack v0.24.0, git-odb v0.34.0, git-packetline v0.13.1, git-transport v0.21.0, git-protocol v0.21.0, git-revision v0.6.0, git-refspec v0.3.0, git-worktree v0.6.0, git-repository v0.25.0, safety bump 24 crates ([`104d922`](https://github.com/Byron/gitoxide/commit/104d922add61ab21c534c24ce8ed37cddf3e275a))
- prepare changelogs for release ([`d232567`](https://github.com/Byron/gitoxide/commit/d23256701a95284857dc8d1cb37c7c94cada973c))
- Merge branch 'main' into new-http-impl ([`702a161`](https://github.com/Byron/gitoxide/commit/702a161ef11fc959611bf44b70e9ffe04561c7ad))
- make fmt ([`53acf25`](https://github.com/Byron/gitoxide/commit/53acf2565743eff7cead7a42011107b2fc8d7e0e))
@@ -150,7 +189,7 @@ Maintenance release without user-facing changes.
- 6 commits contributed to the release over the course of 5 calendar days.
- 6 days passed between releases.
- 2 commits were understood as [conventional](https://www.conventionalcommits.org).
- - 0 issues like '(#ID)' where seen in commit messages
+ - 0 issues like '(#ID)' were seen in commit messages
### Commit Details
@@ -221,7 +260,7 @@ This is a maintenance release with no functional changes.
- 6 commits contributed to the release over the course of 64 calendar days.
- 64 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- - 0 issues like '(#ID)' where seen in commit messages
+ - 0 issues like '(#ID)' were seen in commit messages
### Commit Details
@@ -427,7 +466,7 @@ A maintenance release, triggered by putting too many adjustments into a single c
- 3 commits contributed to the release.
- 12 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- - 0 issues like '(#ID)' where seen in commit messages
+ - 0 issues like '(#ID)' were seen in commit messages
### Commit Details
@@ -579,7 +618,7 @@ Some module paths have been removed to avoid path duplication, possibly leading
- 2 commits contributed to the release.
- 1 day passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- - 0 issues like '(#ID)' where seen in commit messages
+ - 0 issues like '(#ID)' were seen in commit messages
### Commit Details
@@ -601,7 +640,7 @@ Some module paths have been removed to avoid path duplication, possibly leading
- 3 commits contributed to the release over the course of 1 calendar day.
- 10 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- - 0 issues like '(#ID)' where seen in commit messages
+ - 0 issues like '(#ID)' were seen in commit messages
### Commit Details
@@ -624,7 +663,7 @@ Some module paths have been removed to avoid path duplication, possibly leading
- 13 commits contributed to the release over the course of 2 calendar days.
- 10 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- - 0 issues like '(#ID)' where seen in commit messages
+ - 0 issues like '(#ID)' were seen in commit messages
### Commit Details
@@ -657,7 +696,7 @@ Some module paths have been removed to avoid path duplication, possibly leading
- 2 commits contributed to the release over the course of 1 calendar day.
- 3 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- - 0 issues like '(#ID)' where seen in commit messages
+ - 0 issues like '(#ID)' were seen in commit messages
### Commit Details
@@ -678,7 +717,7 @@ Some module paths have been removed to avoid path duplication, possibly leading
- 2 commits contributed to the release.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- - 0 issues like '(#ID)' where seen in commit messages
+ - 0 issues like '(#ID)' were seen in commit messages
### Commit Details
@@ -700,7 +739,7 @@ Some module paths have been removed to avoid path duplication, possibly leading
- 4 commits contributed to the release over the course of 1 calendar day.
- 1 day passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- - 0 issues like '(#ID)' where seen in commit messages
+ - 0 issues like '(#ID)' were seen in commit messages
### Commit Details
@@ -723,7 +762,7 @@ Some module paths have been removed to avoid path duplication, possibly leading
- 2 commits contributed to the release.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- - 0 issues like '(#ID)' where seen in commit messages
+ - 0 issues like '(#ID)' were seen in commit messages
### Commit Details
@@ -744,7 +783,7 @@ Some module paths have been removed to avoid path duplication, possibly leading
- 3 commits contributed to the release.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- - 0 issues like '(#ID)' where seen in commit messages
+ - 0 issues like '(#ID)' were seen in commit messages
### Commit Details
@@ -766,7 +805,7 @@ Some module paths have been removed to avoid path duplication, possibly leading
- 2 commits contributed to the release.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- - 0 issues like '(#ID)' where seen in commit messages
+ - 0 issues like '(#ID)' were seen in commit messages
### Commit Details
@@ -788,7 +827,7 @@ Some module paths have been removed to avoid path duplication, possibly leading
- 24 commits contributed to the release over the course of 83 calendar days.
- 93 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- - 0 issues like '(#ID)' where seen in commit messages
+ - 0 issues like '(#ID)' were seen in commit messages
### Commit Details
@@ -832,7 +871,7 @@ Some module paths have been removed to avoid path duplication, possibly leading
- 17 commits contributed to the release over the course of 8 calendar days.
- 8 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- - 0 issues like '(#ID)' where seen in commit messages
+ - 0 issues like '(#ID)' were seen in commit messages
### Commit Details
@@ -868,7 +907,7 @@ Some module paths have been removed to avoid path duplication, possibly leading
- 6 commits contributed to the release.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- - 0 issues like '(#ID)' where seen in commit messages
+ - 0 issues like '(#ID)' were seen in commit messages
### Commit Details
@@ -893,7 +932,7 @@ Some module paths have been removed to avoid path duplication, possibly leading
- 1 commit contributed to the release.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- - 0 issues like '(#ID)' where seen in commit messages
+ - 0 issues like '(#ID)' were seen in commit messages
### Commit Details
diff --git a/git-traverse/Cargo.toml b/git-traverse/Cargo.toml
index a415b2e18d1..a62797f3833 100644
--- a/git-traverse/Cargo.toml
+++ b/git-traverse/Cargo.toml
@@ -1,19 +1,19 @@
[package]
name = "git-traverse"
-version = "0.18.0"
+version = "0.19.0"
repository = "https://github.com/Byron/gitoxide"
license = "MIT/Apache-2.0"
description = "A WIP crate of the gitoxide project"
authors = ["Sebastian Thiel "]
-edition = "2018"
+edition = "2021"
include = ["src/**/*"]
[lib]
doctest = false
[dependencies]
-git-hash = { version = "^0.9.11", path = "../git-hash" }
-git-object = { version = "^0.22.0", path = "../git-object" }
+git-hash = { version = "^0.10.0", path = "../git-hash" }
+git-object = { version = "^0.23.0", path = "../git-object" }
thiserror = "1.0.32"
hash_hasher = "2.0.3"
diff --git a/git-traverse/src/tree/breadthfirst.rs b/git-traverse/src/tree/breadthfirst.rs
index b8ae7ff3782..b8891b7e371 100644
--- a/git-traverse/src/tree/breadthfirst.rs
+++ b/git-traverse/src/tree/breadthfirst.rs
@@ -17,7 +17,7 @@ pub enum Error {
/// The state used and potentially shared by multiple tree traversals.
#[derive(Default, Clone)]
pub struct State {
- next: VecDeque<(bool, ObjectId)>,
+ next: VecDeque,
buf: Vec,
}
@@ -76,7 +76,7 @@ pub(crate) mod impl_ {
Continue => {
delegate.pop_path_component();
delegate.push_back_tracked_path_component(entry.filename);
- state.next.push_back((true, entry.oid.to_owned()))
+ state.next.push_back(entry.oid.to_owned())
}
Cancel => {
return Err(Error::Cancelled);
@@ -93,10 +93,8 @@ pub(crate) mod impl_ {
delegate.pop_path_component();
}
match state.next.pop_front() {
- Some((should_pop_path, oid)) => {
- if should_pop_path {
- delegate.pop_front_tracked_path_and_set_current();
- }
+ Some(oid) => {
+ delegate.pop_front_tracked_path_and_set_current();
match find(&oid, &mut state.buf) {
Some(tree_iter) => tree = tree_iter,
None => return Err(Error::NotFound { oid: oid.to_owned() }),
diff --git a/git-tui/Cargo.toml b/git-tui/Cargo.toml
index 3c51b4b6ab3..e39023e2904 100644
--- a/git-tui/Cargo.toml
+++ b/git-tui/Cargo.toml
@@ -5,7 +5,7 @@ repository = "https://github.com/Byron/gitoxide"
license = "MIT/Apache-2.0"
description = "A WIP crate of the gitoxide project dedicated to a terminal user interface to interact with git repositories"
authors = ["Sebastian Thiel "]
-edition = "2018"
+edition = "2021"
[[bin]]
name = "gixi"
diff --git a/git-url/CHANGELOG.md b/git-url/CHANGELOG.md
index 9b42ab7224d..ce81b7996dd 100644
--- a/git-url/CHANGELOG.md
+++ b/git-url/CHANGELOG.md
@@ -5,6 +5,42 @@ 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.11.0 (2022-11-21)
+
+### New Features (BREAKING)
+
+ - upgrade edition to 2021 in most crates.
+ MSRV for this is 1.56, and we are now at 1.60 so should be compatible.
+ This isn't more than a patch release as it should break nobody
+ who is adhering to the MSRV, but let's be careful and mark it
+ breaking.
+
+ Note that `git-features` and `git-pack` are still on edition 2018
+ as they make use of a workaround to support (safe) mutable access
+ to non-overlapping entries in a slice which doesn't work anymore
+ in edition 2021.
+
+### Commit Statistics
+
+
+
+ - 3 commits contributed to the release over the course of 2 calendar days.
+ - 14 days passed between releases.
+ - 1 commit was understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+
+
+view details
+
+ * **Uncategorized**
+ - prepare changelogs prior to release ([`e4648f8`](https://github.com/Byron/gitoxide/commit/e4648f827c97e9d13636d1bbdc83dd63436e6e5c))
+ - Merge branch 'version2021' ([`0e4462d`](https://github.com/Byron/gitoxide/commit/0e4462df7a5166fe85c23a779462cdca8ee013e8))
+ - upgrade edition to 2021 in most crates. ([`3d8fa8f`](https://github.com/Byron/gitoxide/commit/3d8fa8fef9800b1576beab8a5bc39b821157a5ed))
+
+
## 0.10.1 (2022-11-06)
### New Features
@@ -17,7 +53,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- - 5 commits contributed to the release over the course of 25 calendar days.
+ - 6 commits contributed to the release over the course of 25 calendar days.
- 27 days passed between releases.
- 1 commit was understood as [conventional](https://www.conventionalcommits.org).
- 1 unique issue was worked on: [#450](https://github.com/Byron/gitoxide/issues/450)
@@ -31,6 +67,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
* **[#450](https://github.com/Byron/gitoxide/issues/450)**
- add `Url::canonicalized()` and `Url::canonicalize()`. ([`01f2574`](https://github.com/Byron/gitoxide/commit/01f25744bba45a5f8a8615734a5beeacd29d1c4e))
* **Uncategorized**
+ - Release git-features v0.23.1, git-glob v0.4.1, git-config-value v0.8.1, git-tempfile v2.0.6, git-object v0.22.1, git-ref v0.18.0, git-sec v0.4.2, git-config v0.10.0, git-prompt v0.1.1, git-url v0.10.1, git-credentials v0.6.1, git-diff v0.21.0, git-discover v0.7.0, git-index v0.7.0, git-pack v0.25.0, git-odb v0.35.0, git-transport v0.21.1, git-protocol v0.22.0, git-refspec v0.3.1, git-worktree v0.7.0, git-repository v0.26.0, git-commitgraph v0.10.0, gitoxide-core v0.19.0, gitoxide v0.17.0, safety bump 9 crates ([`d071583`](https://github.com/Byron/gitoxide/commit/d071583c5576fdf5f7717765ffed5681792aa81f))
- prepare changelogs prior to release ([`423af90`](https://github.com/Byron/gitoxide/commit/423af90c8202d62dc1ea4a76a0df6421d1f0aa06))
- Merge branch 'main' into write-sparse-index ([`c4e6849`](https://github.com/Byron/gitoxide/commit/c4e68496c368611ebe17c6693d06c8147c28c717))
- Merge branch 'gix-clone' ([`def53b3`](https://github.com/Byron/gitoxide/commit/def53b36c3dec26fa78939ab0584fe4ff930909c))
diff --git a/git-url/Cargo.toml b/git-url/Cargo.toml
index ada96d1162b..3eb5ac56291 100644
--- a/git-url/Cargo.toml
+++ b/git-url/Cargo.toml
@@ -1,11 +1,11 @@
[package]
name = "git-url"
-version = "0.10.1"
+version = "0.11.0"
repository = "https://github.com/Byron/gitoxide"
license = "MIT/Apache-2.0"
description = "A WIP crate of the gitoxide project implementing parsing and serialization of git-url"
authors = ["Sebastian Thiel "]
-edition = "2018"
+edition = "2021"
include = ["src/**/*", "CHANGELOG.md"]
[lib]
@@ -16,8 +16,8 @@ doctest = false
serde1 = ["serde", "bstr/serde"]
[dependencies]
-git-features = { version = "^0.23.1", path = "../git-features" }
-git-path = { version = "^0.5.0", path = "../git-path" }
+git-features = { version = "^0.24.0", path = "../git-features" }
+git-path = { version = "^0.6.0", path = "../git-path" }
serde = { version = "1.0.114", optional = true, default-features = false, features = ["std", "derive"]}
thiserror = "1.0.32"
diff --git a/git-url/src/impls.rs b/git-url/src/impls.rs
index e191f4c79a9..6069c9ad283 100644
--- a/git-url/src/impls.rs
+++ b/git-url/src/impls.rs
@@ -40,7 +40,6 @@ impl TryFrom for Url {
type Error = parse::Error;
fn try_from(value: PathBuf) -> Result {
- use std::convert::TryInto;
git_path::into_bstr(value).try_into()
}
}
@@ -49,7 +48,6 @@ impl TryFrom<&Path> for Url {
type Error = parse::Error;
fn try_from(value: &Path) -> Result {
- use std::convert::TryInto;
git_path::into_bstr(value).try_into()
}
}
@@ -58,7 +56,6 @@ impl TryFrom<&std::ffi::OsStr> for Url {
type Error = parse::Error;
fn try_from(value: &std::ffi::OsStr) -> Result {
- use std::convert::TryInto;
git_path::os_str_into_bstr(value)
.expect("no illformed UTF-8 on Windows")
.try_into()
diff --git a/git-validate/CHANGELOG.md b/git-validate/CHANGELOG.md
index 0750f727093..8cab81fd5a9 100644
--- a/git-validate/CHANGELOG.md
+++ b/git-validate/CHANGELOG.md
@@ -5,6 +5,43 @@ 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.7.0 (2022-11-21)
+
+### New Features (BREAKING)
+
+ - upgrade edition to 2021 in most crates.
+ MSRV for this is 1.56, and we are now at 1.60 so should be compatible.
+ This isn't more than a patch release as it should break nobody
+ who is adhering to the MSRV, but let's be careful and mark it
+ breaking.
+
+ Note that `git-features` and `git-pack` are still on edition 2018
+ as they make use of a workaround to support (safe) mutable access
+ to non-overlapping entries in a slice which doesn't work anymore
+ in edition 2021.
+
+### Commit Statistics
+
+
+
+ - 4 commits contributed to the release over the course of 62 calendar days.
+ - 62 days passed between releases.
+ - 1 commit was understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+
+
+view details
+
+ * **Uncategorized**
+ - prepare changelogs prior to release ([`e4648f8`](https://github.com/Byron/gitoxide/commit/e4648f827c97e9d13636d1bbdc83dd63436e6e5c))
+ - Merge branch 'version2021' ([`0e4462d`](https://github.com/Byron/gitoxide/commit/0e4462df7a5166fe85c23a779462cdca8ee013e8))
+ - upgrade edition to 2021 in most crates. ([`3d8fa8f`](https://github.com/Byron/gitoxide/commit/3d8fa8fef9800b1576beab8a5bc39b821157a5ed))
+ - Merge branch 'diff' ([`25a7726`](https://github.com/Byron/gitoxide/commit/25a7726377fbe400ea3c4927d04e9dec99802b7b))
+
+
## 0.6.0 (2022-09-20)
@@ -21,7 +58,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- - 7 commits contributed to the release over the course of 13 calendar days.
+ - 10 commits contributed to the release over the course of 27 calendar days.
- 27 days passed between releases.
- 2 commits were understood as [conventional](https://www.conventionalcommits.org).
- 2 unique issues were worked on: [#450](https://github.com/Byron/gitoxide/issues/450), [#470](https://github.com/Byron/gitoxide/issues/470)
@@ -40,8 +77,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
* **[#470](https://github.com/Byron/gitoxide/issues/470)**
- update changelogs prior to release ([`caa7a1b`](https://github.com/Byron/gitoxide/commit/caa7a1bdef74d7d3166a7e38127a59f5ab3cfbdd))
* **Uncategorized**
- - Merge branch 'index-from-tree' ([`172f73c`](https://github.com/Byron/gitoxide/commit/172f73cf26878d153d51790fa01853fa4ba6beb7))
- - Merge branch 'git_date_relative' ([`83a3832`](https://github.com/Byron/gitoxide/commit/83a38329c59e9ebc057221da832fd8320bbeddb1))
+ - Release git-hash v0.9.10, git-features v0.22.5, git-date v0.2.0, git-actor v0.12.0, git-glob v0.4.0, git-path v0.5.0, git-quote v0.3.0, git-attributes v0.4.0, git-config-value v0.8.0, git-tempfile v2.0.5, git-validate v0.6.0, git-object v0.21.0, git-ref v0.16.0, git-sec v0.4.0, git-config v0.8.0, git-discover v0.5.0, git-traverse v0.17.0, git-index v0.5.0, git-worktree v0.5.0, git-testtools v0.9.0, git-command v0.1.0, git-prompt v0.1.0, git-url v0.9.0, git-credentials v0.5.0, git-diff v0.19.0, git-mailmap v0.4.0, git-chunk v0.3.2, git-pack v0.23.0, git-odb v0.33.0, git-packetline v0.13.0, git-transport v0.20.0, git-protocol v0.20.0, git-revision v0.5.0, git-refspec v0.2.0, git-repository v0.24.0, git-commitgraph v0.9.0, gitoxide-core v0.18.0, gitoxide v0.16.0, safety bump 28 crates ([`29a043b`](https://github.com/Byron/gitoxide/commit/29a043be6808a3e9199a9b26bd076fe843afe4f4))
+ - Merge branch 'filter-refs' ([`fd14489`](https://github.com/Byron/gitoxide/commit/fd14489f729172d615d0fa1e8dbd605e9eacf69d))
+ - Merge branch 'filter-refs' ([`e10554d`](https://github.com/Byron/gitoxide/commit/e10554d2a3b9c027353a432b0c84f7d3797b7cae))
+ - Merge branch 'main' into index-from-tree ([`bc64b96`](https://github.com/Byron/gitoxide/commit/bc64b96a2ec781c72d1d4daad38aa7fb8b74f99b))
+ - Merge branch 'main' into filter-refs-by-spec ([`cfa1440`](https://github.com/Byron/gitoxide/commit/cfa144031dbcac2707ab0cec012bc35e78f9c475))
## 0.5.5 (2022-08-24)
@@ -58,10 +98,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- - 4 commits contributed to the release over the course of 3 calendar days.
+ - 8 commits contributed to the release over the course of 96 calendar days.
- 97 days passed between releases.
- 2 commits were understood as [conventional](https://www.conventionalcommits.org).
- - 0 issues like '(#ID)' where seen in commit messages
+ - 0 issues like '(#ID)' were seen in commit messages
### Commit Details
@@ -71,9 +111,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
* **Uncategorized**
- Release git-date v0.0.5, git-hash v0.9.8, git-features v0.22.2, git-actor v0.11.3, git-glob v0.3.2, git-quote v0.2.1, git-attributes v0.3.2, git-tempfile v2.0.4, git-lock v2.1.1, git-validate v0.5.5, git-object v0.20.2, git-ref v0.15.2, git-sec v0.3.1, git-config v0.7.0, git-credentials v0.4.0, git-diff v0.17.2, git-discover v0.4.1, git-bitmap v0.1.2, git-index v0.4.2, git-mailmap v0.3.2, git-chunk v0.3.1, git-traverse v0.16.2, git-pack v0.21.2, git-odb v0.31.2, git-packetline v0.12.7, git-url v0.7.2, git-transport v0.19.2, git-protocol v0.19.0, git-revision v0.4.2, git-refspec v0.1.0, git-worktree v0.4.2, git-repository v0.22.0, safety bump 4 crates ([`4974eca`](https://github.com/Byron/gitoxide/commit/4974eca96d525d1ee4f8cad79bb713af7a18bf9d))
- - Merge branch 'example-new-repo' ([`946dd3a`](https://github.com/Byron/gitoxide/commit/946dd3a80522ef437e09528a93aa1433f01b0ee8))
+ - Merge branch 'main' into remote-ls-refs ([`e2ee3de`](https://github.com/Byron/gitoxide/commit/e2ee3ded97e5c449933712883535b30d151c7c78))
+ - Merge branch 'docsrs-show-features' ([`31c2351`](https://github.com/Byron/gitoxide/commit/31c235140cad212d16a56195763fbddd971d87ce))
- uniformize deny attributes ([`f7f136d`](https://github.com/Byron/gitoxide/commit/f7f136dbe4f86e7dee1d54835c420ec07c96cd78))
- remove default link to cargo doc everywhere ([`533e887`](https://github.com/Byron/gitoxide/commit/533e887e80c5f7ede8392884562e1c5ba56fb9a8))
+ - Merge pull request #1 from Byron/main ([`085e76b`](https://github.com/Byron/gitoxide/commit/085e76b121291ed9bd324139105d2bd4117bedf8))
+ - Merge branch 'main' into SidneyDouw-pathspec ([`a22b1d8`](https://github.com/Byron/gitoxide/commit/a22b1d88a21311d44509018729c3ef1936cf052a))
+ - Merge branch 'main' into git_includeif ([`598c853`](https://github.com/Byron/gitoxide/commit/598c853087fcf8f77299aa5b9803bcec705c0cd0))
## 0.5.4 (2022-05-18)
@@ -100,7 +144,7 @@ A maintenance release without user-facing changes.
- assure validation of typical worktree related reference names ([`de169ae`](https://github.com/Byron/gitoxide/commit/de169ae8912b5d06b42237fa06e7dd221e58a1f6))
* **Uncategorized**
- Release git-hash v0.9.4, git-features v0.21.0, git-actor v0.10.0, git-glob v0.3.0, git-path v0.1.1, git-attributes v0.1.0, git-sec v0.1.0, git-config v0.3.0, git-credentials v0.1.0, git-validate v0.5.4, git-object v0.19.0, git-diff v0.16.0, git-lock v2.1.0, git-ref v0.13.0, git-discover v0.1.0, git-index v0.3.0, git-mailmap v0.2.0, git-traverse v0.15.0, git-pack v0.19.0, git-odb v0.29.0, git-packetline v0.12.5, git-url v0.5.0, git-transport v0.17.0, git-protocol v0.16.0, git-revision v0.2.0, git-worktree v0.2.0, git-repository v0.17.0, safety bump 20 crates ([`654cf39`](https://github.com/Byron/gitoxide/commit/654cf39c92d5aa4c8d542a6cadf13d4acef6a78e))
- - Merge branch 'main' into refs-and-worktrees ([`9cf0c7b`](https://github.com/Byron/gitoxide/commit/9cf0c7bd0cc5419137db5796f3a5b91bdf3dcc94))
+ - Merge branch 'refs-and-worktrees' ([`8131227`](https://github.com/Byron/gitoxide/commit/8131227ddff6f36919b6a0f7b33792ebde0f8ae9))
## v0.5.3 (2021-10-15)
@@ -111,7 +155,7 @@ This release contains no functional changes.
- - 19 commits contributed to the release over the course of 23 calendar days.
+ - 20 commits contributed to the release over the course of 23 calendar days.
- 59 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- 2 unique issues were worked on: [#198](https://github.com/Byron/gitoxide/issues/198), [#205](https://github.com/Byron/gitoxide/issues/205)
@@ -144,6 +188,7 @@ This release contains no functional changes.
- Release git-hash v0.7.0, git-features v0.16.5, git-actor v0.5.3, git-config v0.1.7, git-validate v0.5.3, git-object v0.14.1, git-diff v0.10.0, git-tempfile v1.0.3, git-lock v1.0.1, git-traverse v0.9.0, git-pack v0.12.0, git-odb v0.22.0, git-packetline v0.11.0, git-url v0.3.4, git-transport v0.12.0, git-protocol v0.11.0, git-ref v0.8.0, git-repository v0.10.0, cargo-smart-release v0.4.0 ([`59ffbd9`](https://github.com/Byron/gitoxide/commit/59ffbd9f15583c8248b7f48b3f55ec6faffe7cfe))
- Adjusting changelogs prior to release of git-hash v0.7.0, git-features v0.16.5, git-actor v0.5.3, git-validate v0.5.3, git-object v0.14.1, git-diff v0.10.0, git-tempfile v1.0.3, git-lock v1.0.1, git-traverse v0.9.0, git-pack v0.12.0, git-odb v0.22.0, git-packetline v0.11.0, git-url v0.3.4, git-transport v0.12.0, git-protocol v0.11.0, git-ref v0.8.0, git-repository v0.10.0, cargo-smart-release v0.4.0, safety bump 3 crates ([`a474395`](https://github.com/Byron/gitoxide/commit/a47439590e36b1cb8b516b6053fd5cbfc42efed7))
- Update changelogs just for fun ([`21541b3`](https://github.com/Byron/gitoxide/commit/21541b3301de1e053fc0e84373be60d2162fbaae))
+ - Merge branch 'changelog-generation' ([`bf0106e`](https://github.com/Byron/gitoxide/commit/bf0106ea21734d4e59d190b424c22743c22da966))
## v0.5.2 (2021-08-17)
@@ -155,7 +200,7 @@ This release contains no functional changes.
- 2 commits contributed to the release over the course of 1 calendar day.
- 3 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- - 0 issues like '(#ID)' where seen in commit messages
+ - 0 issues like '(#ID)' were seen in commit messages
### Commit Details
@@ -177,7 +222,7 @@ This release contains no functional changes.
- 2 commits contributed to the release.
- 2 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- - 0 issues like '(#ID)' where seen in commit messages
+ - 0 issues like '(#ID)' were seen in commit messages
### Commit Details
@@ -198,7 +243,7 @@ This release contains no functional changes.
- 2 commits contributed to the release.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- - 0 issues like '(#ID)' where seen in commit messages
+ - 0 issues like '(#ID)' were seen in commit messages
### Commit Details
@@ -217,10 +262,10 @@ This release contains no functional changes.
- - 20 commits contributed to the release over the course of 76 calendar days.
+ - 19 commits contributed to the release over the course of 76 calendar days.
- 76 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- - 0 issues like '(#ID)' where seen in commit messages
+ - 0 issues like '(#ID)' were seen in commit messages
### Commit Details
@@ -239,7 +284,6 @@ This release contains no functional changes.
- [validate] disallow missing docs, fill in the remaining ones. ([`a593e79`](https://github.com/Byron/gitoxide/commit/a593e796cdba02700cb5747cf208c2f59f771f10))
- [tempfile] crate frame ([`1b04c39`](https://github.com/Byron/gitoxide/commit/1b04c39030b436fb6850fbfa0c39a4fed7df727c))
- (cargo-release) version 0.3.0 ([`6b33678`](https://github.com/Byron/gitoxide/commit/6b33678f83e6d261ca15c4a7634ff5b4e66d81dd))
- - Merge branch 'dependabot/cargo/crc-2.0.0' ([`683c44d`](https://github.com/Byron/gitoxide/commit/683c44db682d8dbef401286963e84cdca145abc8))
- (cargo-release) version 0.2.0 ([`3286e42`](https://github.com/Byron/gitoxide/commit/3286e42547b59df6365087cbae9ce1c9c959faad))
- [git-ref] find_one_existing(…) for convenience ([`7a443ff`](https://github.com/Byron/gitoxide/commit/7a443ffc148ae8161ba93351ffd16631f79e095c))
- [git-ref] the first green find_one test ([`30177e8`](https://github.com/Byron/gitoxide/commit/30177e81451bd4fb51dd3297502fa3c63f67286e))
@@ -265,7 +309,7 @@ This release contains no functional changes.
- 3 commits contributed to the release.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- - 0 issues like '(#ID)' where seen in commit messages
+ - 0 issues like '(#ID)' were seen in commit messages
### Commit Details
diff --git a/git-validate/Cargo.toml b/git-validate/Cargo.toml
index b08c728fc59..ba542133877 100644
--- a/git-validate/Cargo.toml
+++ b/git-validate/Cargo.toml
@@ -1,11 +1,11 @@
[package]
name = "git-validate"
-version = "0.6.0"
+version = "0.7.0"
repository = "https://github.com/Byron/gitoxide"
license = "MIT/Apache-2.0"
description = "Validation functions for various kinds of names in git"
authors = ["Sebastian Thiel "]
-edition = "2018"
+edition = "2021"
include = ["src/**/*"]
[lib]
diff --git a/git-worktree/CHANGELOG.md b/git-worktree/CHANGELOG.md
index 609bd668073..14df5295001 100644
--- a/git-worktree/CHANGELOG.md
+++ b/git-worktree/CHANGELOG.md
@@ -5,6 +5,42 @@ 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.9.0 (2022-11-21)
+
+### New Features (BREAKING)
+
+ - upgrade edition to 2021 in most crates.
+ MSRV for this is 1.56, and we are now at 1.60 so should be compatible.
+ This isn't more than a patch release as it should break nobody
+ who is adhering to the MSRV, but let's be careful and mark it
+ breaking.
+
+ Note that `git-features` and `git-pack` are still on edition 2018
+ as they make use of a workaround to support (safe) mutable access
+ to non-overlapping entries in a slice which doesn't work anymore
+ in edition 2021.
+
+### Commit Statistics
+
+
+
+ - 3 commits contributed to the release over the course of 2 calendar days.
+ - 4 days passed between releases.
+ - 1 commit was understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+
+
+view details
+
+ * **Uncategorized**
+ - prepare changelogs prior to release ([`e4648f8`](https://github.com/Byron/gitoxide/commit/e4648f827c97e9d13636d1bbdc83dd63436e6e5c))
+ - Merge branch 'version2021' ([`0e4462d`](https://github.com/Byron/gitoxide/commit/0e4462df7a5166fe85c23a779462cdca8ee013e8))
+ - upgrade edition to 2021 in most crates. ([`3d8fa8f`](https://github.com/Byron/gitoxide/commit/3d8fa8fef9800b1576beab8a5bc39b821157a5ed))
+
+
## 0.8.0 (2022-11-17)
A maintenance release without user-facing changes.
@@ -13,7 +49,7 @@ A maintenance release without user-facing changes.
- - 1 commit contributed to the release.
+ - 2 commits contributed to the release.
- 10 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
@@ -25,6 +61,7 @@ A maintenance release without user-facing changes.
view details
* **Uncategorized**
+ - Release git-glob v0.4.2, git-config-value v0.8.2, git-lock v2.2.0, git-ref v0.19.0, git-config v0.11.0, git-discover v0.8.0, git-index v0.8.0, git-transport v0.22.0, git-protocol v0.23.0, git-worktree v0.8.0, git-repository v0.28.0, gitoxide-core v0.20.0, gitoxide v0.18.0, safety bump 9 crates ([`0c253b1`](https://github.com/Byron/gitoxide/commit/0c253b15143dcedfe4c66d64ab1ea6e097030651))
- prepare changelogs prior to release ([`fe5721f`](https://github.com/Byron/gitoxide/commit/fe5721f888c64c79fe9a734a9e33b94a282f8d97))
diff --git a/git-worktree/Cargo.toml b/git-worktree/Cargo.toml
index fa1e566447e..ce028969df5 100644
--- a/git-worktree/Cargo.toml
+++ b/git-worktree/Cargo.toml
@@ -1,11 +1,11 @@
[package]
name = "git-worktree"
-version = "0.8.0"
+version = "0.9.0"
repository = "https://github.com/Byron/gitoxide"
license = "MIT/Apache-2.0"
description = "A WIP crate of the gitoxide project dedicated implementing everything around working trees and git excludes"
authors = ["Sebastian Thiel "]
-edition = "2018"
+edition = "2021"
include = ["src/**/*", "CHANGELOG.md"]
[lib]
@@ -29,13 +29,13 @@ internal-testing-git-features-parallel = ["git-features/parallel"]
internal-testing-to-avoid-being-run-by-cargo-test-all = []
[dependencies]
-git-index = { version = "^0.8.0", path = "../git-index" }
-git-hash = { version = "^0.9.11", path = "../git-hash" }
-git-object = { version = "^0.22.1", path = "../git-object" }
-git-glob = { version = "^0.4.2", path = "../git-glob" }
-git-path = { version = "^0.5.0", path = "../git-path" }
-git-attributes = { version = "^0.5.0", path = "../git-attributes" }
-git-features = { version = "^0.23.1", path = "../git-features" }
+git-index = { version = "^0.9.0", path = "../git-index" }
+git-hash = { version = "^0.10.0", path = "../git-hash" }
+git-object = { version = "^0.23.0", path = "../git-object" }
+git-glob = { version = "^0.5.0", path = "../git-glob" }
+git-path = { version = "^0.6.0", path = "../git-path" }
+git-attributes = { version = "^0.6.0", path = "../git-attributes" }
+git-features = { version = "^0.24.0", path = "../git-features" }
serde = { version = "1.0.114", optional = true, default-features = false, features = ["derive"]}
diff --git a/gitoxide-core/CHANGELOG.md b/gitoxide-core/CHANGELOG.md
index 016896de7dd..50ea2c3bb11 100644
--- a/gitoxide-core/CHANGELOG.md
+++ b/gitoxide-core/CHANGELOG.md
@@ -5,6 +5,42 @@ 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.21.0 (2022-11-21)
+
+### New Features (BREAKING)
+
+ - upgrade edition to 2021 in most crates.
+ MSRV for this is 1.56, and we are now at 1.60 so should be compatible.
+ This isn't more than a patch release as it should break nobody
+ who is adhering to the MSRV, but let's be careful and mark it
+ breaking.
+
+ Note that `git-features` and `git-pack` are still on edition 2018
+ as they make use of a workaround to support (safe) mutable access
+ to non-overlapping entries in a slice which doesn't work anymore
+ in edition 2021.
+
+### Commit Statistics
+
+
+
+ - 3 commits contributed to the release over the course of 2 calendar days.
+ - 4 days passed between releases.
+ - 1 commit was understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+
+
+view details
+
+ * **Uncategorized**
+ - prepare changelogs prior to release ([`e4648f8`](https://github.com/Byron/gitoxide/commit/e4648f827c97e9d13636d1bbdc83dd63436e6e5c))
+ - Merge branch 'version2021' ([`0e4462d`](https://github.com/Byron/gitoxide/commit/0e4462df7a5166fe85c23a779462cdca8ee013e8))
+ - upgrade edition to 2021 in most crates. ([`3d8fa8f`](https://github.com/Byron/gitoxide/commit/3d8fa8fef9800b1576beab8a5bc39b821157a5ed))
+
+
## 0.20.0 (2022-11-17)
### Documentation
@@ -15,7 +51,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- - 13 commits contributed to the release over the course of 8 calendar days.
+ - 14 commits contributed to the release over the course of 8 calendar days.
- 10 days passed between releases.
- 1 commit was understood as [conventional](https://www.conventionalcommits.org).
- 1 unique issue was worked on: [#591](https://github.com/Byron/gitoxide/issues/591)
@@ -35,6 +71,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
* **[#591](https://github.com/Byron/gitoxide/issues/591)**
- Provide more information to specifically discourage using `gitoxide-core` ([`e9f83ee`](https://github.com/Byron/gitoxide/commit/e9f83ee2f393bdff6cb4b8dd1f52231e45d8eaa2))
* **Uncategorized**
+ - Release git-glob v0.4.2, git-config-value v0.8.2, git-lock v2.2.0, git-ref v0.19.0, git-config v0.11.0, git-discover v0.8.0, git-index v0.8.0, git-transport v0.22.0, git-protocol v0.23.0, git-worktree v0.8.0, git-repository v0.28.0, gitoxide-core v0.20.0, gitoxide v0.18.0, safety bump 9 crates ([`0c253b1`](https://github.com/Byron/gitoxide/commit/0c253b15143dcedfe4c66d64ab1ea6e097030651))
- prepare changelogs prior to release ([`fe5721f`](https://github.com/Byron/gitoxide/commit/fe5721f888c64c79fe9a734a9e33b94a282f8d97))
- Merge branch 'http-config' ([`665b53e`](https://github.com/Byron/gitoxide/commit/665b53e1c2e1de65fafa28b669f58977868bbc81))
- adapt to changes in `git-protocol` ([`c32663e`](https://github.com/Byron/gitoxide/commit/c32663e2306a751ac3921685d5e795beebf4627e))
diff --git a/gitoxide-core/Cargo.toml b/gitoxide-core/Cargo.toml
index b8e8658dccc..78e3fc3bf66 100644
--- a/gitoxide-core/Cargo.toml
+++ b/gitoxide-core/Cargo.toml
@@ -2,10 +2,10 @@
name = "gitoxide-core"
description = "The library implementing all capabilities of the gitoxide CLI"
repository = "https://github.com/Byron/gitoxide"
-version = "0.20.0"
+version = "0.21.0"
authors = ["Sebastian Thiel "]
license = "MIT/Apache-2.0"
-edition = "2018"
+edition = "2021"
[lib]
doctest = false
@@ -36,10 +36,10 @@ serde1 = ["git-commitgraph/serde1", "git-repository/serde1", "serde_json", "serd
[dependencies]
# deselect everything else (like "performance") as this should be controllable by the parent application.
-git-repository = { version = "^0.28.0", path = "../git-repository", default-features = false }
-git-pack-for-configuration-only = { package = "git-pack", version = "^0.26.0", path = "../git-pack", default-features = false, features = ["pack-cache-lru-dynamic", "pack-cache-lru-static"] }
-git-transport-configuration-only = { package = "git-transport", version = "^0.22.0", path = "../git-transport", default-features = false }
-git-commitgraph = { version = "^0.10.0", path = "../git-commitgraph" }
+git-repository = { version = "^0.29.0", path = "../git-repository", default-features = false }
+git-pack-for-configuration-only = { package = "git-pack", version = "^0.27.0", path = "../git-pack", default-features = false, features = ["pack-cache-lru-dynamic", "pack-cache-lru-static"] }
+git-transport-configuration-only = { package = "git-transport", version = "^0.23.0", path = "../git-transport", default-features = false }
+git-commitgraph = { version = "^0.11.0", path = "../git-commitgraph" }
serde = { version = "1.0.114", optional = true, default-features = false, features = ["derive"] }
anyhow = "1.0.42"
thiserror = "1.0.34"
@@ -56,7 +56,7 @@ futures-io = { version = "0.3.16", optional = true }
blocking = { version = "1.0.2", optional = true }
# for 'organize' functionality
-git-url = { version = "^0.10.1", path = "../git-url", optional = true }
+git-url = { version = "^0.11.0", path = "../git-url", optional = true }
jwalk = { version = "0.6.0", optional = true }
# for 'hours'
diff --git a/gitoxide-core/src/pack/receive.rs b/gitoxide-core/src/pack/receive.rs
index 147c5485f07..f5e69577e00 100644
--- a/gitoxide-core/src/pack/receive.rs
+++ b/gitoxide-core/src/pack/receive.rs
@@ -1,5 +1,5 @@
-use std::borrow::Cow;
use std::{
+ borrow::Cow,
io,
path::PathBuf,
sync::{atomic::AtomicBool, Arc},
@@ -118,7 +118,12 @@ mod blocking_io {
use std::{io, io::BufRead, path::PathBuf};
use git_repository as git;
- use git_repository::{bstr::BString, protocol, protocol::fetch::Response, protocol::handshake::Ref, Progress};
+ use git_repository::{
+ bstr::BString,
+ protocol,
+ protocol::{fetch::Response, handshake::Ref},
+ Progress,
+ };
use super::{receive_pack_blocking, CloneDelegate, Context};
use crate::net;
@@ -186,18 +191,17 @@ mod async_io {
use async_trait::async_trait;
use futures_io::AsyncBufRead;
+ use git_repository as git;
use git_repository::{
bstr::{BString, ByteSlice},
odb::pack,
protocol,
- protocol::fetch::Response,
- protocol::handshake::Ref,
+ protocol::{fetch::Response, handshake::Ref},
Progress,
};
use super::{print, receive_pack_blocking, write_raw_refs, CloneDelegate, Context};
use crate::{net, OutputFormat};
- use git_repository as git;
#[async_trait(?Send)]
impl protocol::fetch::Delegate for CloneDelegate {
diff --git a/src/gix.rs b/src/gix.rs
index 5d41ee4b456..04d9721079f 100644
--- a/src/gix.rs
+++ b/src/gix.rs
@@ -1,3 +1,4 @@
+//! The `gitoxide` plumbing.
//! ## Feature Flags
#![cfg_attr(
feature = "document-features",
diff --git a/tests/helpers.sh b/tests/helpers.sh
index c15b7960c29..5066fc37240 100644
--- a/tests/helpers.sh
+++ b/tests/helpers.sh
@@ -30,6 +30,7 @@ function repo-with-remotes() {
shift 2
done
git config commit.gpgsign false
+ git config tag.gpgsign false
touch a
git add a
git commit -m "non-bare"
@@ -42,6 +43,7 @@ function small-repo-in-sandbox() {
git init
git checkout -b main
git config commit.gpgsign false
+ git config tag.gpgsign false
touch a
git add a
git commit -m "first"
diff --git a/tests/journey/gix.sh b/tests/journey/gix.sh
index a7152089fcc..65362cc3491 100644
--- a/tests/journey/gix.sh
+++ b/tests/journey/gix.sh
@@ -38,7 +38,7 @@ title "git-tempfile crate"
(when "running the example program to check order of signal handlers"
it "fails as the process aborts" && {
- expect_run $ABORTED cargo run --example interrupt-handler-allows-graceful-shutdown
+ expect_run $ABORTED cargo run --no-default-features --example interrupt-handler-allows-graceful-shutdown
}
it "cleans up the tempfile it created" && {
expect_run $WITH_FAILURE test -e "example-file.tmp"
diff --git a/tests/snapshots/plumbing/no-repo/pack/explode/broken-with-objects-dir-skip-checks-success-tree-miniz-oxide-max b/tests/snapshots/plumbing/no-repo/pack/explode/broken-with-objects-dir-skip-checks-success-tree-miniz-oxide-max
index 3b1ec68144d..44c9b820241 100644
--- a/tests/snapshots/plumbing/no-repo/pack/explode/broken-with-objects-dir-skip-checks-success-tree-miniz-oxide-max
+++ b/tests/snapshots/plumbing/no-repo/pack/explode/broken-with-objects-dir-skip-checks-success-tree-miniz-oxide-max
@@ -36,8 +36,6 @@
│ └── 48234cfc7b4f0c9475d24d4c386783533a8034
├── 88
│ └── 58983d81b0eef76eb55d21a0d96b7b16846eca
-├── a2
-│ └── 9ebd0e0fcbcd2a0842dd44cc7c22a90a310a3a
├── af
│ └── 4f6405296dec699321ca59d48583ffa0323b0e
├── b2
@@ -53,4 +51,4 @@
└── e8
└── 00b9c207e17f9b11e321cc1fba5dfe08af4222
-26 directories, 27 files
\ No newline at end of file
+25 directories, 26 files
\ No newline at end of file
diff --git a/tests/tools/Cargo.toml b/tests/tools/Cargo.toml
index a8b424b155f..32c10e0ede6 100644
--- a/tests/tools/Cargo.toml
+++ b/tests/tools/Cargo.toml
@@ -3,7 +3,7 @@ name = "git-testtools"
description = "Shared code for gitoxide crates to facilitate testing"
version = "0.10.0"
authors = ["Sebastian Thiel "]
-edition = "2018"
+edition = "2021"
license = "MIT OR Apache-2.0"
[[bin]]
@@ -14,11 +14,11 @@ path = "src/main.rs"
doctest = false
[dependencies]
-git-hash = { version = "^0.9.11", path = "../../git-hash" }
-git-lock = { version = "^2.0.0", path = "../../git-lock" }
-git-discover = { version = "^0.8.0", path = "../../git-discover" }
-git-attributes = { version = "^0.5.0", path = "../../git-attributes" }
-git-worktree = { version = "^0.8.0", path = "../../git-worktree" }
+git-hash = { version = "^0.10.0", path = "../../git-hash" }
+git-lock = { version = "^3.0.0", path = "../../git-lock" }
+git-discover = { version = "^0.9.0", path = "../../git-discover" }
+git-attributes = { version = "^0.6.0", path = "../../git-attributes" }
+git-worktree = { version = "^0.9.0", path = "../../git-worktree" }
nom = { version = "7", default-features = false, features = ["std"]}
fastrand = "1.8.0"
diff --git a/tests/tools/src/lib.rs b/tests/tools/src/lib.rs
index 93bc064fc78..8263b654097 100644
--- a/tests/tools/src/lib.rs
+++ b/tests/tools/src/lib.rs
@@ -217,7 +217,7 @@ pub fn fixture_bytes(path: impl AsRef) -> Vec {
/// If a script result doesn't exist, these will be checked first and extracted if present, which they are by default.
/// This behaviour can be prohibited by setting the `GITOXIDE_TEST_IGNORE_ARCHIVES` to any value.
///
-/// To speed CI up, one can add these archives to the repository. It's absoutely recommended to use `git-lfs` for that to
+/// To speed CI up, one can add these archives to the repository. It's absolutely recommended to use `git-lfs` for that to
/// not bloat the repository size.
///
/// #### Disable Archive Creation
@@ -382,13 +382,15 @@ fn scripted_fixture_repo_read_only_with_args_inner(
.env("GIT_COMMITTER_DATE", "2000-01-02 00:00:00 +0000")
.env("GIT_COMMITTER_EMAIL", "committer@example.com")
.env("GIT_COMMITTER_NAME", "committer")
- .env("GIT_CONFIG_COUNT", "3")
+ .env("GIT_CONFIG_COUNT", "4")
.env("GIT_CONFIG_KEY_0", "commit.gpgsign")
.env("GIT_CONFIG_VALUE_0", "false")
- .env("GIT_CONFIG_KEY_1", "init.defaultBranch")
- .env("GIT_CONFIG_VALUE_1", "main")
- .env("GIT_CONFIG_KEY_2", "protocol.file.allow")
- .env("GIT_CONFIG_VALUE_2", "always")
+ .env("GIT_CONFIG_KEY_1", "tag.gpgsign")
+ .env("GIT_CONFIG_VALUE_1", "false")
+ .env("GIT_CONFIG_KEY_2", "init.defaultBranch")
+ .env("GIT_CONFIG_VALUE_2", "main")
+ .env("GIT_CONFIG_KEY_3", "protocol.file.allow")
+ .env("GIT_CONFIG_VALUE_3", "always")
.output()?;
if !output.status.success() {
write_failure_marker(&failure_marker);
@@ -415,6 +417,16 @@ fn write_failure_marker(failure_marker: &Path) {
std::fs::write(failure_marker, []).ok();
}
+fn is_lfs_pointer_file(path: &Path) -> bool {
+ const PREFIX: &[u8] = b"version https://git-lfs";
+ let mut buf = [0_u8; PREFIX.len()];
+ std::fs::OpenOptions::new()
+ .read(true)
+ .open(path)
+ .and_then(|mut f| f.read_exact(&mut buf))
+ .map_or(false, |_| buf.starts_with(PREFIX))
+}
+
/// The `script_identity` will be baked into the soon to be created `archive` as it identitifies the script
/// that created the contents of `source_dir`.
fn create_archive_if_not_on_ci(source_dir: &Path, archive: &Path, script_identity: u32) -> std::io::Result<()> {
@@ -424,6 +436,13 @@ fn create_archive_if_not_on_ci(source_dir: &Path, archive: &Path, script_identit
if is_excluded(archive) {
return Ok(());
}
+ if is_lfs_pointer_file(archive) {
+ eprintln!(
+ "Refusing to overwrite `git-lfs` pointer file at \"{}\" - git lfs might not be properly installed.",
+ archive.display()
+ );
+ return Ok(());
+ }
std::fs::create_dir_all(archive.parent().expect("archive is a file"))?;
let meta_dir = populate_meta_dir(source_dir, script_identity)?;