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, Error> { let trust = Trust::from_path_ownership(x).map_err(|err| Error::CheckTrust { path: x.into(), err })?; @@ -58,7 +64,7 @@ pub(crate) mod function { }; let max_height = if !ceiling_dirs.is_empty() { - let max_height = find_ceiling_height(&dir, &ceiling_dirs, cwd.as_deref()); + let max_height = find_ceiling_height(&dir, &ceiling_dirs, cwd.as_ref()); if max_height.is_none() && match_ceiling_dir_or_error { return Err(Error::NoMatchingCeilingDir); } @@ -108,11 +114,18 @@ pub(crate) mod function { Some(trust) => { // TODO: test this more, it definitely doesn't always find the shortest path to a directory let path = if dir_made_absolute { - shorten_path_with_cwd(cursor, cwd.as_deref()) + shorten_path_with_cwd(cursor, cwd.as_ref()) } else { cursor }; - break 'outer Ok((crate::repository::Path::from_dot_git_dir_inner(path, kind, cwd), trust)); + break 'outer Ok(( + crate::repository::Path::from_dot_git_dir(path, kind, cwd).ok_or_else(|| { + Error::InvalidInput { + directory: directory.into(), + } + })?, + trust, + )); } None => { break 'outer Err(Error::NoTrustedGitRepository { @@ -127,6 +140,10 @@ pub(crate) mod function { cursor.pop(); } } + if cursor.parent().map_or(false, |p| p.as_os_str().is_empty()) { + cursor = cwd.to_path_buf(); + dir_made_absolute = true; + } if !cursor.pop() { if dir_made_absolute || matches!( @@ -137,13 +154,13 @@ pub(crate) mod function { break Err(Error::NoGitRepository { path: dir.into_owned() }); } else { dir_made_absolute = true; - cursor = if cursor.as_os_str().is_empty() { - cwd.clone() - } else { - // TODO: realpath or absolutize? No test runs into this. - Some(git_path::absolutize(&cursor, cwd.as_deref()).into_owned()) - } - .ok_or(Error::InaccessibleDirectory { path: cursor })?; + debug_assert!(!cursor.as_os_str().is_empty()); + // TODO: realpath or absolutize? No test runs into this. + cursor = git_path::absolutize(&cursor, cwd.as_ref()) + .ok_or_else(|| Error::InvalidInput { + directory: cursor.clone(), + })? + .into_owned(); } } } diff --git a/git-discover/src/upwards/types.rs b/git-discover/src/upwards/types.rs index 88a16a1e69e..94ca3391267 100644 --- a/git-discover/src/upwards/types.rs +++ b/git-discover/src/upwards/types.rs @@ -6,6 +6,10 @@ use bstr::{ByteSlice, ByteVec}; #[derive(Debug, thiserror::Error)] #[allow(missing_docs)] pub enum Error { + #[error("Could not obtain the current working directory")] + CurrentDir(#[from] std::io::Error), + #[error("Relative path \"{}\"tries to reach beyond root filesystem", directory.display())] + InvalidInput { directory: PathBuf }, #[error("Failed to access a directory, or path is not a directory: '{}'", .path.display())] InaccessibleDirectory { path: PathBuf }, #[error("Could find a git repository in '{}' or in any of its parents", .path.display())] @@ -32,7 +36,7 @@ pub enum Error { /// Options to help guide the [discovery][crate::upwards()] of repositories, along with their options /// when instantiated. -pub struct Options { +pub struct Options<'a> { /// When discovering a repository, assure it has at least this trust level or ignore it otherwise. /// /// This defaults to [`Reduced`][git_sec::Trust::Reduced] as our default settings are geared towards avoiding abuse. @@ -47,20 +51,26 @@ pub struct Options { // TODO: test on Linux // TODO: Handle WASI once https://github.com/rust-lang/rust/issues/71213 is resolved pub cross_fs: bool, + /// If set, the _current working directory_ (absolute path) to use when resolving relative paths. Note that + /// that this is merely an optimization for those who discover a lot of repositories in the same process. + /// + /// If unset, the current working directory will be obtained automatically. + pub current_dir: Option<&'a std::path::Path>, } -impl Default for Options { +impl Default for Options<'_> { fn default() -> Self { Options { required_trust: git_sec::Trust::Reduced, ceiling_dirs: vec![], match_ceiling_dir_or_error: true, cross_fs: false, + current_dir: None, } } } -impl Options { +impl Options<'_> { /// Loads discovery options overrides from the environment. /// /// The environment variables are: diff --git a/git-discover/src/upwards/util.rs b/git-discover/src/upwards/util.rs index de84dfe3513..3c1574ceb1a 100644 --- a/git-discover/src/upwards/util.rs +++ b/git-discover/src/upwards/util.rs @@ -2,7 +2,7 @@ use std::path::{Path, PathBuf}; use crate::DOT_GIT_DIR; -pub(crate) fn shorten_path_with_cwd(cursor: PathBuf, cwd: Option<&Path>) -> PathBuf { +pub(crate) fn shorten_path_with_cwd(cursor: PathBuf, cwd: &Path) -> PathBuf { fn comp_len(c: std::path::Component<'_>) -> usize { use std::path::Component::*; match c { @@ -14,42 +14,44 @@ pub(crate) fn shorten_path_with_cwd(cursor: PathBuf, cwd: Option<&Path>) -> Path } } - if let Some(cwd) = cwd { - debug_assert_eq!(cursor.file_name().and_then(|f| f.to_str()), Some(DOT_GIT_DIR)); - let parent = cursor.parent().expect(".git appended"); - cwd.strip_prefix(parent) - .ok() - .and_then(|path_relative_to_cwd| { - let relative_path_components = path_relative_to_cwd.components().count(); - let current_component_len = cursor.components().map(comp_len).sum::(); - (relative_path_components * "..".len() < current_component_len).then(|| { - std::iter::repeat("..") - .take(relative_path_components) - .chain(Some(DOT_GIT_DIR)) - .collect() - }) + debug_assert_eq!(cursor.file_name().and_then(|f| f.to_str()), Some(DOT_GIT_DIR)); + let parent = cursor.parent().expect(".git appended"); + cwd.strip_prefix(parent) + .ok() + .and_then(|path_relative_to_cwd| { + let relative_path_components = path_relative_to_cwd.components().count(); + let current_component_len = cursor.components().map(comp_len).sum::(); + (relative_path_components * "..".len() < current_component_len).then(|| { + std::iter::repeat("..") + .take(relative_path_components) + .chain(Some(DOT_GIT_DIR)) + .collect() }) - .unwrap_or(cursor) - } else { - cursor - } + }) + .unwrap_or(cursor) } /// Find the number of components parenting the `search_dir` before the first directory in `ceiling_dirs`. /// `search_dir` needs to be absolutized, and we absolutize every ceiling as well. -pub(crate) fn find_ceiling_height(search_dir: &Path, ceiling_dirs: &[PathBuf], cwd: Option<&Path>) -> Option { +pub(crate) fn find_ceiling_height(search_dir: &Path, ceiling_dirs: &[PathBuf], cwd: &Path) -> Option { + if ceiling_dirs.is_empty() { + return None; + } + + let search_realpath; + let search_dir = if search_dir.is_absolute() { + search_dir + } else { + search_realpath = git_path::realpath_opts(search_dir, cwd, git_path::realpath::MAX_SYMLINKS).ok()?; + search_realpath.as_path() + }; ceiling_dirs .iter() .filter_map(|ceiling_dir| { - let mut ceiling_dir = git_path::absolutize(ceiling_dir, cwd); - match (search_dir.is_absolute(), ceiling_dir.is_absolute()) { - (true, false) => ceiling_dir = cwd?.join(ceiling_dir.as_ref()).into(), - (false, true) => { - let stripped = ceiling_dir.as_ref().strip_prefix(cwd?).ok()?.to_owned(); - ceiling_dir = stripped.into(); - } - (false, false) | (true, true) => {} - }; + let mut ceiling_dir = git_path::absolutize(ceiling_dir, cwd)?; + if !ceiling_dir.is_absolute() { + ceiling_dir = git_path::absolutize(cwd.join(ceiling_dir.as_ref()), cwd)?; + } search_dir .strip_prefix(ceiling_dir.as_ref()) .ok() diff --git a/git-discover/tests/fixtures/make_basic_repo.sh b/git-discover/tests/fixtures/make_basic_repo.sh index 6b898833c85..7177aa3a791 100644 --- a/git-discover/tests/fixtures/make_basic_repo.sh +++ b/git-discover/tests/fixtures/make_basic_repo.sh @@ -10,6 +10,7 @@ git commit -q -m c1 echo hello >> this git commit -q -am c2 +mkdir subdir mkdir -p some/very/deeply/nested/subdir git clone --bare --shared . bare.git diff --git a/git-discover/tests/isolated.rs b/git-discover/tests/isolated.rs new file mode 100644 index 00000000000..822d20bb307 --- /dev/null +++ b/git-discover/tests/isolated.rs @@ -0,0 +1,71 @@ +use std::path::{Path, PathBuf}; + +use git_discover::upwards::Options; +use serial_test::serial; + +#[test] +#[serial] +fn upwards_with_relative_directories_and_optional_ceiling() -> git_testtools::Result { + let repo = git_testtools::scripted_fixture_repo_read_only("make_basic_repo.sh")?; + + std::env::set_current_dir(repo.join("subdir"))?; + let cwd = std::env::current_dir()?; + + for (search_dir, ceiling_dir_component) in [ + (".", ".."), + (".", "./.."), + ("./.", "./.."), + (".", "./does-not-exist/../.."), + ] { + let ceiling_dir = cwd.join(ceiling_dir_component); + let (repo_path, _trust) = git_discover::upwards_opts( + search_dir, + Options { + ceiling_dirs: vec![ceiling_dir], + ..Default::default() + }, + ) + .expect("ceiling dir should allow us to discover the repo"); + assert_repo_is_current_workdir(repo_path, Path::new("..")); + + let (repo_path, _trust) = + git_discover::upwards_opts(search_dir, Default::default()).expect("without ceiling dir we see the same"); + assert_repo_is_current_workdir(repo_path, Path::new("..")); + + let (repo_path, _trust) = git_discover::upwards_opts( + search_dir, + Options { + ceiling_dirs: vec![PathBuf::from("..")], + ..Default::default() + }, + ) + .expect("purely relative ceiling dirs work as well"); + assert_repo_is_current_workdir(repo_path, Path::new("..")); + + let err = git_discover::upwards_opts( + search_dir, + Options { + ceiling_dirs: vec![PathBuf::from(".")], + ..Default::default() + }, + ) + .unwrap_err(); + + assert!( + matches!( + err, + git_discover::upwards::Error::NoGitRepositoryWithinCeiling { ceiling_height: 1, .. } + ), + "limiting the ceiling to the CWD cannot work as it's just an empty dir" + ); + } + + Ok(()) +} + +fn assert_repo_is_current_workdir(path: git_discover::repository::Path, work_dir: &Path) { + assert_eq!( + path.into_repository_and_work_tree_directories().1.expect("work dir"), + work_dir, + ); +} diff --git a/git-features/CHANGELOG.md b/git-features/CHANGELOG.md index 55d5023beef..679733a654b 100644 --- a/git-features/CHANGELOG.md +++ b/git-features/CHANGELOG.md @@ -5,6 +5,29 @@ 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) + +A maintenance release without user facing changes. + +### Commit Statistics + + + + - 1 commit contributed to the release. + - 14 days passed between releases. + - 0 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)) +
+ ## 0.23.1 (2022-11-06) ### New Features @@ -15,7 +38,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - - 6 commits contributed to the release over the course of 23 calendar days. + - 7 commits contributed to the release over the course of 23 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) @@ -36,6 +59,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - upgrade to `prodash` v21 ([`a0655dc`](https://github.com/Byron/gitoxide/commit/a0655dc7bc5dff388bc69a648e7f16b44fd1abd9)) - `fs::Snapshot` can `Clone` if `T` can `Clone`. ([`9076ce3`](https://github.com/Byron/gitoxide/commit/9076ce33ec167e425a0163d3e40a81a3fd0db6cd)) * **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-features/Cargo.toml b/git-features/Cargo.toml index d3dc4a0e1fc..b9ca2a9b53e 100644 --- a/git-features/Cargo.toml +++ b/git-features/Cargo.toml @@ -2,7 +2,7 @@ name = "git-features" description = "A crate to integrate various capabilities using compile-time feature flags" repository = "https://github.com/Byron/gitoxide" -version = "0.23.1" +version = "0.24.0" authors = ["Sebastian Thiel "] license = "MIT/Apache-2.0" edition = "2018" @@ -97,7 +97,7 @@ required-features = ["io-pipe"] [dependencies] #! ### Optional Dependencies -git-hash = { version = "^0.9.11", path = "../git-hash" } +git-hash = { version = "^0.10.0", path = "../git-hash" } diff --git a/git-fetchhead/Cargo.toml b/git-fetchhead/Cargo.toml index 70d8a0a6fcb..14ba94c1411 100644 --- a/git-fetchhead/Cargo.toml +++ b/git-fetchhead/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 to read and write .git/FETCH_HEAD" authors = ["Sebastian Thiel "] -edition = "2018" +edition = "2021" [lib] doctest = false diff --git a/git-filter/Cargo.toml b/git-filter/Cargo.toml index 1771f910be9..175e1c64ef0 100644 --- a/git-filter/Cargo.toml +++ b/git-filter/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 implementing git filters" authors = ["Sebastian Thiel "] -edition = "2018" +edition = "2021" [lib] doctest = false diff --git a/git-glob/CHANGELOG.md b/git-glob/CHANGELOG.md index 62359d88f02..7f83951db53 100644 --- a/git-glob/CHANGELOG.md +++ b/git-glob/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. + - 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.4.2 (2022-11-17) A maintenance release without user-facing changes. @@ -13,7 +49,7 @@ A maintenance release without user-facing changes. - - 3 commits contributed to the release. + - 4 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)) - Merge branch 'http-config' ([`665b53e`](https://github.com/Byron/gitoxide/commit/665b53e1c2e1de65fafa28b669f58977868bbc81)) - remove unused and empty file ([`e7bc5f2`](https://github.com/Byron/gitoxide/commit/e7bc5f279fc3bc931b904b5b902b8fc1d1d4f67e)) diff --git a/git-glob/Cargo.toml b/git-glob/Cargo.toml index c0541ee71e9..7fe8d33f310 100644 --- a/git-glob/Cargo.toml +++ b/git-glob/Cargo.toml @@ -1,11 +1,11 @@ [package] name = "git-glob" -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 dealing with pattern matching" authors = ["Sebastian Thiel "] -edition = "2018" +edition = "2021" [lib] doctest = false diff --git a/git-hash/CHANGELOG.md b/git-hash/CHANGELOG.md index 6c37c96d63d..03a8c34eb20 100644 --- a/git-hash/CHANGELOG.md +++ b/git-hash/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.10.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.9.11 (2022-10-10) Maintenance release without user-facing changes. @@ -13,10 +49,10 @@ Maintenance release without user-facing changes. - - 4 commits contributed to the release over the course of 20 calendar days. + - 5 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 ### Thanks Clippy @@ -31,6 +67,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 'main' into fetch-pack ([`d686020`](https://github.com/Byron/gitoxide/commit/d6860205db847b8a474756e92578195e1022481c)) - thanks clippy ([`b9937ad`](https://github.com/Byron/gitoxide/commit/b9937adc2c31095dde63397be7d56f1ea559b0f7)) @@ -128,7 +165,7 @@ Maintenance release without observable changes. - 7 commits contributed to the release over the course of 5 calendar days. - 8 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 @@ -202,7 +239,7 @@ This is a maintenance release with no functional changes. - 6 commits contributed to the release over the course of 32 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 @@ -432,7 +469,7 @@ A automated maintenance release without impact to the public API. - 3 commits contributed to the release over the course of 3 calendar days. - 4 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 @@ -611,7 +648,7 @@ A maintenance release due to reset the entire crate graph to new minor releases. - 3 commits contributed to the release over the course of 1 calendar day. - 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 @@ -634,7 +671,7 @@ A maintenance release due to reset the entire crate graph to new minor releases. - 2 commits contributed to the release over the course of 1 calendar day. - 6 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 @@ -656,7 +693,7 @@ A maintenance release due to reset the entire crate graph to new minor releases. - 10 commits contributed to the release over the course of 74 calendar days. - 102 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 @@ -692,7 +729,7 @@ A maintenance release due to reset the entire crate graph to new minor releases. - 5 commits contributed to the release over the course of 16 calendar days. - 21 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 @@ -758,7 +795,7 @@ A maintenance release due to reset the entire crate graph to new minor releases. - 3 commits contributed to the release over the course of 26 calendar days. - 27 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 @@ -780,7 +817,7 @@ A maintenance release due to reset the entire crate graph to new minor releases. - 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 @@ -801,7 +838,7 @@ A maintenance release due to reset the entire crate graph to new minor releases. - 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-hash/Cargo.toml b/git-hash/Cargo.toml index 04f015073f1..796f5ce3303 100644 --- a/git-hash/Cargo.toml +++ b/git-hash/Cargo.toml @@ -1,11 +1,11 @@ [package] name = "git-hash" -version = "0.9.11" +version = "0.10.0" description = "Borrowed and owned git hash digests used to identify git objects" authors = ["Sebastian Thiel "] repository = "https://github.com/Byron/gitoxide" license = "MIT/Apache-2.0" -edition = "2018" +edition = "2021" include = ["src/**/*", "CHANGELOG.md"] [lib] diff --git a/git-index/CHANGELOG.md b/git-index/CHANGELOG.md index 0d240376fed..f1844c0c8cd 100644 --- a/git-index/CHANGELOG.md +++ b/git-index/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. - - 2 commits contributed to the release over the course of 8 calendar days. + - 3 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)' 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)) - Merge branch 'main' into http-config ([`7c5b37d`](https://github.com/Byron/gitoxide/commit/7c5b37d28e98f59a6847368a0d0166d2dbb4acc1))
diff --git a/git-index/Cargo.toml b/git-index/Cargo.toml index 3ba87cd1861..f639bb5d3cf 100644 --- a/git-index/Cargo.toml +++ b/git-index/Cargo.toml @@ -1,11 +1,11 @@ [package] name = "git-index" -version = "0.8.0" +version = "0.9.0" repository = "https://github.com/Byron/gitoxide" license = "MIT/Apache-2.0" description = "A work-in-progress crate of the gitoxide project dedicated implementing the git index file" authors = ["Sebastian Thiel "] -edition = "2018" +edition = "2021" include = ["src/**/*", "README.md", "CHANGELOG.md"] [lib] @@ -30,12 +30,12 @@ internal-testing-git-features-parallel = ["git-features/parallel"] internal-testing-to-avoid-being-run-by-cargo-test-all = [] [dependencies] -git-features = { version = "^0.23.1", path = "../git-features", features = ["rustsha1", "progress"] } -git-hash = { version = "^0.9.11", path = "../git-hash" } -git-bitmap = { version = "^0.1.2", path = "../git-bitmap" } -git-object = { version = "^0.22.1", path = "../git-object" } -git-traverse = { version = "^0.18.0", path = "../git-traverse" } -git-lock = { version = "2.1.1", path = "../git-lock" } +git-features = { version = "^0.24.0", path = "../git-features", features = ["rustsha1", "progress"] } +git-hash = { version = "^0.10.0", path = "../git-hash" } +git-bitmap = { version = "^0.2.0", path = "../git-bitmap" } +git-object = { version = "^0.23.0", path = "../git-object" } +git-traverse = { version = "^0.19.0", path = "../git-traverse" } +git-lock = { version = "^3.0.0", path = "../git-lock" } thiserror = "1.0.32" memmap2 = "0.5.0" diff --git a/git-index/src/access/mod.rs b/git-index/src/access/mod.rs index ed76780acd4..bfd7906ccf8 100644 --- a/git-index/src/access/mod.rs +++ b/git-index/src/access/mod.rs @@ -1,6 +1,7 @@ -use crate::{entry, extension, Entry, PathStorage, State, Version}; use bstr::{BStr, ByteSlice}; +use crate::{entry, extension, Entry, PathStorage, State, Version}; + // TODO: integrate this somehow, somewhere, depending on later usage. #[allow(dead_code)] mod sparse; diff --git a/git-index/src/write.rs b/git-index/src/write.rs index d33923fe1f9..c51fb5c4ba2 100644 --- a/git-index/src/write.rs +++ b/git-index/src/write.rs @@ -1,6 +1,7 @@ -use crate::{entry, extension, write::util::CountBytes, State, Version}; use std::{convert::TryInto, io::Write}; +use crate::{entry, extension, write::util::CountBytes, State, Version}; + /// A way to specify which of the optional extensions to write. #[derive(Debug, Copy, Clone)] pub enum Extensions { diff --git a/git-index/tests/index/file/read.rs b/git-index/tests/index/file/read.rs index dbbceacb501..0a84a20f347 100644 --- a/git-index/tests/index/file/read.rs +++ b/git-index/tests/index/file/read.rs @@ -1,10 +1,11 @@ +use std::path::{Path, PathBuf}; + use bstr::ByteSlice; use git_index::{ entry::{self, Flags, Mode}, Version, }; use git_testtools::hex_to_id; -use std::path::{Path, PathBuf}; use crate::loose_file_path; diff --git a/git-lfs/Cargo.toml b/git-lfs/Cargo.toml index 1932c56028e..8243e656a1a 100644 --- a/git-lfs/Cargo.toml +++ b/git-lfs/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 with handling git large file support" authors = ["Sebastian Thiel "] -edition = "2018" +edition = "2021" [lib] doctest = false diff --git a/git-lock/CHANGELOG.md b/git-lock/CHANGELOG.md index c56abc3ea4e..775affe1b04 100644 --- a/git-lock/CHANGELOG.md +++ b/git-lock/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. + - 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)) +
+ ## 2.2.0 (2022-11-17) ### New Features @@ -17,7 +53,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - - 6 commits contributed to the release over the course of 85 calendar days. + - 7 commits contributed to the release over the course of 85 calendar days. - 85 days passed between releases. - 1 commit was understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -29,6 +65,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 'main' into http-config ([`f4ff821`](https://github.com/Byron/gitoxide/commit/f4ff821fd4233dd1dc1a449af4d4600becf3b4ac)) - Merge branch 'async-fetch' ([`0c9c48b`](https://github.com/Byron/gitoxide/commit/0c9c48b3b91a1396eb1796f288a2cb10380d1f14)) diff --git a/git-lock/Cargo.toml b/git-lock/Cargo.toml index 9ccb9e3103d..50f079c969b 100644 --- a/git-lock/Cargo.toml +++ b/git-lock/Cargo.toml @@ -1,11 +1,11 @@ [package] name = "git-lock" -version = "2.2.0" +version = "3.0.0" repository = "https://github.com/Byron/gitoxide" license = "MIT/Apache-2.0" description = "A git-style lock-file implementation" authors = ["Sebastian Thiel "] -edition = "2018" +edition = "2021" include = ["src/**/*", "LICENSE-*", "README.md", "CHANGELOG.md"] [lib] @@ -14,7 +14,7 @@ test = true [dependencies] fastrand = "1.5.0" -git-tempfile = { version = "^2.0.0", path = "../git-tempfile" } +git-tempfile = { version = "^3.0.0", path = "../git-tempfile" } quick-error = "2.0.0" [dev-dependencies] diff --git a/git-mailmap/CHANGELOG.md b/git-mailmap/CHANGELOG.md index fc3bfc80fc1..68376d0e413 100644 --- a/git-mailmap/CHANGELOG.md +++ b/git-mailmap/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. - - 4 commits contributed to the release over the course of 20 calendar days. + - 5 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 'main' into new-http-impl ([`702a161`](https://github.com/Byron/gitoxide/commit/702a161ef11fc959611bf44b70e9ffe04561c7ad)) - make fmt ([`53acf25`](https://github.com/Byron/gitoxide/commit/53acf2565743eff7cead7a42011107b2fc8d7e0e)) @@ -102,7 +139,7 @@ Maintenance release without user-facing changes. - 8 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 @@ -132,7 +169,7 @@ A maintenance release without user facing changes. - 8 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). - - 0 issues like '(#ID)' where seen in commit messages + - 0 issues like '(#ID)' were seen in commit messages ### Commit Details @@ -162,7 +199,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 diff --git a/git-mailmap/Cargo.toml b/git-mailmap/Cargo.toml index b25c8f813ce..876a35cb5b4 100644 --- a/git-mailmap/Cargo.toml +++ b/git-mailmap/Cargo.toml @@ -1,11 +1,11 @@ [package] name = "git-mailmap" -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 for parsing mailmap files" authors = ["Sebastian Thiel "] -edition = "2018" +edition = "2021" [lib] doctest = false @@ -15,7 +15,7 @@ doctest = false serde1 = ["serde", "bstr/serde", "git-actor/serde1"] [dependencies] -git-actor = { version = "^0.13.0", path = "../git-actor" } +git-actor = { version = "^0.14.0", path = "../git-actor" } bstr = { version = "1.0.1", default-features = false, features = ["std", "unicode"]} quick-error = "2.0.0" serde = { version = "1.0.114", optional = true, default-features = false, features = ["derive"]} diff --git a/git-note/Cargo.toml b/git-note/Cargo.toml index 862200e4975..f733795e26a 100644 --- a/git-note/Cargo.toml +++ b/git-note/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 with git notes" authors = ["Sebastian Thiel "] -edition = "2018" +edition = "2021" [lib] doctest = false diff --git a/git-object/CHANGELOG.md b/git-object/CHANGELOG.md index eefc16274c4..db952aa89ba 100644 --- a/git-object/CHANGELOG.md +++ b/git-object/CHANGELOG.md @@ -5,6 +5,56 @@ 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 + + + + - 11 commits contributed to the release over the course of 3 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 + +### Thanks Clippy + + + +[Clippy](https://github.com/rust-lang/rust-clippy) helped 1 time to make code idiomatic. + +### Commit Details + + + +
view details + + * **Uncategorized** + - prepare changelogs prior to release ([`e4648f8`](https://github.com/Byron/gitoxide/commit/e4648f827c97e9d13636d1bbdc83dd63436e6e5c)) + - Merge branch 'pierrechevalier83/main' ([`a5b1d73`](https://github.com/Byron/gitoxide/commit/a5b1d738d23d0a343bee1b72bcb72250b5fdae11)) + - thanks clippy ([`0a6d888`](https://github.com/Byron/gitoxide/commit/0a6d8882265eda833f4bf0252dc2c656aa05ca6f)) + - restore original representation of `Tag` at the cost of some duplication ([`dd0a23d`](https://github.com/Byron/gitoxide/commit/dd0a23d710be0eb6c7ea7f883aeb1400bcbc0709)) + - unify pre-allocation of `parents` in `Commit` to match typical single-ancestor chains ([`7242d1f`](https://github.com/Byron/gitoxide/commit/7242d1f4acb4ac0d2585295c11f36436a1215a7a)) + - refactor ([`c02a6bd`](https://github.com/Byron/gitoxide/commit/c02a6bdcc3669a48cd4b5b640280701fd089575d)) + - [refactor] Deduplicate Tag and TagRef ([`6003fa2`](https://github.com/Byron/gitoxide/commit/6003fa22085b5031565c51b2b5a0a9feb1579fb0)) + - 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 'pierrechevalier83/main' ([`f0dfa4c`](https://github.com/Byron/gitoxide/commit/f0dfa4c17be4d4a15fb2117bfc47b2fea1bc48fb)) + - [git-object] Encode empty tags like git does ([`3bd3380`](https://github.com/Byron/gitoxide/commit/3bd33802e072b06d278b93eeae8cfaed19795d6b)) +
+ ## 0.22.1 (2022-11-06) ### New Features @@ -15,7 +65,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 2 calendar days. + - 5 commits contributed to the release over the course of 2 calendar days. - 27 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 +77,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
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)) - Adapt in-memory size check to Rust 1.65 and below ([`1919e8e`](https://github.com/Byron/gitoxide/commit/1919e8ec2f6bca8237a0356972b86f28c18da908)) diff --git a/git-object/Cargo.toml b/git-object/Cargo.toml index 3e34c02bdd4..c8dcb73253e 100644 --- a/git-object/Cargo.toml +++ b/git-object/Cargo.toml @@ -1,11 +1,11 @@ [package] name = "git-object" -version = "0.22.1" +version = "0.23.0" description = "Immutable and mutable git objects with decoding and encoding support" authors = ["Sebastian Thiel "] repository = "https://github.com/Byron/gitoxide" license = "MIT/Apache-2.0" -edition = "2018" +edition = "2021" include = ["src/**/*"] [lib] @@ -21,10 +21,10 @@ serde1 = ["serde", "bstr/serde", "smallvec/serde", "git-hash/serde1", "git-actor verbose-object-parsing-errors = ["nom/std"] [dependencies] -git-features = { version = "^0.23.1", path = "../git-features", features = ["rustsha1"] } -git-hash = { version = "^0.9.11", path = "../git-hash" } -git-validate = { version = "^0.6.0", path = "../git-validate" } -git-actor = { version = "^0.13.0", path = "../git-actor" } +git-features = { version = "^0.24.0", path = "../git-features", features = ["rustsha1"] } +git-hash = { version = "^0.10.0", path = "../git-hash" } +git-validate = { version = "^0.7.0", path = "../git-validate" } +git-actor = { version = "^0.14.0", path = "../git-actor" } btoi = "0.4.2" itoa = "1.0.1" diff --git a/git-object/src/commit/write.rs b/git-object/src/commit/write.rs index ce16bf82843..40362e5aeea 100644 --- a/git-object/src/commit/write.rs +++ b/git-object/src/commit/write.rs @@ -23,6 +23,10 @@ impl crate::WriteTo for Commit { out.write_all(&self.message) } + fn kind(&self) -> Kind { + Kind::Commit + } + fn size(&self) -> usize { let hash_in_hex = self.tree.kind().len_in_hex(); b"tree".len() + 1 /*space*/ + hash_in_hex + 1 /* nl */ @@ -45,10 +49,6 @@ impl crate::WriteTo for Commit { + 1 /* nl */ + self.message.len() } - - fn kind(&self) -> Kind { - Kind::Commit - } } impl<'a> crate::WriteTo for CommitRef<'a> { @@ -70,6 +70,10 @@ impl<'a> crate::WriteTo for CommitRef<'a> { out.write_all(self.message) } + fn kind(&self) -> Kind { + Kind::Commit + } + fn size(&self) -> usize { let hash_in_hex = self.tree().kind().len_in_hex(); b"tree".len() + 1 /* space */ + hash_in_hex + 1 /* nl */ @@ -92,8 +96,4 @@ impl<'a> crate::WriteTo for CommitRef<'a> { + 1 /* nl */ + self.message.len() } - - fn kind(&self) -> Kind { - Kind::Commit - } } diff --git a/git-object/src/lib.rs b/git-object/src/lib.rs index 6264e861b6f..4f1e9a3406b 100644 --- a/git-object/src/lib.rs +++ b/git-object/src/lib.rs @@ -76,7 +76,7 @@ pub struct CommitRef<'a> { #[cfg_attr(feature = "serde1", serde(borrow))] pub tree: &'a BStr, /// HEX hash of each parent commit. Empty for first commit in repository. - pub parents: SmallVec<[&'a BStr; 2]>, + pub parents: SmallVec<[&'a BStr; 1]>, /// Who wrote this commit. Name and email might contain whitespace and are not trimmed to ensure round-tripping. /// /// Use the [`author()`][CommitRef::author()] method to received a trimmed version of it. @@ -136,7 +136,7 @@ pub struct TagRef<'a> { #[cfg_attr(feature = "serde1", serde(borrow))] pub target: &'a BStr, /// The kind of object that `target` points to. - pub target_kind: crate::Kind, + pub target_kind: Kind, /// The name of the tag, e.g. "v1.0". pub name: &'a BStr, /// The author of the tag. @@ -162,7 +162,7 @@ pub struct Tag { /// The hash this tag is pointing to. pub target: git_hash::ObjectId, /// The kind of object this tag is pointing to. - pub target_kind: crate::Kind, + pub target_kind: Kind, /// The name of the tag, e.g. "v1.0". pub name: BString, /// The tags author. diff --git a/git-object/src/object/convert.rs b/git-object/src/object/convert.rs index cef293a4061..d969dfaf4d7 100644 --- a/git-object/src/object/convert.rs +++ b/git-object/src/object/convert.rs @@ -13,7 +13,7 @@ impl From> for Tag { pgp_signature, } = other; Tag { - target: git_hash::ObjectId::from_hex(target).expect("40 bytes hex sha1"), + target: git_hash::ObjectId::from_hex(target).expect("prior parser validation"), name: name.to_owned(), target_kind, message: message.to_owned(), @@ -35,10 +35,10 @@ impl From> for Commit { extra_headers, } = other; Commit { - tree: git_hash::ObjectId::from_hex(tree).expect("40 bytes hex sha1"), + tree: git_hash::ObjectId::from_hex(tree).expect("prior parser validation"), parents: parents .iter() - .map(|parent| git_hash::ObjectId::from_hex(parent).expect("40 bytes hex sha1")) + .map(|parent| git_hash::ObjectId::from_hex(parent).expect("prior parser validation")) .collect(), author: author.into(), committer: committer.into(), diff --git a/git-object/src/tag/decode.rs b/git-object/src/tag/decode.rs index 655e5009af8..ba9460af980 100644 --- a/git-object/src/tag/decode.rs +++ b/git-object/src/tag/decode.rs @@ -53,7 +53,8 @@ pub fn message<'a, E: ParseError<&'a [u8]>>(i: &'a [u8]) -> IResult<&'a [u8], (& let (i, _) = tag(NL)(i)?; fn all_to_end<'a, E: ParseError<&'a [u8]>>(i: &'a [u8]) -> IResult<&'a [u8], (&'a [u8], &'a [u8]), E> { if i.is_empty() { - return Err(nom::Err::Error(E::from_error_kind(i, nom::error::ErrorKind::Eof))); + // Empty message. That's OK. + return Ok((&[], (&[], &[]))); } // an empty signature message signals that there is none - the function signature is needed // to work with 'alt(…)'. PGP signatures are never empty diff --git a/git-object/src/tag/write.rs b/git-object/src/tag/write.rs index e82569a1241..b84d77d26a3 100644 --- a/git-object/src/tag/write.rs +++ b/git-object/src/tag/write.rs @@ -29,50 +29,46 @@ impl crate::WriteTo for Tag { encode::trusted_header_signature(b"tagger", &tagger.to_ref(), &mut out)?; } + out.write_all(NL)?; if !self.message.is_empty() { - out.write_all(NL)?; - out.write_all(&self.message)?; + out.write_all(self.message.as_ref())?; } - if let Some(ref message) = self.pgp_signature { + if let Some(message) = &self.pgp_signature { out.write_all(NL)?; - out.write_all(message)?; + out.write_all(message.as_ref())?; } Ok(()) } + fn kind(&self) -> Kind { + Kind::Tag + } + fn size(&self) -> usize { b"object".len() + 1 /* space */ + self.target.kind().len_in_hex() + 1 /* nl */ + b"type".len() + 1 /* space */ + self.target_kind.as_bytes().len() + 1 /* nl */ + b"tag".len() + 1 /* space */ + self.name.len() + 1 /* nl */ + self - .tagger - .as_ref() - .map(|t| b"tagger".len() + 1 /* space */ + t.size() + 1 /* nl */) - .unwrap_or(0) - + if self.message.is_empty() { - 0 - } else { - 1 /* nl */ + self.message.len() - } - + self.pgp_signature.as_ref().map(|m| 1 /* nl */ + m.len() ).unwrap_or(0) - } - - fn kind(&self) -> Kind { - Kind::Tag + .tagger + .as_ref() + .map(|t| b"tagger".len() + 1 /* space */ + t.size() + 1 /* nl */) + .unwrap_or(0) + + 1 /* nl */ + self.message.len() + + self.pgp_signature.as_ref().map(|m| 1 /* nl */ + m.len()).unwrap_or(0) } } impl<'a> crate::WriteTo for TagRef<'a> { fn write_to(&self, mut out: impl io::Write) -> io::Result<()> { - encode::trusted_header_id(b"object", &self.target(), &mut out)?; + encode::trusted_header_field(b"object", self.target, &mut out)?; encode::trusted_header_field(b"type", self.target_kind.as_bytes(), &mut out)?; encode::header_field(b"tag", validated_name(self.name)?, &mut out)?; if let Some(tagger) = &self.tagger { encode::trusted_header_signature(b"tagger", tagger, &mut out)?; } + out.write_all(NL)?; if !self.message.is_empty() { - out.write_all(NL)?; out.write_all(self.message)?; } if let Some(message) = self.pgp_signature { @@ -82,6 +78,10 @@ impl<'a> crate::WriteTo for TagRef<'a> { Ok(()) } + fn kind(&self) -> Kind { + Kind::Tag + } + fn size(&self) -> usize { b"object".len() + 1 /* space */ + self.target().kind().len_in_hex() + 1 /* nl */ + b"type".len() + 1 /* space */ + self.target_kind.as_bytes().len() + 1 /* nl */ @@ -91,17 +91,9 @@ impl<'a> crate::WriteTo for TagRef<'a> { .as_ref() .map(|t| b"tagger".len() + 1 /* space */ + t.size() + 1 /* nl */) .unwrap_or(0) - + if self.message.is_empty() { - 0 - } else { - 1 /* nl */ + self.message.len() - } + + 1 /* nl */ + self.message.len() + self.pgp_signature.as_ref().map(|m| 1 /* nl */ + m.len()).unwrap_or(0) } - - fn kind(&self) -> Kind { - Kind::Tag - } } fn validated_name(name: &BStr) -> Result<&BStr, Error> { diff --git a/git-object/tests/fixtures/tag/empty.txt b/git-object/tests/fixtures/tag/empty.txt index 42dabcc6ed6..018ecbb9cb8 100644 --- a/git-object/tests/fixtures/tag/empty.txt +++ b/git-object/tests/fixtures/tag/empty.txt @@ -2,3 +2,4 @@ object 01dd4e2a978a9f5bd773dae6da7aa4a5ac1cdbbc type commit tag empty tagger Sebastian Thiel 1592381636 +0800 + diff --git a/git-object/tests/immutable/tag.rs b/git-object/tests/immutable/tag.rs index d3457a4ea60..6ddc65ca03a 100644 --- a/git-object/tests/immutable/tag.rs +++ b/git-object/tests/immutable/tag.rs @@ -37,6 +37,10 @@ mod iter { Token::TargetKind(Kind::Commit), Token::Name(b"empty".as_bstr()), Token::Tagger(tagger), + Token::Body { + message: b"".as_bstr(), + pgp_signature: None, + } ] ); assert_eq!(tag_iter.target_id()?, target_id); @@ -103,7 +107,7 @@ KLMHist5yj0sw1E4hDTyQa0= #[test] fn error_handling() -> crate::Result { let data = fixture_bytes("tag", "empty.txt"); - let iter = TagRefIter::from_bytes(&data[..data.len() / 2]); + let iter = TagRefIter::from_bytes(&data[..data.len() / 3]); let tokens = iter.collect::>(); assert!( tokens.last().expect("at least the errored token").is_err(), diff --git a/git-odb/CHANGELOG.md b/git-odb/CHANGELOG.md index da746f6f086..693f99431b0 100644 --- a/git-odb/CHANGELOG.md +++ b/git-odb/CHANGELOG.md @@ -5,6 +5,64 @@ 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.37.0 (2022-11-21) + +### Bug Fixes + + - Disable tag.gpgSign in test scripts + This is done for the same reason that commit.gpgsign is disabled for test + scripts. It prevents test failures if the user has tag.gpgsign enabled in + their global git config when invoking tests. + +### 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) + + - `alternate::resolve(…)` now takes the current_dir as argument. + That way it's more consistent with similar low-level functions and it's + possible to avoid multiple calls to `std::env::current_dir()`. + + Furthermore, the usage of `current_dir()` is made explicit when + instantiating a store to allow it to be resued. + +### Commit Statistics + + + + - 9 commits contributed to the release over the course of 13 calendar days. + - 13 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 'cwd-consistency' ([`ea7c6a3`](https://github.com/Byron/gitoxide/commit/ea7c6a3b069c9e13905b51b87538c57ba9182dca)) + - `alternate::resolve(…)` now takes the current_dir as argument. ([`1fabdc5`](https://github.com/Byron/gitoxide/commit/1fabdc51b9468ba2c6b8cf74509ad5aa2a0b86f4)) + - Merge branch 'jpgrayson/main' ([`b242853`](https://github.com/Byron/gitoxide/commit/b242853abd790e5234b2f18b4aaeddb8f6f4d36f)) + - remove `git config` statements from fixtures that didn't need them (anymore). ([`578ea79`](https://github.com/Byron/gitoxide/commit/578ea799e9ec10f7142a7fc207d43ef301308c6d)) + - Disable tag.gpgSign in test scripts ([`1ce3190`](https://github.com/Byron/gitoxide/commit/1ce3190000f6211ce31468c7603d491bb5b90293)) + - 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.36.0 (2022-11-08) A maintenance release without user-facing changes. @@ -13,7 +71,7 @@ A maintenance release without user-facing changes. - - 1 commit contributed to the release. + - 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)' were seen in commit messages @@ -25,6 +83,7 @@ A maintenance release without user-facing changes.
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))
diff --git a/git-odb/Cargo.toml b/git-odb/Cargo.toml index 0cdf27f92e8..32795bc1a00 100644 --- a/git-odb/Cargo.toml +++ b/git-odb/Cargo.toml @@ -1,11 +1,11 @@ [package] name = "git-odb" -version = "0.36.0" +version = "0.37.0" repository = "https://github.com/Byron/gitoxide" authors = ["Sebastian Thiel "] license = "MIT/Apache-2.0" description = "Implements various git object databases" -edition = "2018" +edition = "2021" include = ["src/**/*", "CHANGELOG.md"] [lib] @@ -27,12 +27,12 @@ path = "tests/odb-single-threaded.rs" required-features = [] [dependencies] -git-features = { version = "^0.23.1", path = "../git-features", features = ["rustsha1", "walkdir", "zlib", "crc32" ] } -git-hash = { version = "^0.9.11", path = "../git-hash" } -git-path = { version = "^0.5.0", path = "../git-path" } -git-quote = { version = "^0.3.0", path = "../git-quote" } -git-object = { version = "^0.22.1", path = "../git-object" } -git-pack = { version = "^0.26.0", path = "../git-pack" } +git-features = { version = "^0.24.0", path = "../git-features", features = ["rustsha1", "walkdir", "zlib", "crc32" ] } +git-hash = { version = "^0.10.0", path = "../git-hash" } +git-path = { version = "^0.6.0", path = "../git-path" } +git-quote = { version = "^0.4.0", path = "../git-quote" } +git-object = { version = "^0.23.0", path = "../git-object" } +git-pack = { version = "^0.27.0", path = "../git-pack" } serde = { version = "1.0.114", optional = true, default-features = false, features = ["derive"]} tempfile = "3.1.0" diff --git a/git-odb/src/alternate/mod.rs b/git-odb/src/alternate/mod.rs index ec6763de44e..24a26f01982 100644 --- a/git-odb/src/alternate/mod.rs +++ b/git-odb/src/alternate/mod.rs @@ -37,23 +37,26 @@ pub enum Error { Cycle(Vec), } -/// Given an objects directory, try to resolve alternate object directories possibly located in the -/// `./info/alternates` file into canonical paths. +/// Given an `objects_directory`, try to resolve alternate object directories possibly located in the +/// `./info/alternates` file into canonical paths and resolve relative paths with the help of the `current_dir`. /// If no alternate object database was resolved, the resulting `Vec` is empty (it is not an error /// if there are no alternates). /// It is an error once a repository is seen again as it would lead to a cycle. -pub fn resolve(objects_directory: impl Into) -> Result, Error> { +pub fn resolve( + objects_directory: impl Into, + current_dir: impl AsRef, +) -> Result, Error> { let relative_base = objects_directory.into(); let mut dirs = vec![(0, relative_base.clone())]; let mut out = Vec::new(); - let cwd = std::env::current_dir()?; - let mut seen = vec![git_path::realpath_opts(&relative_base, &cwd, MAX_SYMLINKS)?]; + let cwd = current_dir.as_ref(); + let mut seen = vec![git_path::realpath_opts(&relative_base, cwd, MAX_SYMLINKS)?]; while let Some((depth, dir)) = dirs.pop() { match fs::read(dir.join("info").join("alternates")) { Ok(input) => { for path in parse::content(&input)?.into_iter() { let path = relative_base.join(path); - let path_canonicalized = git_path::realpath_opts(&path, &cwd, MAX_SYMLINKS)?; + let path_canonicalized = git_path::realpath_opts(&path, cwd, MAX_SYMLINKS)?; if seen.contains(&path_canonicalized) { return Err(Error::Cycle(seen)); } diff --git a/git-odb/src/lib.rs b/git-odb/src/lib.rs index 246313fff22..dbddee05f54 100644 --- a/git-odb/src/lib.rs +++ b/git-odb/src/lib.rs @@ -103,6 +103,11 @@ pub struct Store { /// The source directory from which all content is loaded, and the central write lock for use when a directory refresh is needed. pub(crate) path: PathBuf, + /// The current working directory at the time this store was instantiated. It becomes relevant when resolving alternate paths + /// when re-reading the store configuration on updates when an object was missed. + /// Keeping it here helps to assure consistency even while a process changes its CWD. + pub(crate) current_dir: PathBuf, + /// A set of replacements that given a source OID return a destination OID. The vector is sorted. pub(crate) replacements: Vec<(git_hash::ObjectId, git_hash::ObjectId)>, diff --git a/git-odb/src/store_impls/dynamic/handle.rs b/git-odb/src/store_impls/dynamic/handle.rs index 41794846f6a..c4d3e16c33f 100644 --- a/git-odb/src/store_impls/dynamic/handle.rs +++ b/git-odb/src/store_impls/dynamic/handle.rs @@ -354,6 +354,7 @@ impl TryFrom<&super::Store> for super::Store { slots: crate::store::init::Slots::Given(s.files.len().try_into().expect("BUG: too many slots")), object_hash: Default::default(), use_multi_pack_index: false, + current_dir: s.current_dir.clone().into(), }, ) } diff --git a/git-odb/src/store_impls/dynamic/init.rs b/git-odb/src/store_impls/dynamic/init.rs index 62da73c9bde..8e54311218b 100644 --- a/git-odb/src/store_impls/dynamic/init.rs +++ b/git-odb/src/store_impls/dynamic/init.rs @@ -8,7 +8,7 @@ use crate::{ }; /// Options for use in [`Store::at_opts()`]. -#[derive(Copy, Clone, Debug)] +#[derive(Clone, Debug)] pub struct Options { /// How to obtain a size for the slot map. pub slots: Slots, @@ -16,6 +16,9 @@ pub struct Options { pub object_hash: git_hash::Kind, /// If false, no multi-pack indices will be used. If true, they will be used if their hash matches `object_hash`. pub use_multi_pack_index: bool, + /// The current directory of the process at the time of instantiation. + /// If unset, it will be retrieved using `std::env::current_dir()`. + pub current_dir: Option, } impl Default for Options { @@ -24,6 +27,7 @@ impl Default for Options { slots: Default::default(), object_hash: Default::default(), use_multi_pack_index: true, + current_dir: None, } } } @@ -72,9 +76,11 @@ impl Store { slots, object_hash, use_multi_pack_index, + current_dir, }: Options, ) -> std::io::Result { let objects_dir = objects_dir.into(); + let current_dir = current_dir.map(Ok).unwrap_or_else(std::env::current_dir)?; if !objects_dir.is_dir() { return Err(std::io::Error::new( std::io::ErrorKind::Other, // TODO: use NotADirectory when stabilized @@ -84,7 +90,7 @@ impl Store { let slot_count = match slots { Slots::Given(n) => n as usize, Slots::AsNeededByDiskState { multiplier, minimum } => { - let mut db_paths = crate::alternate::resolve(&objects_dir) + let mut db_paths = crate::alternate::resolve(&objects_dir, ¤t_dir) .map_err(|err| std::io::Error::new(std::io::ErrorKind::Other, err))?; db_paths.insert(0, objects_dir.clone()); let num_slots = super::Store::collect_indices_and_mtime_sorted_by_size(db_paths, None, None) @@ -104,6 +110,7 @@ impl Store { replacements.sort_by(|a, b| a.0.cmp(&b.0)); Ok(Store { + current_dir, write: Default::default(), replacements, path: objects_dir, diff --git a/git-odb/src/store_impls/dynamic/load_index.rs b/git-odb/src/store_impls/dynamic/load_index.rs index d39873baaa7..034c341fe75 100644 --- a/git-odb/src/store_impls/dynamic/load_index.rs +++ b/git-odb/src/store_impls/dynamic/load_index.rs @@ -198,7 +198,7 @@ impl super::Store { self.num_disk_state_consolidation.fetch_add(1, Ordering::Relaxed); let db_paths: Vec<_> = std::iter::once(objects_directory.to_owned()) - .chain(crate::alternate::resolve(objects_directory)?) + .chain(crate::alternate::resolve(objects_directory, &self.current_dir)?) .collect(); // turn db paths into loose object databases. Reuse what's there, but only if it is in the right order. diff --git a/git-odb/tests/fixtures/generated-archives/make_replaced_history.tar.xz b/git-odb/tests/fixtures/generated-archives/make_replaced_history.tar.xz index 13207a8dde9..ada44978f6e 100644 --- a/git-odb/tests/fixtures/generated-archives/make_replaced_history.tar.xz +++ b/git-odb/tests/fixtures/generated-archives/make_replaced_history.tar.xz @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:276948e1907264f7c8a6bed007b6564afc891d3d517511d4b04be4154d1c4c60 -size 11828 +oid sha256:337c95ae31b91381579e1c42b42a246afba79b3d2523729b57da230be373e21c +size 11960 diff --git a/git-odb/tests/fixtures/generated-archives/make_repo_multi_index.tar.xz b/git-odb/tests/fixtures/generated-archives/make_repo_multi_index.tar.xz index 7736508c4e3..225d1fc3a9c 100644 --- a/git-odb/tests/fixtures/generated-archives/make_repo_multi_index.tar.xz +++ b/git-odb/tests/fixtures/generated-archives/make_repo_multi_index.tar.xz @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1ce58ace572ae5ef51d4d13d62cb81196991b6d2fba08de429a9ab78dae0fa98 -size 200564 +oid sha256:e3112c623d569241c5d1115523fff51ca3d71da3a800b87eb3a084a52958c0f5 +size 200916 diff --git a/git-odb/tests/fixtures/make_replaced_history.sh b/git-odb/tests/fixtures/make_replaced_history.sh index 953ea7cb402..d4d0161b4c7 100644 --- a/git-odb/tests/fixtures/make_replaced_history.sh +++ b/git-odb/tests/fixtures/make_replaced_history.sh @@ -2,7 +2,6 @@ set -eu -o pipefail git init -q -git config commit.gpgsign false echo "#include " > file.c && git add file.c git commit -m "Initial commit" diff --git a/git-odb/tests/fixtures/make_repo_multi_index.sh b/git-odb/tests/fixtures/make_repo_multi_index.sh index 1fe172b7687..43decae9124 100644 --- a/git-odb/tests/fixtures/make_repo_multi_index.sh +++ b/git-odb/tests/fixtures/make_repo_multi_index.sh @@ -4,7 +4,6 @@ set -eu -o pipefail omit_multi_index=${1:-no} git init -q -git config commit.gpgsign false function write_files() { local base_dir=${1:?directory to write them into} diff --git a/git-odb/tests/odb/alternate/mod.rs b/git-odb/tests/odb/alternate/mod.rs index 10fb31c036f..13fef133821 100644 --- a/git-odb/tests/odb/alternate/mod.rs +++ b/git-odb/tests/odb/alternate/mod.rs @@ -67,7 +67,7 @@ fn circular_alternates_are_detected_with_relative_paths() -> crate::Result { None, )?; - match alternate::resolve(&from) { + match alternate::resolve(&from, std::env::current_dir()?) { Err(alternate::Error::Cycle(chain)) => { assert_eq!( chain @@ -88,7 +88,7 @@ fn single_link_with_comment_before_path_and_ansi_c_escape() -> crate::Result { let non_alternate = tmp.path().join("actual"); let (from, to) = alternate_with(tmp.path().join("a"), non_alternate, Some("# comment\n"))?; - let alternates = alternate::resolve(from)?; + let alternates = alternate::resolve(from, std::env::current_dir()?)?; assert_eq!(alternates.len(), 1); assert_eq!(alternates[0], to); Ok(()) @@ -97,6 +97,6 @@ fn single_link_with_comment_before_path_and_ansi_c_escape() -> crate::Result { #[test] fn no_alternate_in_first_objects_dir() -> crate::Result { let tmp = git_testtools::tempfile::TempDir::new()?; - assert!(alternate::resolve(tmp.path())?.is_empty()); + assert!(alternate::resolve(tmp.path(), std::env::current_dir()?)?.is_empty()); Ok(()) } diff --git a/git-pack/CHANGELOG.md b/git-pack/CHANGELOG.md index 436f44a0f2a..e42f5687c7d 100644 --- a/git-pack/CHANGELOG.md +++ b/git-pack/CHANGELOG.md @@ -5,6 +5,30 @@ 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.27.0 (2022-11-21) + +A maintenance release without user facing changes. + +### Commit Statistics + + + + - 2 commits contributed to the release over the course of 13 calendar days. + - 13 days passed between releases. + - 0 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 'main' into http-config ([`7c5b37d`](https://github.com/Byron/gitoxide/commit/7c5b37d28e98f59a6847368a0d0166d2dbb4acc1)) +
+ ## 0.26.0 (2022-11-08) A maintenance release without user-facing changes. @@ -13,7 +37,7 @@ A maintenance release without user-facing changes. - - 2 commits contributed to the release over the course of 1 calendar day. + - 3 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)' were seen in commit messages @@ -25,6 +49,7 @@ A maintenance release without user-facing changes.
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)) - Fix spelling where -> were ([`57355c7`](https://github.com/Byron/gitoxide/commit/57355c7b345d864aaf80fdbd9deec50ca78d94fd))
diff --git a/git-pack/Cargo.toml b/git-pack/Cargo.toml index 7c0bf3061b8..091a3f5fe6f 100644 --- a/git-pack/Cargo.toml +++ b/git-pack/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "git-pack" -version = "0.26.0" +version = "0.27.0" repository = "https://github.com/Byron/gitoxide" authors = ["Sebastian Thiel "] license = "MIT/Apache-2.0" @@ -37,14 +37,14 @@ path = "tests/pack-single-threaded.rs" required-features = ["internal-testing-to-avoid-being-run-by-cargo-test-all"] [dependencies] -git-features = { version = "^0.23.1", path = "../git-features", features = ["crc32", "rustsha1", "progress", "zlib"] } -git-path = { version = "^0.5.0", path = "../git-path" } -git-hash = { version = "^0.9.11", path = "../git-hash" } -git-chunk = { version = "^0.3.2", path = "../git-chunk" } -git-object = { version = "^0.22.1", path = "../git-object" } -git-traverse = { version = "^0.18.0", path = "../git-traverse" } -git-diff = { version = "^0.22.0", path = "../git-diff" } -git-tempfile = { version = "^2.0.0", path = "../git-tempfile" } +git-features = { version = "^0.24.0", path = "../git-features", features = ["crc32", "rustsha1", "progress", "zlib"] } +git-path = { version = "^0.6.0", path = "../git-path" } +git-hash = { version = "^0.10.0", path = "../git-hash" } +git-chunk = { version = "^0.4.0", path = "../git-chunk" } +git-object = { version = "^0.23.0", path = "../git-object" } +git-traverse = { version = "^0.19.0", path = "../git-traverse" } +git-diff = { version = "^0.23.0", path = "../git-diff" } +git-tempfile = { version = "^3.0.0", path = "../git-tempfile" } smallvec = "1.3.0" memmap2 = "0.5.0" diff --git a/git-packetline/CHANGELOG.md b/git-packetline/CHANGELOG.md index f9ef50e6e77..3d704e86b61 100644 --- a/git-packetline/CHANGELOG.md +++ b/git-packetline/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.1 (2022-10-10) ### Bug Fixes @@ -22,7 +58,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 20 calendar days. + - 6 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) @@ -36,6 +72,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 * **[#450](https://github.com/Byron/gitoxide/issues/450)** - support keepalive packets. ([`d7f62b4`](https://github.com/Byron/gitoxide/commit/d7f62b441700c6d3526517c8c4f369cb9a72c102)) * **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)) - Merge branch 'fetch-pack' ([`f47c891`](https://github.com/Byron/gitoxide/commit/f47c89129732bcb06fe76a4696fe38ab1151fb0c)) @@ -114,7 +151,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - 8 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 @@ -144,7 +181,7 @@ A maintenance release without user facing changes. - 11 commits contributed to the release over the course of 90 calendar days. - 90 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 @@ -276,7 +313,7 @@ A maintenance release, triggered by putting too many adjustments into a single c - 4 commits contributed to the release over the course of 2 calendar days. - 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 @@ -411,7 +448,7 @@ A maintenance release due to properly dealing with previously breaking changes i - 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 @@ -449,7 +486,7 @@ A maintenance release due to properly dealing with previously breaking changes i - 8 commits contributed to the release. - 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 @@ -477,7 +514,7 @@ A maintenance release due to properly dealing with previously breaking changes i - 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 @@ -499,7 +536,7 @@ A maintenance release due to properly dealing with previously breaking changes i - 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 @@ -522,7 +559,7 @@ A maintenance release due to properly dealing with previously breaking changes i - 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 @@ -543,7 +580,7 @@ A maintenance release due to properly dealing with previously breaking changes i - 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 @@ -693,7 +730,7 @@ A maintenance release due to properly dealing with previously breaking changes i - 14 commits contributed to the release over the course of 133 calendar days. - 133 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 ### Thanks Clippy @@ -733,7 +770,7 @@ A maintenance release due to properly dealing with previously breaking changes i - 9 commits contributed to the release over the course of 9 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 @@ -761,7 +798,7 @@ A maintenance release due to properly dealing with previously breaking changes i - 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 @@ -783,7 +820,7 @@ A maintenance release due to properly dealing with previously breaking changes i - 5 commits contributed to the release over the course of 90 calendar days. - 92 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 @@ -808,7 +845,7 @@ A maintenance release due to properly dealing with previously breaking changes i - 4 commits contributed to the release over the course of 2 calendar days. - 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 @@ -832,7 +869,7 @@ A maintenance release due to properly dealing with previously breaking changes i - 45 commits contributed to the release over the course of 23 calendar days. - 24 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 @@ -896,7 +933,7 @@ A maintenance release due to properly dealing with previously breaking changes i - 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-packetline/Cargo.toml b/git-packetline/Cargo.toml index 826fe716111..6eb3756f0aa 100644 --- a/git-packetline/Cargo.toml +++ b/git-packetline/Cargo.toml @@ -1,11 +1,11 @@ [package] name = "git-packetline" -version = "0.13.1" +version = "0.14.0" repository = "https://github.com/Byron/gitoxide" license = "MIT/Apache-2.0" description = "A WIP crate of the gitoxide project implementing the pkt-line serialization format" authors = ["Sebastian Thiel "] -edition = "2018" +edition = "2021" include = ["src/**/*", "CHANGELOG.md"] [lib] diff --git a/git-path/CHANGELOG.md b/git-path/CHANGELOG.md index 038b3d72724..5a5b2d14d8e 100644 --- a/git-path/CHANGELOG.md +++ b/git-path/CHANGELOG.md @@ -5,6 +5,58 @@ 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. + +### Bug Fixes (BREAKING) + + - `absolutize()` now takes a mandatory `current_dir()` parameter and returns `Option` + Previously the function was willing to return an empty path despite it + being invalid. With the `current_dir` being required, this won't be the + case anymore and will yield logically consistent results in all cases. + + This forces the caller to deal with the relative path being invalid + or crafted to produce some other path, maybe to bypass sanity checks. + +### Commit Statistics + + + + - 9 commits contributed to the release over the course of 62 calendar days. + - 62 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 'discover-rel-path' ([`5f908fb`](https://github.com/Byron/gitoxide/commit/5f908fb86857d565715b9b0b8b453b29273fb022)) + - improve documentation to clarify intent ([`b8f73aa`](https://github.com/Byron/gitoxide/commit/b8f73aa5afe3f7aefa5627d7708e4c7e7da950a2)) + - 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)) + - `absolutize()` now takes a mandatory `current_dir()` parameter and returns `Option` ([`7dbab1c`](https://github.com/Byron/gitoxide/commit/7dbab1c62c49822983c59be0443478f7b4fecbca)) + - 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.5.0 (2022-09-20) ### New Features @@ -23,7 +75,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - - 9 commits contributed to the release over the course of 21 calendar days. + - 7 commits contributed to the release over the course of 18 calendar days. - 21 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,12 +92,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - update changelogs prior to release ([`caa7a1b`](https://github.com/Byron/gitoxide/commit/caa7a1bdef74d7d3166a7e38127a59f5ab3cfbdd)) - add support for `wasi` ([`523418f`](https://github.com/Byron/gitoxide/commit/523418f69030faa0add6472b14333e9aafc69f56)) * **Uncategorized** - - Merge branch 'index-from-tree' ([`172f73c`](https://github.com/Byron/gitoxide/commit/172f73cf26878d153d51790fa01853fa4ba6beb7)) - - 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)) + - 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-by-spec' ([`5c05198`](https://github.com/Byron/gitoxide/commit/5c051986bd89590a9287d85d84c713d83dfab83a)) + - Merge branch 'main' into index-from-tree ([`bc64b96`](https://github.com/Byron/gitoxide/commit/bc64b96a2ec781c72d1d4daad38aa7fb8b74f99b))
## 0.4.2 (2022-08-29) @@ -60,7 +110,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 4 calendar days. + - 3 commits contributed to the release over the course of 5 calendar days. - 6 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) @@ -75,7 +125,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - add `is_absolute()` for git-style absolute checks ([`f58a043`](https://github.com/Byron/gitoxide/commit/f58a043273b8e15afd01aac71f33652783baf462)) * **Uncategorized** - Release git-path v0.4.2, git-config-value v0.7.0 ([`c48fb31`](https://github.com/Byron/gitoxide/commit/c48fb3107d29f9a06868b0c6de40567063a656d1)) - - Merge branch 'main' into filter-refs-by-spec ([`cef0b51`](https://github.com/Byron/gitoxide/commit/cef0b51ade2a3301fa09ede7a425aa1fe3527e78)) + - Merge branch 'main' into filter-refs-by-spec ([`cfa1440`](https://github.com/Byron/gitoxide/commit/cfa144031dbcac2707ab0cec012bc35e78f9c475))
## 0.4.1 (2022-08-23) @@ -101,10 +151,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - - 5 commits contributed to the release over the course of 3 calendar days. + - 10 commits contributed to the release over the course of 30 calendar days. - 31 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 @@ -115,9 +165,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 * **Uncategorized** - Release git-path v0.4.1 ([`5e82346`](https://github.com/Byron/gitoxide/commit/5e823462b3deb904f5d6154a7bf114cef1988224)) - Handle `.` specifically in `absolutize()`. ([`9171adb`](https://github.com/Byron/gitoxide/commit/9171adb796b38b08cae9bdd375b16a59a8166a1c)) - - 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 #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))
## 0.4.0 (2022-07-22) @@ -131,7 +186,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - - 12 commits contributed to the release over the course of 32 calendar days. + - 14 commits contributed to the release over the course of 32 calendar days. - 33 days passed between releases. - 1 commit was understood as [conventional](https://www.conventionalcommits.org). - 1 unique issue was worked on: [#331](https://github.com/Byron/gitoxide/issues/331) @@ -153,15 +208,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 * **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 pull request #1 from Byron/main ([`085e76b`](https://github.com/Byron/gitoxide/commit/085e76b121291ed9bd324139105d2bd4117bedf8)) - make fmt ([`0700b09`](https://github.com/Byron/gitoxide/commit/0700b09d6828849fa2470df89af1f75a67bfb27d)) - fix docs ([`4f8e3b1`](https://github.com/Byron/gitoxide/commit/4f8e3b169e57d599439c7abc861c82c08bcd92e3)) - thanks clippy ([`7a2a31e`](https://github.com/Byron/gitoxide/commit/7a2a31e5758a2be8434f22cd9401ac00539f2bd9)) - - Merge branch 'main' into cont_include_if ([`daa71c3`](https://github.com/Byron/gitoxide/commit/daa71c3b753c6d76a3d652c29237906b3e28728f)) + - Merge branch 'main' into pathspec ([`89ea12b`](https://github.com/Byron/gitoxide/commit/89ea12b558bcc056b892193ee8fb44b8664b5da4)) - Merge branch 'main' into cont_include_if ([`0e9df36`](https://github.com/Byron/gitoxide/commit/0e9df364c4cddf006b1de18b8d167319b7cc1186)) - generally avoid using `target_os = "windows"` in favor of `cfg(windows)` and negations ([`91d5402`](https://github.com/Byron/gitoxide/commit/91d54026a61c2aae5e3e1341d271acf16478cd83)) - Use git_path::realpath in all places that allow it right now ([`229dc91`](https://github.com/Byron/gitoxide/commit/229dc917fc7d9241b85e5818260a6fbdd3a5daaa)) - avoid unwraps in tests as they are now stable ([`efa1423`](https://github.com/Byron/gitoxide/commit/efa14234c352b6b8417f0a42fc946e88f2eb52d3)) - remove canonicalized-path abstraction ([`9496e55`](https://github.com/Byron/gitoxide/commit/9496e5512975825efebe0db86335d0d2dc8c9095)) + - Merge branch 'main' into cont_include_if ([`41ea8ba`](https://github.com/Byron/gitoxide/commit/41ea8ba78e74f5c988148367386a1f4f304cb951))
## 0.3.0 (2022-06-19) @@ -177,7 +234,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - 4 commits contributed to the release. - 6 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 @@ -203,10 +260,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - - 6 commits contributed to the release over the course of 20 calendar days. + - 6 commits contributed to the release over the course of 18 calendar days. - 20 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 @@ -218,9 +275,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - 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)) - make fmt ([`c665aef`](https://github.com/Byron/gitoxide/commit/c665aef4270c5ee54da89ee015cc0affd6337608)) - - Merge branch 'main' into davidkna-envopen ([`bc0abc6`](https://github.com/Byron/gitoxide/commit/bc0abc643d3329f885f250b6880560dec861150f)) + - Merge branch 'main' into svetli-n-cont_include_if ([`315c87e`](https://github.com/Byron/gitoxide/commit/315c87e18c6cac0fafa7b4e59fdd3c076a58a45a)) - Make `realpath()` easier to use by introducing `realpath_opt()`. ([`266d437`](https://github.com/Byron/gitoxide/commit/266d4379e9132fd7dd21e6c8fccb36e125069d6e)) - - Merge branch 'davidkna-admin-sec' ([`3d0e2c2`](https://github.com/Byron/gitoxide/commit/3d0e2c2d4ebdbe3dff01846aac3375128353a2e1)) + - Merge branch 'main' into SidneyDouw-pathspec ([`a22b1d8`](https://github.com/Byron/gitoxide/commit/a22b1d88a21311d44509018729c3ef1936cf052a))
## 0.1.3 (2022-05-23) @@ -231,10 +288,10 @@ A maintenance release without user-facing changes. - - 4 commits contributed to the release over the course of 1 calendar day. + - 3 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 @@ -246,7 +303,6 @@ A maintenance release without user-facing changes. - Release git-path v0.1.3, git-discover v0.1.2, git-repository v0.18.1, cargo-smart-release v0.10.1 ([`b7399cc`](https://github.com/Byron/gitoxide/commit/b7399cc44ee419355a649a7b0ba7b352cd48b400)) - prepare for smart-release release ([`2f74cb0`](https://github.com/Byron/gitoxide/commit/2f74cb05e9b2399355af07517fe3c14e4e8724c5)) - adjust git-path size limits ([`5ac8a3b`](https://github.com/Byron/gitoxide/commit/5ac8a3b58e0f61d4801a6f4dbd011f757208dbac)) - - Merge branch 'davidkna-discover-x-fs' ([`9abaeda`](https://github.com/Byron/gitoxide/commit/9abaeda2d22e2dbb1db1632c6eb637f1458d06e1))
## 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)?;