collin/anvil · a60d607b
Remove three unused dependencies and gix's blob-diff feature
Collin Richards · 2026-08-25 06:35 UTC · a60d607b17fdb7f62a29e6bb2cbfc02dae7d40d6 · parent 0b6dde80 · browse files
modifiedCargo.lock+0 −64
| ⋯ 138 unchanged lines | |||
| 139 | 139 | version = "0.0.0" | |
| 140 | 140 | dependencies = [ | |
| 141 | 141 | "anvil-core", | |
| 142 | - | "anvil-docker", | |
| 143 | 142 | "anvil-git", | |
| 144 | 143 | "anvil-job", | |
| 145 | 144 | "flate2", | |
| ⋯ 24 unchanged lines | |||
| 170 | 169 | "ssh-key", | |
| 171 | 170 | "time", | |
| 172 | 171 | "tokio", | |
| 173 | - | "tracing", | |
| 174 | 172 | "tracing-subscriber", | |
| 175 | 173 | ] | |
| 176 | 174 | ||
| ⋯ 81 unchanged lines | |||
| 258 | 256 | "anvil-core", | |
| 259 | 257 | "anvil-git", | |
| 260 | 258 | "anvil-job", | |
| 261 | - | "argon2", | |
| 262 | 259 | "axum", | |
| 263 | 260 | "axum-extra", | |
| 264 | 261 | "base64", | |
| ⋯ 748 unchanged lines | |||
| 1013 | 1010 | ] | |
| 1014 | 1011 | ||
| 1015 | 1012 | [[package]] | |
| 1016 | - | name = "dashmap" | |
| 1017 | - | version = "6.2.1" | |
| 1018 | - | source = "registry+https://github.com/rust-lang/crates.io-index" | |
| 1019 | - | checksum = "e6361d5c062261c78a176addb82d4c821ae42bed6089de0e12603cd25de2059c" | |
| 1020 | - | dependencies = [ | |
| 1021 | - | "cfg-if", | |
| 1022 | - | "crossbeam-utils", | |
| 1023 | - | "hashbrown 0.14.5", | |
| 1024 | - | "lock_api", | |
| 1025 | - | "once_cell", | |
| 1026 | - | "parking_lot_core", | |
| 1027 | - | ] | |
| 1028 | - | ||
| 1029 | - | [[package]] | |
| 1030 | 1013 | name = "data-encoding" | |
| 1031 | 1014 | version = "2.11.1" | |
| 1032 | 1015 | source = "registry+https://github.com/rust-lang/crates.io-index" | |
| ⋯ 570 unchanged lines | |||
| 1603 | 1586 | dependencies = [ | |
| 1604 | 1587 | "gix-actor", | |
| 1605 | 1588 | "gix-attributes", | |
| 1606 | - | "gix-command", | |
| 1607 | 1589 | "gix-commitgraph", | |
| 1608 | 1590 | "gix-config", | |
| 1609 | 1591 | "gix-date", | |
| ⋯ 6 unchanged lines | |||
| 1616 | 1598 | "gix-glob", | |
| 1617 | 1599 | "gix-hash", | |
| 1618 | 1600 | "gix-hashtable", | |
| 1619 | - | "gix-ignore", | |
| 1620 | 1601 | "gix-index", | |
| 1621 | 1602 | "gix-lock", | |
| 1622 | 1603 | "gix-note", | |
| ⋯ 10 unchanged lines | |||
| 1633 | 1614 | "gix-revwalk", | |
| 1634 | 1615 | "gix-sec", | |
| 1635 | 1616 | "gix-shallow", | |
| 1636 | - | "gix-submodule", | |
| 1637 | 1617 | "gix-tempfile", | |
| 1638 | 1618 | "gix-trace", | |
| 1639 | 1619 | "gix-traverse", | |
| ⋯ 132 unchanged lines | |||
| 1772 | 1752 | checksum = "1b1689ff5ddeee4acfb2a43e875a1072a76d208624b15a9065c938b39cb0da2a" | |
| 1773 | 1753 | dependencies = [ | |
| 1774 | 1754 | "bstr", | |
| 1775 | - | "gix-command", | |
| 1776 | - | "gix-filter", | |
| 1777 | - | "gix-fs", | |
| 1778 | 1755 | "gix-hash", | |
| 1779 | - | "gix-imara-diff", | |
| 1780 | 1756 | "gix-object", | |
| 1781 | - | "gix-path", | |
| 1782 | - | "gix-tempfile", | |
| 1783 | - | "gix-trace", | |
| 1784 | - | "gix-traverse", | |
| 1785 | - | "gix-worktree", | |
| 1786 | 1757 | "thiserror", | |
| 1787 | 1758 | ] | |
| 1788 | 1759 | ||
| ⋯ 123 unchanged lines | |||
| 1912 | 1883 | ] | |
| 1913 | 1884 | ||
| 1914 | 1885 | [[package]] | |
| 1915 | - | name = "gix-imara-diff" | |
| 1916 | - | version = "0.2.5" | |
| 1917 | - | source = "registry+https://github.com/rust-lang/crates.io-index" | |
| 1918 | - | checksum = "1c91d8cffac8849493a82233811bd02b2b183b8cf39bf704de0fa0841b737595" | |
| 1919 | - | dependencies = [ | |
| 1920 | - | "bstr", | |
| 1921 | - | "hashbrown 0.17.1", | |
| 1922 | - | ] | |
| 1923 | - | ||
| 1924 | - | [[package]] | |
| 1925 | 1886 | name = "gix-index" | |
| 1926 | 1887 | version = "0.55.0" | |
| 1927 | 1888 | source = "registry+https://github.com/rust-lang/crates.io-index" | |
| ⋯ 63 unchanged lines | |||
| 1991 | 1952 | dependencies = [ | |
| 1992 | 1953 | "bstr", | |
| 1993 | 1954 | "gix-actor", | |
| 1994 | - | "gix-command", | |
| 1995 | 1955 | "gix-date", | |
| 1996 | 1956 | "gix-features", | |
| 1997 | 1957 | "gix-hash", | |
| 1998 | 1958 | "gix-hashtable", | |
| 1999 | - | "gix-tempfile", | |
| 2000 | 1959 | "gix-utils", | |
| 2001 | 1960 | "gix-validate", | |
| 2002 | 1961 | "itoa", | |
| ⋯ 212 unchanged lines | |||
| 2215 | 2174 | ] | |
| 2216 | 2175 | ||
| 2217 | 2176 | [[package]] | |
| 2218 | - | name = "gix-submodule" | |
| 2219 | - | version = "0.34.0" | |
| 2220 | - | source = "registry+https://github.com/rust-lang/crates.io-index" | |
| 2221 | - | checksum = "da85564d6725c483b8d95d7b31d1db0b78c29e462a2b481949e2f18e1ed55a6a" | |
| 2222 | - | dependencies = [ | |
| 2223 | - | "bstr", | |
| 2224 | - | "gix-config", | |
| 2225 | - | "gix-path", | |
| 2226 | - | "gix-pathspec", | |
| 2227 | - | "gix-refspec", | |
| 2228 | - | "gix-url", | |
| 2229 | - | "thiserror", | |
| 2230 | - | ] | |
| 2231 | - | ||
| 2232 | - | [[package]] | |
| 2233 | 2177 | name = "gix-tempfile" | |
| 2234 | 2178 | version = "24.0.0" | |
| 2235 | 2179 | source = "registry+https://github.com/rust-lang/crates.io-index" | |
| 2236 | 2180 | checksum = "b675b920bd5a61d17ad542772f03ec34c60feb8ff683e1560c03ae967363731e" | |
| 2237 | 2181 | dependencies = [ | |
| 2238 | - | "dashmap", | |
| 2239 | 2182 | "gix-fs", | |
| 2240 | 2183 | "libc", | |
| 2241 | 2184 | "parking_lot", | |
| ⋯ 90 unchanged lines | |||
| 2332 | 2275 | "gix-index", | |
| 2333 | 2276 | "gix-object", | |
| 2334 | 2277 | "gix-path", | |
| 2335 | - | "gix-validate", | |
| 2336 | 2278 | ] | |
| 2337 | 2279 | ||
| 2338 | 2280 | [[package]] | |
| ⋯ 43 unchanged lines | |||
| 2382 | 2324 | dependencies = [ | |
| 2383 | 2325 | "byteorder", | |
| 2384 | 2326 | ] | |
| 2385 | - | ||
| 2386 | - | [[package]] | |
| 2387 | - | name = "hashbrown" | |
| 2388 | - | version = "0.14.5" | |
| 2389 | - | source = "registry+https://github.com/rust-lang/crates.io-index" | |
| 2390 | - | checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" | |
| 2391 | 2327 | ||
| 2392 | 2328 | [[package]] | |
| 2393 | 2329 | name = "hashbrown" | |
| ⋯ 3564 unchanged lines | |||
modifiedCargo.toml+1 −1
| ⋯ 91 unchanged lines | |||
| 92 | 92 | flate2 = { version = "1" } | |
| 93 | 93 | futures-util = { version = "0.3" } | |
| 94 | 94 | gitserver-core = { path = "vendor/gitserver-core" } | |
| 95 | - | gix = { version = "0.87.1", default-features = false, features = ["sha1", "max-performance-safe", "blob-diff", "revision"] } | |
| 95 | + | gix = { version = "0.87.1", default-features = false, features = ["sha1", "max-performance-safe", "revision"] } | |
| 96 | 96 | gix-pack = { version = "0.74.2", features = ["sha1"] } | |
| 97 | 97 | hmac = { version = "0.13.0" } | |
| 98 | 98 | lru = { version = "0.18.2" } | |
| ⋯ 26 unchanged lines | |||
modifiedclippy.toml+33 −30
| 1 | 1 | # Duplicates `clippy::multiple_crate_versions` is allowed to ignore. | |
| 2 | 2 | # | |
| 3 | - | # The lint is on (see `[workspace.lints.clippy]` in Cargo.toml) so that a *new* | |
| 4 | - | # duplicate has to be argued for. Everything below is a duplicate we cannot | |
| 5 | - | # remove from here: some other crate in the tree pins the older copy, and the | |
| 6 | - | # only fix is that crate moving. Each entry says who is holding it, so this | |
| 7 | - | # list doubles as the "what are we waiting on" record — when a bump makes an | |
| 8 | - | # entry unnecessary, delete it rather than leaving it to rot. | |
| 3 | + | # The lint is on (see `[workspace.lints.clippy]` in Cargo.toml) so a *new* | |
| 4 | + | # duplicate has to be argued for. Everything below is one we cannot remove from | |
| 5 | + | # here: another crate in the tree pins the older copy and the only fix is that | |
| 6 | + | # crate moving. Each entry names who is holding it, so the list doubles as a | |
| 7 | + | # record of what we are waiting on — when a bump makes an entry unnecessary, | |
| 8 | + | # delete it rather than leaving it to rot. | |
| 9 | + | # | |
| 10 | + | # Five have left that way rather than by being tolerated: | |
| 11 | + | # argon2, blake2, password-hash taking argon2 0.6, which ssh-key was on | |
| 12 | + | # base64 holding at 0.22 to match axum, since 0.23 | |
| 13 | + | # added nothing we use | |
| 14 | + | # tower-http it was declared and never used, so the | |
| 15 | + | # whole dependency went | |
| 16 | + | # | |
| 17 | + | # `rand` is the one that looks collapsible and is not. axum's websockets pull | |
| 18 | + | # 0.9 and we are on 0.10, which is the base64 situation exactly — except | |
| 19 | + | # ssh-key rc.11 only accepts an RNG implementing rand_core 0.10's traits, so | |
| 20 | + | # moving to 0.9 trades the duplicate for a compile error in anvil-ssh. It waits | |
| 21 | + | # for axum. | |
| 9 | 22 | # | |
| 10 | - | # Nothing here is ours to collapse today: `argon2` was, and was taken, which | |
| 11 | - | # is what removed argon2, blake2 and password-hash from this list. | |
| 23 | + | # Note this list is checked against the dev- and build-dependency graph too, | |
| 24 | + | # not just `cargo tree -e normal`: several entries here are duplicated only | |
| 25 | + | # once test targets are counted. | |
| 12 | 26 | ||
| 13 | 27 | allowed-duplicate-crates = [ | |
| 14 | - | # --- The RustCrypto `digest` 0.10 -> 0.11 seam ------------------------ | |
| 15 | - | # Half the tree has moved to digest 0.11 (aes-gcm, ssh-key, russh, our own | |
| 16 | - | # sha2/hmac) and half has not (gix's sha1, `rsa` 0.9 in anvil-web's tests, | |
| 17 | - | # argon2 0.5). Every crate below is simply the same crate on both sides of | |
| 18 | - | # that line, and they collapse when the stragglers move — mostly gix. | |
| 28 | + | # The RustCrypto `digest` 0.10 -> 0.11 seam. Half the tree has crossed it | |
| 29 | + | # (aes-gcm, argon2, ssh-key, russh, our sha2/hmac) and half has not — gix's | |
| 30 | + | # sha1, and `rsa` 0.9 in anvil-web's tests. Each crate here is the same | |
| 31 | + | # crate on both sides of that line; they collapse together when gix moves. | |
| 19 | 32 | "block-buffer", | |
| 20 | 33 | "const-oid", | |
| 21 | 34 | "cpufeatures", | |
| ⋯ 3 unchanged lines | |||
| 25 | 38 | "sha1", | |
| 26 | 39 | "sha3", | |
| 27 | 40 | ||
| 28 | - | # --- Held by direct dependencies of ours ------------------------------ | |
| 29 | - | "hashlink", # rusqlite 0.40 moved to 0.12; something older wants 0.11. | |
| 30 | - | "rand", # axum's websockets are on 0.9; ssh-key needs rand_core 0.10, | |
| 31 | - | # so we cannot meet them — see the note below. | |
| 32 | - | # `base64` used to sit here: we were on 0.23 and axum 0.8 on 0.22. We hold | |
| 33 | - | # at 0.22 to match axum rather than carry two copies — 0.23 bought us | |
| 34 | - | # nothing we use, so the duplicate was the whole cost. Revisit when axum | |
| 35 | - | # moves. `tower-http` also used to sit here and turned out to be declared | |
| 36 | - | # and never used at all, so it left with the dependency. | |
| 37 | - | # | |
| 38 | - | # `rand` is the case where meeting in the middle does not work: axum's | |
| 39 | - | # websockets pull 0.9, but ssh-key rc.11 will only take an RNG on | |
| 40 | - | # rand_core 0.10, which is rand 0.10. Downgrading trades one duplicate for | |
| 41 | - | # a compile error, so this one waits for axum. | |
| 41 | + | # Held apart by our own direct dependencies, with no version suiting both. | |
| 42 | + | # See the note on `rand` above. | |
| 43 | + | "rand", | |
| 44 | + | "rand_core", | |
| 42 | 45 | ||
| 43 | - | # --- Entirely inside other crates' trees ------------------------------ | |
| 46 | + | # Entirely inside other crates' trees; nothing we declare picks these. | |
| 44 | 47 | "bitflags", # 1.x lingers under a few transitive crates. | |
| 45 | 48 | "foldhash", # gix-pack's clru vs jaq-json. | |
| 46 | 49 | "getrandom", # 0.2/0.3/0.4 across rand, ring and gix. | |
| 47 | - | "hashbrown", # three copies, all within gix's own sub-crates. | |
| 50 | + | "hashbrown", # two copies, both within gix's own sub-crates. | |
| 51 | + | "hashlink", # rusqlite 0.40 is on 0.12; something older wants 0.11. | |
| 48 | 52 | "r-efi", # a getrandom UEFI backend, one per getrandom major. | |
| 49 | - | "rand_core", # tracks the getrandom split above. | |
| 50 | 53 | "syn", # proc-macro crates mid-migration from 2.x to 3.x. | |
| 51 | 54 | ] | |
modifiedcrates/anvil-ci/Cargo.toml+0 −1
| ⋯ 11 unchanged lines | |||
| 12 | 12 | ||
| 13 | 13 | [dependencies] | |
| 14 | 14 | anvil-core.workspace = true | |
| 15 | - | anvil-docker.workspace = true | |
| 16 | 15 | anvil-job.workspace = true | |
| 17 | 16 | anvil-git.workspace = true | |
| 18 | 17 | flate2.workspace = true | |
| ⋯ 8 unchanged lines | |||
modifiedcrates/anvil-cli/Cargo.toml+0 −1
| ⋯ 32 unchanged lines | |||
| 33 | 33 | # `encryption` so a passphrase-protected private key can be opened locally — | |
| 34 | 34 | # the CLI is the only half of anvil that ever holds a private key. | |
| 35 | 35 | ssh-key = { workspace = true, features = ["encryption"] } | |
| 36 | - | tracing.workspace = true | |
| 37 | 36 | tracing-subscriber.workspace = true | |
modifiedcrates/anvil-web/Cargo.toml+0 −1
| ⋯ 37 unchanged lines | |||
| 38 | 38 | [dev-dependencies] | |
| 39 | 39 | tempfile = { version = "3" } | |
| 40 | 40 | serde_json.workspace = true | |
| 41 | - | argon2.workspace = true | |
| 42 | 41 | rand.workspace = true | |
| 43 | 42 | ssh-key = { workspace = true, features = ["ed25519"] } | |
| 44 | 43 | tokio = { workspace = true } | |
| ⋯ 9 unchanged lines | |||