From aab39745b8c037216a6b91ef16381e7d859e0cc6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Oct 2024 18:24:43 +0000 Subject: [PATCH 001/146] build: bump Swatinem/rust-cache from 2.7.3 to 2.7.5 Bumps [Swatinem/rust-cache](https://github.com/swatinem/rust-cache) from 2.7.3 to 2.7.5. - [Release notes](https://github.com/swatinem/rust-cache/releases) - [Changelog](https://github.com/Swatinem/rust-cache/blob/master/CHANGELOG.md) - [Commits](https://github.com/swatinem/rust-cache/compare/23bce251a8cd2ffc3c1075eaa2367cf899916d84...82a92a6e8fbeee089604da2575dc567ae9ddeaab) --- updated-dependencies: - dependency-name: Swatinem/rust-cache dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/lint.yml | 2 +- .github/workflows/linux.yml | 2 +- .github/workflows/macos.yml | 2 +- .github/workflows/windows.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 452efb352..d78c6f1c4 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -35,7 +35,7 @@ jobs: override: true - name: Cache dependencies - uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 + uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab - name: Run `cargo fmt` uses: actions-rs/cargo@v1 diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 57c4d2205..2669b75b6 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -78,7 +78,7 @@ jobs: override: true - name: Cache dependencies - uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 + uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab - name: Compile (all features) run: cargo build --all-features --all-targets --workspace diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index b2c6fd767..6acfa12c1 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -31,7 +31,7 @@ jobs: override: true - name: Cache dependencies - uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 + uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab - name: Compile run: cargo build --benches --tests diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index f3ec4a93f..8e73c7c46 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -24,7 +24,7 @@ jobs: override: true - name: Cache dependencies - uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 + uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab - name: Compile run: cargo build --all-targets --workspace From b18fda083574b0b1c54a14ab49c803ee8befa1c4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Oct 2024 19:00:04 +0000 Subject: [PATCH 002/146] build: bump async-trait from 0.1.81 to 0.1.83 Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.81 to 0.1.83. - [Release notes](https://github.com/dtolnay/async-trait/releases) - [Commits](https://github.com/dtolnay/async-trait/compare/0.1.81...0.1.83) --- updated-dependencies: - dependency-name: async-trait dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ecd3295ab..4efc91e8e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -161,9 +161,9 @@ dependencies = [ [[package]] name = "async-trait" -version = "0.1.81" +version = "0.1.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" +checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 1c806faa7..c7786ea9c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -33,7 +33,7 @@ tag = false [workspace.dependencies] anyhow = "1.0.86" -async-trait = "0.1.81" +async-trait = "0.1.83" bstr = "1.9.1" bugreport = "0.5.0" chashmap = "2.2.2" From be2286989fbe1f1be2ca7158671a38471427f2b2 Mon Sep 17 00:00:00 2001 From: Waleed Khan Date: Wed, 16 Oct 2024 20:39:56 +0200 Subject: [PATCH 003/146] ci(release): blindly try to update OS versions The `macos` job seems to hang forever when trying to find a machine to run it. Presumably, there are no more `macos-11` runners available. Upgrade some OS versions to try to avoid this situation. Untested. --- .github/workflows/release.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 011fe1a70..18e1540ca 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -19,10 +19,10 @@ jobs: build: [linux-musl, macos, win-msvc] include: - build: linux-musl - os: ubuntu-20.04 + os: ubuntu-24.04 target: x86_64-unknown-linux-musl - build: macos - os: macos-11 + os: macos-13 target: x86_64-apple-darwin - build: win-msvc os: windows-2022 @@ -34,7 +34,7 @@ jobs: uses: actions/checkout@v4 - name: Install packages (Ubuntu) - if: matrix.os == 'ubuntu-20.04' + if: matrix.os == 'ubuntu-24.04' run: | sudo apt-get update sudo apt-get install -y --no-install-recommends xz-utils liblz4-tool musl-tools From efd074e96c3e5bfb864eb7ae07527e9107b10826 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 16 Oct 2024 20:53:49 +0000 Subject: [PATCH 004/146] build: bump bstr from 1.9.1 to 1.10.0 Bumps [bstr](https://github.com/BurntSushi/bstr) from 1.9.1 to 1.10.0. - [Commits](https://github.com/BurntSushi/bstr/compare/1.9.1...1.10.0) --- updated-dependencies: - dependency-name: bstr dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4efc91e8e..2f63e64fa 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -246,9 +246,9 @@ dependencies = [ [[package]] name = "bstr" -version = "1.9.1" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05efc5cfd9110c8416e471df0e96702d58690178e206e61b7173706673c93706" +checksum = "40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c" dependencies = [ "memchr", "regex-automata 0.4.6", diff --git a/Cargo.toml b/Cargo.toml index c7786ea9c..0e2feb7eb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -34,7 +34,7 @@ tag = false [workspace.dependencies] anyhow = "1.0.86" async-trait = "0.1.83" -bstr = "1.9.1" +bstr = "1.10.0" bugreport = "0.5.0" chashmap = "2.2.2" chrono = "0.4.34" From 6415c6bb5b669eaf2fb521e914b0717efe8990f8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 16 Oct 2024 20:55:01 +0000 Subject: [PATCH 005/146] build: bump tempfile from 3.10.1 to 3.13.0 Bumps [tempfile](https://github.com/Stebalien/tempfile) from 3.10.1 to 3.13.0. - [Changelog](https://github.com/Stebalien/tempfile/blob/master/CHANGELOG.md) - [Commits](https://github.com/Stebalien/tempfile/compare/v3.10.1...v3.13.0) --- updated-dependencies: - dependency-name: tempfile dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Cargo.lock | 88 ++++++++++++++++++++++++++++++------------------------ Cargo.toml | 2 +- 2 files changed, 50 insertions(+), 40 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2f63e64fa..a68865c0c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -346,7 +346,7 @@ dependencies = [ "js-sys", "num-traits", "wasm-bindgen", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -1195,9 +1195,9 @@ checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a" [[package]] name = "fastrand" -version = "2.0.2" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "658bd65b1cf4c852a3cc96f18a8ce7b5640f6b703f905c7d74532294c2a63984" +checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" [[package]] name = "filedescriptor" @@ -2057,9 +2057,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.153" +version = "0.2.159" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" +checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" [[package]] name = "libgit2-sys" @@ -2120,9 +2120,9 @@ checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" [[package]] name = "linux-raw-sys" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" [[package]] name = "lock_api" @@ -2910,9 +2910,9 @@ checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" [[package]] name = "rustix" -version = "0.38.32" +version = "0.38.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65e04861e65f21776e67888bfbea442b3642beaa0138fdb1dd7a84a52dffdb89" +checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" dependencies = [ "bitflags 2.5.0", "errno", @@ -3336,14 +3336,15 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.10.1" +version = "3.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" dependencies = [ "cfg-if", "fastrand", + "once_cell", "rustix", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -3879,7 +3880,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -3906,7 +3907,16 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.5", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", ] [[package]] @@ -3941,18 +3951,18 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.5", - "windows_aarch64_msvc 0.52.5", - "windows_i686_gnu 0.52.5", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", "windows_i686_gnullvm", - "windows_i686_msvc 0.52.5", - "windows_x86_64_gnu 0.52.5", - "windows_x86_64_gnullvm 0.52.5", - "windows_x86_64_msvc 0.52.5", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", ] [[package]] @@ -3969,9 +3979,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" @@ -3987,9 +3997,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" @@ -4005,15 +4015,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] name = "windows_i686_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" @@ -4029,9 +4039,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" @@ -4047,9 +4057,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" @@ -4065,9 +4075,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" @@ -4083,9 +4093,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winreg" diff --git a/Cargo.toml b/Cargo.toml index 0e2feb7eb..c4067732f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -93,7 +93,7 @@ serde = { version = "1.0.204", features = ["derive"] } serde_json = "1.0.120" shell-words = "1.1.0" skim = "0.10.4" -tempfile = "3.10.1" +tempfile = "3.13.0" textwrap = "0.16.1" thiserror = "1.0.63" tracing = "0.1.40" From d792c38f49a8a100c721e21c6aaf86a9ae54b4e6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 16 Oct 2024 21:51:12 +0000 Subject: [PATCH 006/146] build: bump assert_cmd from 2.0.14 to 2.0.16 Bumps [assert_cmd](https://github.com/assert-rs/assert_cmd) from 2.0.14 to 2.0.16. - [Changelog](https://github.com/assert-rs/assert_cmd/blob/master/CHANGELOG.md) - [Commits](https://github.com/assert-rs/assert_cmd/compare/v2.0.14...v2.0.16) --- updated-dependencies: - dependency-name: assert_cmd dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 5 +++-- Cargo.toml | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a68865c0c..334fcc623 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -146,13 +146,14 @@ dependencies = [ [[package]] name = "assert_cmd" -version = "2.0.14" +version = "2.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed72493ac66d5804837f480ab3766c72bdfab91a65e565fc54fa9e42db0073a8" +checksum = "dc1835b7f27878de8525dc71410b5a31cdcc5f230aed5ba5df968e09c201b23d" dependencies = [ "anstyle", "bstr", "doc-comment", + "libc", "predicates", "predicates-core", "predicates-tree", diff --git a/Cargo.toml b/Cargo.toml index c4067732f..39ebe0aef 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -103,7 +103,7 @@ tracing-subscriber = { version = "=0.3.11", features = ["env-filter"] } vt100 = "0.15.2" # dev-dependencies -assert_cmd = "2.0.7" +assert_cmd = "2.0.16" cc = "1.1.28" criterion = { version = "0.5.1", features = ["html_reports"] } insta = "1.39.0" From e041fb1a64568e449aec3ed0c996765279016eb8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 21 Oct 2024 18:37:35 +0000 Subject: [PATCH 007/146] build: bump cursive_buffered_backend from 0.6.1 to 0.6.2 Bumps [cursive_buffered_backend](https://github.com/agavrilov/cursive_buffered_backend) from 0.6.1 to 0.6.2. - [Changelog](https://github.com/agavrilov/cursive_buffered_backend/blob/master/CHANGELOG.md) - [Commits](https://github.com/agavrilov/cursive_buffered_backend/compare/cursive_buffered_backend-v0.6.1...v0.6.2) --- updated-dependencies: - dependency-name: cursive_buffered_backend dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 334fcc623..d72c9e9b3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -735,9 +735,9 @@ dependencies = [ [[package]] name = "cursive_buffered_backend" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e902dfdc09ca6729606f45a5ce6ce4ef9637fc257e8b11ca7806fc9aabd03cf7" +checksum = "cf6287f9e06f44558a3264976e70c51187482a0271d48abfd88f0d3af18d3ee6" dependencies = [ "cursive_core", "enumset", diff --git a/Cargo.toml b/Cargo.toml index 39ebe0aef..b5401614d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -49,7 +49,7 @@ crossbeam = "0.8.4" cursive = { version = "0.20.0", default-features = false, features = [ "crossterm-backend", ] } -cursive_buffered_backend = "0.6.1" +cursive_buffered_backend = "0.6.2" cursive_core = "0.3.7" eden_dag = { package = "esl01-dag", version = "0.3.0" } eyre = "0.6.12" From c0621ccc05e20898e48a30e887169e6c4f55f69c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 21 Oct 2024 18:37:23 +0000 Subject: [PATCH 008/146] build: bump thiserror from 1.0.63 to 1.0.64 Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.63 to 1.0.64. - [Release notes](https://github.com/dtolnay/thiserror/releases) - [Commits](https://github.com/dtolnay/thiserror/compare/1.0.63...1.0.64) --- updated-dependencies: - dependency-name: thiserror dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 8 ++++---- Cargo.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d72c9e9b3..a9ee13a78 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3396,18 +3396,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.63" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" +checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.63" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" +checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index b5401614d..3059dd344 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -95,7 +95,7 @@ shell-words = "1.1.0" skim = "0.10.4" tempfile = "3.13.0" textwrap = "0.16.1" -thiserror = "1.0.63" +thiserror = "1.0.64" tracing = "0.1.40" tracing-chrome = "0.6.0" tracing-error = "0.2.0" From 983a356326c08cf63f86b9280cdad6762bfcb82e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 21 Oct 2024 18:37:04 +0000 Subject: [PATCH 009/146] build: bump anyhow from 1.0.86 to 1.0.90 Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.86 to 1.0.90. - [Release notes](https://github.com/dtolnay/anyhow/releases) - [Commits](https://github.com/dtolnay/anyhow/compare/1.0.86...1.0.90) --- updated-dependencies: - dependency-name: anyhow dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a9ee13a78..77fb56fa3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -125,9 +125,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.86" +version = "1.0.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" +checksum = "37bf3594c4c988a53154954629820791dde498571819ae4ca50ca811e060cc95" [[package]] name = "arrayvec" diff --git a/Cargo.toml b/Cargo.toml index 3059dd344..fe8350fb5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -32,7 +32,7 @@ push = false tag = false [workspace.dependencies] -anyhow = "1.0.86" +anyhow = "1.0.90" async-trait = "0.1.83" bstr = "1.10.0" bugreport = "0.5.0" From 8026b8dbb6a545cdf06f8fa37de22a03963b70e8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 21 Oct 2024 18:36:47 +0000 Subject: [PATCH 010/146] build: bump regex from 1.10.5 to 1.11.0 Bumps [regex](https://github.com/rust-lang/regex) from 1.10.5 to 1.11.0. - [Release notes](https://github.com/rust-lang/regex/releases) - [Changelog](https://github.com/rust-lang/regex/blob/master/CHANGELOG.md) - [Commits](https://github.com/rust-lang/regex/compare/1.10.5...1.11.0) --- updated-dependencies: - dependency-name: regex dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Cargo.lock | 22 +++++++++++----------- Cargo.toml | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 77fb56fa3..f30bb00d9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -252,7 +252,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c" dependencies = [ "memchr", - "regex-automata 0.4.6", + "regex-automata 0.4.8", "serde", ] @@ -2634,7 +2634,7 @@ dependencies = [ "rand 0.8.5", "rand_chacha 0.3.1", "rand_xorshift", - "regex-syntax 0.8.3", + "regex-syntax 0.8.5", "rusty-fork", "tempfile", "unarray", @@ -2835,14 +2835,14 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.5" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f" +checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.6", - "regex-syntax 0.8.3", + "regex-automata 0.4.8", + "regex-syntax 0.8.5", ] [[package]] @@ -2856,13 +2856,13 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.6" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" +checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.3", + "regex-syntax 0.8.5", ] [[package]] @@ -2873,9 +2873,9 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.8.3" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "roff" diff --git a/Cargo.toml b/Cargo.toml index fe8350fb5..167c056b4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -84,7 +84,7 @@ once_cell = "1.19.0" path-slash = "0.2.1" portable-pty = "0.8.1" rayon = "1.10.0" -regex = "1.10.5" +regex = "1.11.0" rusqlite = { version = "0.29.0", features = ["bundled"] } scm-bisect = { version = "0.3.0", path = "scm-bisect" } scm-diff-editor = "0.4.0" From a9534fd720ee8fe0fb7d458ec74cbf73e261e9b2 Mon Sep 17 00:00:00 2001 From: Waleed Khan Date: Wed, 16 Oct 2024 23:20:43 +0200 Subject: [PATCH 011/146] cleanup(build): fix deprecated `NaiveDateTime` uses --- git-branchless-lib/src/git/object.rs | 2 +- git-branchless-lib/src/git/repo.rs | 8 ++++---- git-branchless-revset/src/pattern.rs | 16 ++++++++-------- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/git-branchless-lib/src/git/object.rs b/git-branchless-lib/src/git/object.rs index 0bd2fe010..8f27949d9 100644 --- a/git-branchless-lib/src/git/object.rs +++ b/git-branchless-lib/src/git/object.rs @@ -222,7 +222,7 @@ impl<'repo> Commit<'repo> { /// its OID, author, commit time, and message. #[instrument] pub fn friendly_preview(&self) -> Result { - let commit_time = self.get_time().to_naive_date_time(); + let commit_time = self.get_time().to_date_time(); let preview = StyledStringBuilder::from_lines(vec![ StyledStringBuilder::new() .append_styled( diff --git a/git-branchless-lib/src/git/repo.rs b/git-branchless-lib/src/git/repo.rs index eb3ede0d2..d2bee7c43 100644 --- a/git-branchless-lib/src/git/repo.rs +++ b/git-branchless-lib/src/git/repo.rs @@ -19,7 +19,7 @@ use std::time::{Duration, SystemTime}; use std::{io, time}; use bstr::ByteVec; -use chrono::NaiveDateTime; +use chrono::{DateTime, Utc}; use cursive::theme::BaseColor; use cursive::utils::markup::StyledString; use git2::DiffOptions; @@ -1737,8 +1737,8 @@ impl Time { ))) } - /// Calculate the associated [`NaiveDateTime`]. - pub fn to_naive_date_time(&self) -> Option { - NaiveDateTime::from_timestamp_opt(self.inner.seconds(), 0) + /// Calculate the associated [`DateTime`]. + pub fn to_date_time(&self) -> Option> { + DateTime::from_timestamp(self.inner.seconds(), 0) } } diff --git a/git-branchless-revset/src/pattern.rs b/git-branchless-revset/src/pattern.rs index 81db34628..4d969c488 100644 --- a/git-branchless-revset/src/pattern.rs +++ b/git-branchless-revset/src/pattern.rs @@ -1,7 +1,7 @@ use std::fmt::Debug; use std::sync::{Arc, Mutex}; -use chrono::{Local, NaiveDateTime}; +use chrono::{DateTime, Local}; use chrono_english::{parse_date_string, parse_duration, DateError, Dialect, Interval}; use chronoutil::RelativeDuration; use eden_dag::nameset::hints::{Flags, Hints}; @@ -22,8 +22,8 @@ pub(super) enum Pattern { Substring(String), Glob(glob::Pattern), Regex(regex::Regex), - Before(NaiveDateTime), - After(NaiveDateTime), + Before(DateTime), + After(DateTime), } #[derive(Debug, Error)] @@ -64,11 +64,11 @@ impl Pattern { Pattern::Exact(_) | Pattern::Substring(_) | Pattern::Glob(_) | Pattern::Regex(_) => { false } - Pattern::Before(date) => match time.to_naive_date_time() { + Pattern::Before(date) => match time.to_date_time() { Some(time) => &time <= date, None => false, }, - Pattern::After(date) => match time.to_naive_date_time() { + Pattern::After(date) => match time.to_date_time() { Some(time) => &time >= date, None => false, }, @@ -94,9 +94,9 @@ impl Pattern { return Ok(Pattern::Regex(pattern)); } - fn parse_date(pattern: &str) -> Result { + fn parse_date(pattern: &str) -> Result, PatternError> { if let Ok(date) = parse_date_string(pattern, Local::now(), Dialect::Us) { - return Ok(date.naive_local()); + return Ok(date.with_timezone(&Local)); } if let Ok(interval) = parse_duration(pattern) { let delta = match interval { @@ -104,7 +104,7 @@ impl Pattern { Interval::Days(days) => RelativeDuration::days(days.into()), Interval::Months(months) => RelativeDuration::months(months), }; - let date = Local::now().naive_local() + delta; + let date = Local::now() + delta; return Ok(date); } Err(PatternError::ConstructMatcher(eyre::eyre!( From 07815bf2d9280d1d8354b541cfac150116ce1673 Mon Sep 17 00:00:00 2001 From: Waleed Khan Date: Fri, 25 Oct 2024 14:47:43 -0700 Subject: [PATCH 012/146] build: run `cargo update` ```console $ cargo update Updating crates.io index Updating anstream v0.6.13 -> v0.6.17 Updating anstyle v1.0.6 -> v1.0.9 Updating anstyle-parse v0.2.3 -> v0.2.6 Updating anstyle-query v1.0.2 -> v1.1.2 Updating anstyle-wincon v3.0.2 -> v3.0.6 Updating anyhow v1.0.90 -> v1.0.91 Updating arrayvec v0.7.4 -> v0.7.6 Updating autocfg v1.2.0 -> v1.4.0 Updating bitflags v2.5.0 -> v2.6.0 Updating bytes v1.7.2 -> v1.8.0 Updating castaway v0.2.2 -> v0.2.3 Updating cc v1.1.28 -> v1.1.31 Updating chrono v0.4.34 -> v0.4.38 Updating clap v4.5.9 -> v4.5.20 Updating clap_builder v4.5.9 -> v4.5.20 Updating clap_derive v4.5.8 -> v4.5.18 Updating clap_lex v0.7.0 -> v0.7.2 Updating clap_mangen v0.2.22 -> v0.2.24 Updating colorchoice v1.0.0 -> v1.0.3 Updating core-foundation-sys v0.8.6 -> v0.8.7 Updating cpufeatures v0.2.12 -> v0.2.14 Updating crossbeam-channel v0.5.12 -> v0.5.13 Updating crossbeam-utils v0.8.19 -> v0.8.20 Updating darling v0.20.8 -> v0.20.10 Updating darling_core v0.20.8 -> v0.20.10 Updating darling_macro v0.20.8 -> v0.20.10 Updating either v1.11.0 -> v1.13.0 Updating ena v0.14.2 -> v0.14.3 Updating enumset v1.1.3 -> v1.1.5 Updating enumset_derive v0.8.1 -> v0.10.0 Updating errno v0.3.8 -> v0.3.9 Adding foldhash v0.1.3 Updating futures v0.3.30 -> v0.3.31 Updating futures-executor v0.3.30 -> v0.3.31 Updating getrandom v0.2.14 -> v0.2.15 Removing hashbrown v0.14.3 Adding hashbrown v0.14.5 Adding hashbrown v0.15.0 Adding hermit-abi v0.4.0 Updating iana-time-zone v0.1.60 -> v0.1.61 Updating indexmap v2.2.6 -> v2.6.0 Updating insta v1.39.0 -> v1.40.0 Updating instant v0.1.12 -> v0.1.13 Updating is-terminal v0.4.12 -> v0.4.13 Adding is_terminal_polyfill v1.70.1 Removing itertools v0.12.1 Updating jobserver v0.1.30 -> v0.1.32 Updating js-sys v0.3.69 -> v0.3.72 Updating libc v0.2.159 -> v0.2.161 Updating libz-sys v1.1.16 -> v1.1.20 Updating lock_api v0.4.11 -> v0.4.12 Updating log v0.4.21 -> v0.4.22 Updating lru v0.12.3 -> v0.12.5 Updating memchr v2.7.2 -> v2.7.4 Updating miniz_oxide v0.7.2 -> v0.7.4 Updating num v0.4.2 -> v0.4.3 Updating num-complex v0.4.5 -> v0.4.6 Updating num-iter v0.1.44 -> v0.1.45 Updating num-rational v0.4.1 -> v0.4.2 Updating num-traits v0.2.18 -> v0.2.19 Updating once_cell v1.19.0 -> v1.20.2 Updating oorandom v11.1.3 -> v11.1.4 Updating parking_lot v0.12.1 -> v0.12.3 Updating parking_lot_core v0.9.9 -> v0.9.10 Updating paste v1.0.14 -> v1.0.15 Updating petgraph v0.6.4 -> v0.6.5 Updating pin-project-lite v0.2.14 -> v0.2.15 Updating pkg-config v0.3.30 -> v0.3.31 Updating plotters v0.3.5 -> v0.3.7 Updating plotters-backend v0.3.5 -> v0.3.7 Updating plotters-svg v0.3.5 -> v0.3.7 Updating portable-atomic v1.6.0 -> v1.9.0 Updating ppv-lite86 v0.2.17 -> v0.2.20 Updating predicates v3.1.0 -> v3.1.2 Updating predicates-core v1.0.6 -> v1.0.8 Updating predicates-tree v1.0.9 -> v1.0.11 Updating proc-macro2 v1.0.79 -> v1.0.89 Updating quote v1.0.36 -> v1.0.37 Updating redox_syscall v0.4.1 -> v0.5.7 Updating redox_users v0.4.5 -> v0.4.6 Updating regex v1.11.0 -> v1.11.1 Updating roff v0.2.1 -> v0.2.2 Updating rustc-demangle v0.1.23 -> v0.1.24 Updating rustversion v1.0.15 -> v1.0.18 Updating ryu v1.0.17 -> v1.0.18 Updating serde v1.0.204 -> v1.0.213 Updating serde_derive v1.0.204 -> v1.0.213 Updating serde_json v1.0.120 -> v1.0.132 Updating signal-hook-mio v0.2.3 -> v0.2.4 Updating signal-hook-registry v1.4.1 -> v1.4.2 Updating similar v2.5.0 -> v2.6.0 Updating stability v0.2.0 -> v0.2.1 Updating strum v0.26.2 -> v0.26.3 Updating syn v2.0.58 -> v2.0.85 Updating thiserror v1.0.64 -> v1.0.65 Updating thiserror-impl v1.0.64 -> v1.0.65 Updating tinyvec v1.6.0 -> v1.8.0 Updating unicode-bidi v0.3.15 -> v0.3.17 Updating unicode-ident v1.0.12 -> v1.0.13 Updating unicode-normalization v0.1.23 -> v0.1.24 Updating unicode-segmentation v1.11.0 -> v1.12.0 Updating unicode-truncate v1.0.0 -> v1.1.0 Updating unicode-xid v0.2.4 -> v0.2.6 Updating url v2.5.0 -> v2.5.2 Updating utf8parse v0.2.1 -> v0.2.2 Updating version_check v0.9.4 -> v0.9.5 Updating vte_generate_state_changes v0.1.1 -> v0.1.2 Updating wasm-bindgen v0.2.92 -> v0.2.95 Updating wasm-bindgen-backend v0.2.92 -> v0.2.95 Updating wasm-bindgen-macro v0.2.92 -> v0.2.95 Updating wasm-bindgen-macro-support v0.2.92 -> v0.2.95 Updating wasm-bindgen-shared v0.2.92 -> v0.2.95 Updating web-sys v0.3.69 -> v0.3.72 Updating winapi-util v0.1.6 -> v0.1.9 Updating zerocopy v0.7.32 -> v0.7.35 Updating zerocopy-derive v0.7.32 -> v0.7.35 ``` --- Cargo.lock | 599 ++++++++++++++++++++++++++++------------------------- 1 file changed, 313 insertions(+), 286 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f30bb00d9..4026016f9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -24,7 +24,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", - "getrandom 0.2.14", + "getrandom 0.2.15", "once_cell", "version_check", "zerocopy", @@ -77,63 +77,64 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.13" +version = "0.6.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d96bd03f33fe50a863e394ee9718a706f988b9079b20c3784fb726e7678b62fb" +checksum = "23a1e53f0f5d86382dafe1cf314783b2044280f406e7e1506368220ad11b1338" dependencies = [ "anstyle", "anstyle-parse", "anstyle-query", "anstyle-wincon", "colorchoice", + "is_terminal_polyfill", "utf8parse", ] [[package]] name = "anstyle" -version = "1.0.6" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc" +checksum = "8365de52b16c035ff4fcafe0092ba9390540e3e352870ac09933bebcaa2c8c56" [[package]] name = "anstyle-parse" -version = "0.2.3" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" +checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.0.2" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" +checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.2" +version = "3.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" +checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" dependencies = [ "anstyle", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "anyhow" -version = "1.0.90" +version = "1.0.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37bf3594c4c988a53154954629820791dde498571819ae4ca50ca811e060cc95" +checksum = "c042108f3ed77fd83760a5fd79b53be043192bb3b9dba91d8c574c0ada7850c8" [[package]] name = "arrayvec" -version = "0.7.4" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "ascii-canvas" @@ -168,7 +169,7 @@ checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.85", ] [[package]] @@ -184,9 +185,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.2.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "backtrace" @@ -232,9 +233,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" [[package]] name = "block-buffer" @@ -281,9 +282,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.7.2" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" +checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" dependencies = [ "serde", ] @@ -302,18 +303,18 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "castaway" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a17ed5635fc8536268e5d4de1e22e81ac34419e5f052d4d51f4e01dcc263fcc" +checksum = "0abae9be0aaf9ea96a3b1b8b1b55c602ca751eba1b1500220cea4ecbafe7c0d5" dependencies = [ "rustversion", ] [[package]] name = "cc" -version = "1.1.28" +version = "1.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e80e3b6a3ab07840e1cae9b0666a63970dc28e8ed5ffbcdacbfc760c281bfc1" +checksum = "c2e7962b54006dcfcc61cb72735f4d89bb97061dd6a7ed882ec6b8ee53714c6f" dependencies = [ "jobserver", "libc", @@ -338,9 +339,9 @@ dependencies = [ [[package]] name = "chrono" -version = "0.4.34" +version = "0.4.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bc015644b92d5890fab7489e49d21f879d5c990186827d42ec511919404f38b" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" dependencies = [ "android-tzdata", "iana-time-zone", @@ -414,9 +415,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.9" +version = "4.5.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64acc1846d54c1fe936a78dc189c34e28d3f5afc348403f28ecf53660b9b8462" +checksum = "b97f376d85a664d5837dbae44bf546e6477a679ff6610010f17276f686d867e8" dependencies = [ "clap_builder", "clap_derive", @@ -424,26 +425,26 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.9" +version = "4.5.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fb8393d67ba2e7bfaf28a23458e4e2b543cc73a99595511eb207fdb8aede942" +checksum = "19bc80abd44e4bed93ca373a0704ccbd1b710dc5749406201bb018272808dc54" dependencies = [ "anstream", "anstyle", - "clap_lex 0.7.0", + "clap_lex 0.7.2", "strsim 0.11.1", ] [[package]] name = "clap_derive" -version = "4.5.8" +version = "4.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bac35c6dafb060fd4d275d9a4ffae97917c13a6327903a8be2153cd964f7085" +checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.85", ] [[package]] @@ -457,18 +458,18 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.7.0" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" +checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" [[package]] name = "clap_mangen" -version = "0.2.22" +version = "0.2.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f50dde5bc0c853d6248de457e5eb6e5a674a54b93810a34ded88d882ca1fe2de" +checksum = "fbae9cbfdc5d4fa8711c09bd7b83f644cb48281ac35bf97af3e47b0675864bdf" dependencies = [ - "clap 4.5.9", - "roff 0.2.1", + "clap 4.5.20", + "roff 0.2.2", ] [[package]] @@ -500,9 +501,9 @@ dependencies = [ [[package]] name = "colorchoice" -version = "1.0.0" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" +checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" [[package]] name = "compact_str" @@ -552,15 +553,15 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.12" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" dependencies = [ "libc", ] @@ -574,7 +575,7 @@ dependencies = [ "anes", "cast", "ciborium", - "clap 4.5.9", + "clap 4.5.20", "criterion-plot", "is-terminal", "itertools 0.10.5", @@ -616,9 +617,9 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.12" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab3db02a9c5b5121e1e42fbdb1aeb65f5e02624cc58c43f2884c6ccac0b82f95" +checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" dependencies = [ "crossbeam-utils", ] @@ -653,9 +654,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.19" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" [[package]] name = "crossterm" @@ -667,7 +668,7 @@ dependencies = [ "crossterm_winapi", "libc", "mio", - "parking_lot 0.12.1", + "parking_lot 0.12.3", "signal-hook", "signal-hook-mio", "winapi", @@ -679,11 +680,11 @@ version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f476fe445d41c9e991fd07515a6f463074b782242ccf4a5b7b1d1012e70824df" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "crossterm_winapi", "libc", "mio", - "parking_lot 0.12.1", + "parking_lot 0.12.3", "signal-hook", "signal-hook-mio", "winapi", @@ -779,12 +780,12 @@ dependencies = [ [[package]] name = "darling" -version = "0.20.8" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54e36fcd13ed84ffdfda6f5be89b31287cbb80c439841fe69e04841435464391" +checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" dependencies = [ - "darling_core 0.20.8", - "darling_macro 0.20.8", + "darling_core 0.20.10", + "darling_macro 0.20.10", ] [[package]] @@ -803,15 +804,15 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.8" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c2cf1c23a687a1feeb728783b993c4e1ad83d99f351801977dd809b48d0a70f" +checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.85", ] [[package]] @@ -827,13 +828,13 @@ dependencies = [ [[package]] name = "darling_macro" -version = "0.20.8" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a668eda54683121533a393014d8692171709ff57a7d61f187b6e782719f8933f" +checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ - "darling_core 0.20.8", + "darling_core 0.20.10", "quote", - "syn 2.0.58", + "syn 2.0.85", ] [[package]] @@ -952,15 +953,15 @@ checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" [[package]] name = "either" -version = "1.11.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a47c1c47d2f5964e29c61246e81db715514cd532db6b5116a25ea3c03d6780a2" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] name = "ena" -version = "0.14.2" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c533630cf40e9caa44bd91aadc88a75d75a4c3a12b4cfde353cbed41daa1e1f1" +checksum = "3d248bdd43ce613d87415282f69b9bb99d947d290b10962dd6c56233312c2ad5" dependencies = [ "log", ] @@ -988,28 +989,28 @@ checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.85", ] [[package]] name = "enumset" -version = "1.1.3" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "226c0da7462c13fb57e5cc9e0dc8f0635e7d27f276a3a7fd30054647f669007d" +checksum = "d07a4b049558765cef5f0c1a273c3fc57084d768b44d2f98127aef4cceb17293" dependencies = [ "enumset_derive", ] [[package]] name = "enumset_derive" -version = "0.8.1" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e08b6c6ab82d70f08844964ba10c7babb716de2ecaeab9be5717918a5177d3af" +checksum = "59c3b24c345d8c314966bdc1832f6c2635bfcce8e7cf363bd115987bba2ee242" dependencies = [ - "darling 0.20.8", + "darling 0.20.10", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.85", ] [[package]] @@ -1033,9 +1034,9 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" dependencies = [ "libc", "windows-sys 0.52.0", @@ -1223,6 +1224,12 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foldhash" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f81ec6369c545a7d40e4589b5597581fa1c441fe1cce96dd1de43159910a36a2" + [[package]] name = "form_urlencoded" version = "1.2.1" @@ -1260,9 +1267,9 @@ checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" [[package]] name = "futures" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" dependencies = [ "futures-channel", "futures-core", @@ -1291,9 +1298,9 @@ checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" [[package]] name = "futures-executor" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" dependencies = [ "futures-core", "futures-task", @@ -1314,7 +1321,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.85", ] [[package]] @@ -1379,9 +1386,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", "libc", @@ -1474,7 +1481,7 @@ dependencies = [ name = "git-branchless-invoke" version = "0.10.0" dependencies = [ - "clap 4.5.9", + "clap 4.5.20", "color-eyre", "cursive_core", "eyre", @@ -1563,7 +1570,7 @@ dependencies = [ name = "git-branchless-opts" version = "0.10.0" dependencies = [ - "clap 4.5.9", + "clap 4.5.20", "clap_mangen", "git-branchless-lib", "itertools 0.13.0", @@ -1667,7 +1674,7 @@ dependencies = [ name = "git-branchless-submit" version = "0.10.0" dependencies = [ - "clap 4.5.9", + "clap 4.5.20", "cursive_core", "esl01-dag", "eyre", @@ -1676,7 +1683,7 @@ dependencies = [ "git-branchless-opts", "git-branchless-revset", "git-branchless-test", - "indexmap 2.2.6", + "indexmap 2.6.0", "insta", "itertools 0.13.0", "lazy_static", @@ -1695,7 +1702,7 @@ version = "0.10.0" dependencies = [ "assert_cmd", "bstr", - "clap 4.5.9", + "clap 4.5.20", "crossbeam", "cursive", "esl01-dag", @@ -1705,7 +1712,7 @@ dependencies = [ "git-branchless-lib", "git-branchless-opts", "git-branchless-revset", - "indexmap 2.2.6", + "indexmap 2.6.0", "insta", "itertools 0.13.0", "lazy_static", @@ -1752,7 +1759,7 @@ checksum = "53010ccb100b96a67bc32c0175f0ed1426b31b655d562898e57325f81c023ac0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.85", ] [[package]] @@ -1761,7 +1768,7 @@ version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b903b73e45dc0c6c596f2d37eccece7c1c8bb6e4407b001096387c63d0d93724" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "libc", "libgit2-sys", "log", @@ -1792,21 +1799,32 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" [[package]] name = "hashbrown" -version = "0.14.3" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" dependencies = [ "ahash", "allocator-api2", ] +[[package]] +name = "hashbrown" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash", +] + [[package]] name = "hashlink" version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e8094feaf31ff591f651a2664fb9cfd92bba7a60ce3197265e9482ebe753c8f7" dependencies = [ - "hashbrown 0.14.3", + "hashbrown 0.14.5", ] [[package]] @@ -1830,6 +1848,12 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" +[[package]] +name = "hermit-abi" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" + [[package]] name = "hex" version = "0.4.3" @@ -1844,9 +1868,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "iana-time-zone" -version = "0.1.60" +version = "0.1.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -1899,12 +1923,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.2.6" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" dependencies = [ "equivalent", - "hashbrown 0.14.3", + "hashbrown 0.15.0", ] [[package]] @@ -1923,9 +1947,9 @@ dependencies = [ [[package]] name = "insta" -version = "1.39.0" +version = "1.40.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "810ae6042d48e2c9e9215043563a58a80b877bc863228a74cf10c49d4620a6f5" +checksum = "6593a41c7a73841868772495db7dc1e8ecab43bb5c0b6da2059246c4b506ab60" dependencies = [ "console", "lazy_static", @@ -1935,9 +1959,9 @@ dependencies = [ [[package]] name = "instant" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" dependencies = [ "cfg-if", ] @@ -1953,29 +1977,26 @@ dependencies = [ [[package]] name = "is-terminal" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b" +checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b" dependencies = [ - "hermit-abi 0.3.9", + "hermit-abi 0.4.0", "libc", "windows-sys 0.52.0", ] [[package]] -name = "itertools" -version = "0.10.5" +name = "is_terminal_polyfill" +version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" -dependencies = [ - "either", -] +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" [[package]] name = "itertools" -version = "0.12.1" +version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" dependencies = [ "either", ] @@ -1997,18 +2018,18 @@ checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "jobserver" -version = "0.1.30" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "685a7d121ee3f65ae4fddd72b25a04bb36b6af81bc0828f7d5434c0fe60fa3a2" +checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" dependencies = [ "libc", ] [[package]] name = "js-sys" -version = "0.3.69" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" dependencies = [ "wasm-bindgen", ] @@ -2058,9 +2079,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.159" +version = "0.2.161" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" +checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1" [[package]] name = "libgit2-sys" @@ -2086,7 +2107,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "libc", ] @@ -2103,9 +2124,9 @@ dependencies = [ [[package]] name = "libz-sys" -version = "1.1.16" +version = "1.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e143b5e666b2695d28f6bca6497720813f699c9602dd7f5cac91008b8ada7f9" +checksum = "d2d16453e800a8cf6dd2fc3eb4bc99b786a9b90c663b8559a5b1a041bf89e472" dependencies = [ "cc", "libc", @@ -2127,9 +2148,9 @@ checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" [[package]] name = "lock_api" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" dependencies = [ "autocfg", "scopeguard", @@ -2137,17 +2158,17 @@ dependencies = [ [[package]] name = "log" -version = "0.4.21" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "lru" -version = "0.12.3" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3262e75e648fce39813cb56ac41f3c3e3f65217ebf3844d818d1f9398cfb0dc" +checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" dependencies = [ - "hashbrown 0.14.3", + "hashbrown 0.15.0", ] [[package]] @@ -2182,9 +2203,9 @@ checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" [[package]] name = "memchr" -version = "2.7.2" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "memmap" @@ -2207,9 +2228,9 @@ dependencies = [ [[package]] name = "miniz_oxide" -version = "0.7.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" +checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" dependencies = [ "adler", ] @@ -2268,9 +2289,9 @@ dependencies = [ [[package]] name = "num" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3135b08af27d103b0a51f2ae0f8632117b7b185ccf931445affa8df530576a41" +checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" dependencies = [ "num-complex", "num-integer", @@ -2281,9 +2302,9 @@ dependencies = [ [[package]] name = "num-complex" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23c6602fda94a57c990fe0df199a035d83576b496aa29f4e634a8ac6004e68a6" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" dependencies = [ "num-traits", ] @@ -2305,9 +2326,9 @@ dependencies = [ [[package]] name = "num-iter" -version = "0.1.44" +version = "0.1.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d869c01cc0c455284163fd0092f1f93835385ccab5a98a0dcc497b2f8bf055a9" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" dependencies = [ "autocfg", "num-integer", @@ -2316,20 +2337,19 @@ dependencies = [ [[package]] name = "num-rational" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" dependencies = [ - "autocfg", "num-integer", "num-traits", ] [[package]] name = "num-traits" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", "libm", @@ -2371,15 +2391,15 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.19.0" +version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" [[package]] name = "oorandom" -version = "11.1.3" +version = "11.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" +checksum = "b410bbe7e14ab526a0e86877eb47c6996a2bd7746f027ba551028c925390e4e9" [[package]] name = "os_str_bytes" @@ -2423,12 +2443,12 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.12.1" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" dependencies = [ "lock_api", - "parking_lot_core 0.9.9", + "parking_lot_core 0.9.10", ] [[package]] @@ -2445,22 +2465,22 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.9" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", "redox_syscall", "smallvec 1.13.2", - "windows-targets 0.48.5", + "windows-targets 0.52.6", ] [[package]] name = "paste" -version = "1.0.14" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "path-slash" @@ -2476,12 +2496,12 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "petgraph" -version = "0.6.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" +checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset", - "indexmap 2.2.6", + "indexmap 2.6.0", ] [[package]] @@ -2495,9 +2515,9 @@ dependencies = [ [[package]] name = "pin-project-lite" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" +checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" [[package]] name = "pin-utils" @@ -2507,15 +2527,15 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" [[package]] name = "plotters" -version = "0.3.5" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2c224ba00d7cadd4d5c660deaf2098e5e80e07846537c51f9cfa4be50c1fd45" +checksum = "5aeb6f403d7a4911efb1e33402027fc44f29b5bf6def3effcc22d7bb75f2b747" dependencies = [ "num-traits", "plotters-backend", @@ -2526,24 +2546,24 @@ dependencies = [ [[package]] name = "plotters-backend" -version = "0.3.5" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e76628b4d3a7581389a35d5b6e2139607ad7c75b17aed325f210aa91f4a9609" +checksum = "df42e13c12958a16b3f7f4386b9ab1f3e7933914ecea48da7139435263a4172a" [[package]] name = "plotters-svg" -version = "0.3.5" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38f6d39893cca0701371e3c27294f09797214b86f1fb951b89ade8ec04e2abab" +checksum = "51bae2ac328883f7acdfea3d66a7c35751187f870bc81f94563733a154d7a670" dependencies = [ "plotters-backend", ] [[package]] name = "portable-atomic" -version = "1.6.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" +checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2" [[package]] name = "portable-pty" @@ -2574,9 +2594,12 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.17" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] [[package]] name = "precomputed-hash" @@ -2586,9 +2609,9 @@ checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" [[package]] name = "predicates" -version = "3.1.0" +version = "3.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68b87bfd4605926cdfefc1c3b5f8fe560e3feca9d5552cf68c466d3d8236c7e8" +checksum = "7e9086cc7640c29a356d1a29fd134380bee9d8f79a17410aa76e7ad295f42c97" dependencies = [ "anstyle", "difflib", @@ -2597,15 +2620,15 @@ dependencies = [ [[package]] name = "predicates-core" -version = "1.0.6" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b794032607612e7abeb4db69adb4e33590fa6cf1149e95fd7cb00e634b92f174" +checksum = "ae8177bee8e75d6846599c6b9ff679ed51e882816914eec639944d7c9aa11931" [[package]] name = "predicates-tree" -version = "1.0.9" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368ba315fb8c5052ab692e68a0eefec6ec57b23a36959c14496f0b0df2c0cecf" +checksum = "41b740d195ed3166cd147c8047ec98db0e22ec019eb8eeb76d343b795304fb13" dependencies = [ "predicates-core", "termtree", @@ -2613,9 +2636,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.79" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e" +checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e" dependencies = [ "unicode-ident", ] @@ -2628,7 +2651,7 @@ checksum = "b4c2511913b88df1637da85cc8d96ec8e43a3f8bb8ccb71ee1ac240d6f3df58d" dependencies = [ "bit-set", "bit-vec", - "bitflags 2.5.0", + "bitflags 2.6.0", "lazy_static", "num-traits", "rand 0.8.5", @@ -2648,9 +2671,9 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quote" -version = "1.0.36" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] @@ -2742,7 +2765,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.14", + "getrandom 0.2.15", ] [[package]] @@ -2769,7 +2792,7 @@ version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d16546c5b5962abf8ce6e2881e722b4e0ae3b6f1a08a26ae3573c55853ca68d3" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "cassowary", "compact_str", "crossterm 0.27.0", @@ -2815,29 +2838,29 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.4.1" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.6.0", ] [[package]] name = "redox_users" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ - "getrandom 0.2.14", + "getrandom 0.2.15", "libredox", "thiserror", ] [[package]] name = "regex" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", @@ -2885,9 +2908,9 @@ checksum = "e33e4fb37ba46888052c763e4ec2acfedd8f00f62897b630cadb6298b833675e" [[package]] name = "roff" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b833d8d034ea094b1ea68aa6d5c740e0d04bad9d16568d08ba6f76823a114316" +checksum = "88f8660c1ff60292143c98d08fc6e2f654d722db50410e3f3797d40baaf9d8f3" [[package]] name = "rusqlite" @@ -2895,7 +2918,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "549b9d036d571d42e6e85d1c1425e2ac83491075078ca9a15be021c56b1641f2" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "fallible-iterator", "fallible-streaming-iterator", "hashlink", @@ -2905,9 +2928,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustix" @@ -2915,7 +2938,7 @@ version = "0.38.37" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "errno", "libc", "linux-raw-sys", @@ -2924,9 +2947,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.15" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80af6f9131f277a45a3fba6ce8e2258037bb0477a67e610d3c1fe046ab31de47" +checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" [[package]] name = "rusty-fork" @@ -2942,9 +2965,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "same-file" @@ -2965,7 +2988,7 @@ checksum = "088c5d71572124929ea7549a8ce98e1a6fd33d0a38367b09027b382e67c033db" name = "scm-bisect" version = "0.3.0" dependencies = [ - "indexmap 2.2.6", + "indexmap 2.6.0", "insta", "itertools 0.13.0", "maplit", @@ -2980,7 +3003,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adfb2974d3500342f111c2642357b8eda61977b8d4f2994274aa07a0ad834069" dependencies = [ - "clap 4.5.9", + "clap 4.5.20", "diffy", "scm-record", "sha1", @@ -3014,31 +3037,32 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "serde" -version = "1.0.204" +version = "1.0.213" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12" +checksum = "3ea7893ff5e2466df8d720bb615088341b295f849602c6956047f8f80f0e9bc1" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.204" +version = "1.0.213" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" +checksum = "7e85ad2009c50b58e87caa8cd6dac16bdf511bbfb7af6c33df902396aa480fa5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.85", ] [[package]] name = "serde_json" -version = "1.0.120" +version = "1.0.132" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e0d21c9a8cae1235ad58a00c11cb40d4b1e5c784f1ef2c537876ed6ffd8b7c5" +checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" dependencies = [ "itoa", + "memchr", "ryu", "serde", ] @@ -3145,9 +3169,9 @@ dependencies = [ [[package]] name = "signal-hook-mio" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29ad2e15f37ec9a6cc544097b78a1ec90001e9f71b81338ca39f430adaca99af" +checksum = "34db1a06d485c9142248b7a054f034b349b212551f3dfd19c94d45a754a217cd" dependencies = [ "libc", "mio", @@ -3156,18 +3180,18 @@ dependencies = [ [[package]] name = "signal-hook-registry" -version = "1.4.1" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" dependencies = [ "libc", ] [[package]] name = "similar" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa42c91313f1d05da9b26f267f931cf178d4aba455b4c4622dd7355eb80c6640" +checksum = "1de1d4f81173b03af4c0cbed3c898f6bff5b870e4a7f5d6f4057d62a7a4b686e" [[package]] name = "siphasher" @@ -3236,12 +3260,12 @@ checksum = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c" [[package]] name = "stability" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ff9eaf853dec4c8802325d8b6d3dffa86cc707fd7a1a4cdbf416e13b061787a" +checksum = "d904e7009df136af5297832a3ace3370cd14ff1546a232f4f185036c2736fcac" dependencies = [ "quote", - "syn 2.0.58", + "syn 2.0.85", ] [[package]] @@ -3264,7 +3288,7 @@ checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" dependencies = [ "new_debug_unreachable", "once_cell", - "parking_lot 0.12.1", + "parking_lot 0.12.3", "phf_shared", "precomputed-hash", ] @@ -3283,9 +3307,9 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "strum" -version = "0.26.2" +version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d8cec3501a5194c432b2b7976db6b7d10ec95c253208b45f83f7136aa985e29" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" dependencies = [ "strum_macros", ] @@ -3300,7 +3324,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.58", + "syn 2.0.85", ] [[package]] @@ -3316,9 +3340,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.58" +version = "2.0.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44cfb93f38070beee36b3fef7d4f5a16f27751d94b187b666a5cc5e9b0d30687" +checksum = "5023162dfcd14ef8f32034d8bcd4cc5ddc61ef7a247c024a33e24e1f24d21b56" dependencies = [ "proc-macro2", "quote", @@ -3396,22 +3420,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.64" +version = "1.0.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" +checksum = "5d11abd9594d9b38965ef50805c5e469ca9cc6f197f883f717e0269a3057b3d5" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.64" +version = "1.0.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" +checksum = "ae71770322cbd277e69d762a16c444af02aa0575ac0d174f0b9562d3b37f8602" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.85", ] [[package]] @@ -3487,9 +3511,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.6.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" dependencies = [ "tinyvec_macros", ] @@ -3519,7 +3543,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.85", ] [[package]] @@ -3622,15 +3646,15 @@ checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" [[package]] name = "unicode-bidi" -version = "0.3.15" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" +checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893" [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" [[package]] name = "unicode-linebreak" @@ -3640,26 +3664,27 @@ checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f" [[package]] name = "unicode-normalization" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" dependencies = [ "tinyvec", ] [[package]] name = "unicode-segmentation" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" [[package]] name = "unicode-truncate" -version = "1.0.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5fbabedabe362c618c714dbefda9927b5afc8e2a8102f47f081089a9019226" +checksum = "b3644627a5af5fa321c95b9b235a72fd24cd29c648c2c379431e6628655627bf" dependencies = [ - "itertools 0.12.1", + "itertools 0.13.0", + "unicode-segmentation", "unicode-width 0.1.14", ] @@ -3677,15 +3702,15 @@ checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" [[package]] name = "unicode-xid" -version = "0.2.4" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "url" -version = "2.5.0" +version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" dependencies = [ "form_urlencoded", "idna", @@ -3694,9 +3719,9 @@ dependencies = [ [[package]] name = "utf8parse" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "valuable" @@ -3712,9 +3737,9 @@ checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "vt100" @@ -3741,9 +3766,9 @@ dependencies = [ [[package]] name = "vte_generate_state_changes" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d257817081c7dffcdbab24b9e62d2def62e2ff7d00b1c20062551e6cccc145ff" +checksum = "2e369bee1b05d510a7b4ed645f5faa90619e05437111783ea5848f28d97d3c2e" dependencies = [ "proc-macro2", "quote", @@ -3782,34 +3807,35 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" dependencies = [ "cfg-if", + "once_cell", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.85", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3817,28 +3843,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.85", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" +checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" [[package]] name = "web-sys" -version = "0.3.69" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" +checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" dependencies = [ "js-sys", "wasm-bindgen", @@ -3862,11 +3888,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.6" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "winapi", + "windows-sys 0.59.0", ] [[package]] @@ -4115,20 +4141,21 @@ checksum = "a67300977d3dc3f8034dae89778f502b6ba20b269527b3223ba59c0cf393bb8a" [[package]] name = "zerocopy" -version = "0.7.32" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ + "byteorder", "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.32" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.85", ] From cf800e5d466ff55671a7baeb7d47663e8fe9b272 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Oct 2024 18:59:18 +0000 Subject: [PATCH 013/146] build: bump serde from 1.0.213 to 1.0.214 Bumps [serde](https://github.com/serde-rs/serde) from 1.0.213 to 1.0.214. - [Release notes](https://github.com/serde-rs/serde/releases) - [Commits](https://github.com/serde-rs/serde/compare/v1.0.213...v1.0.214) --- updated-dependencies: - dependency-name: serde dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 8 ++++---- Cargo.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4026016f9..01604fbcb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3037,18 +3037,18 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "serde" -version = "1.0.213" +version = "1.0.214" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ea7893ff5e2466df8d720bb615088341b295f849602c6956047f8f80f0e9bc1" +checksum = "f55c3193aca71c12ad7890f1785d2b73e1b9f63a0bbc353c08ef26fe03fc56b5" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.213" +version = "1.0.214" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e85ad2009c50b58e87caa8cd6dac16bdf511bbfb7af6c33df902396aa480fa5" +checksum = "de523f781f095e28fa605cdce0f8307e451cc0fd14e2eb4cd2e98a355b147766" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 167c056b4..3f58b0745 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -89,7 +89,7 @@ rusqlite = { version = "0.29.0", features = ["bundled"] } scm-bisect = { version = "0.3.0", path = "scm-bisect" } scm-diff-editor = "0.4.0" scm-record = "0.4.0" -serde = { version = "1.0.204", features = ["derive"] } +serde = { version = "1.0.214", features = ["derive"] } serde_json = "1.0.120" shell-words = "1.1.0" skim = "0.10.4" From f8052bbc4963a140080119341e06ab520dece339 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Oct 2024 18:59:38 +0000 Subject: [PATCH 014/146] build: bump insta from 1.40.0 to 1.41.0 Bumps [insta](https://github.com/mitsuhiko/insta) from 1.40.0 to 1.41.0. - [Release notes](https://github.com/mitsuhiko/insta/releases) - [Changelog](https://github.com/mitsuhiko/insta/blob/master/CHANGELOG.md) - [Commits](https://github.com/mitsuhiko/insta/compare/1.40.0...1.41.0) --- updated-dependencies: - dependency-name: insta dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 01604fbcb..3907a272f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1947,9 +1947,9 @@ dependencies = [ [[package]] name = "insta" -version = "1.40.0" +version = "1.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6593a41c7a73841868772495db7dc1e8ecab43bb5c0b6da2059246c4b506ab60" +checksum = "a1f72d3e19488cf7d8ea52d2fc0f8754fc933398b337cd3cbdb28aaeb35159ef" dependencies = [ "console", "lazy_static", diff --git a/Cargo.toml b/Cargo.toml index 3f58b0745..7ed46a500 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -106,5 +106,5 @@ vt100 = "0.15.2" assert_cmd = "2.0.16" cc = "1.1.28" criterion = { version = "0.5.1", features = ["html_reports"] } -insta = "1.39.0" +insta = "1.41.0" maplit = "1.0.2" From 5a1994968674b27075f65a22475f3496e86cf92e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Nov 2024 19:00:09 +0000 Subject: [PATCH 015/146] build: bump anyhow from 1.0.91 to 1.0.92 Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.91 to 1.0.92. - [Release notes](https://github.com/dtolnay/anyhow/releases) - [Commits](https://github.com/dtolnay/anyhow/compare/1.0.91...1.0.92) --- updated-dependencies: - dependency-name: anyhow dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3907a272f..4c7dd6ee3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -126,9 +126,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.91" +version = "1.0.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c042108f3ed77fd83760a5fd79b53be043192bb3b9dba91d8c574c0ada7850c8" +checksum = "74f37166d7d48a0284b99dd824694c26119c700b53bf0d1540cdb147dbdaaf13" [[package]] name = "arrayvec" diff --git a/Cargo.toml b/Cargo.toml index 7ed46a500..e06194022 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -32,7 +32,7 @@ push = false tag = false [workspace.dependencies] -anyhow = "1.0.90" +anyhow = "1.0.92" async-trait = "0.1.83" bstr = "1.10.0" bugreport = "0.5.0" From bb477ab6c42fe822eed3ef1f7c40ec51dd864439 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Nov 2024 19:00:23 +0000 Subject: [PATCH 016/146] build: bump insta from 1.41.0 to 1.41.1 Bumps [insta](https://github.com/mitsuhiko/insta) from 1.41.0 to 1.41.1. - [Release notes](https://github.com/mitsuhiko/insta/releases) - [Changelog](https://github.com/mitsuhiko/insta/blob/master/CHANGELOG.md) - [Commits](https://github.com/mitsuhiko/insta/compare/1.41.0...1.41.1) --- updated-dependencies: - dependency-name: insta dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4c7dd6ee3..66db63c39 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1947,9 +1947,9 @@ dependencies = [ [[package]] name = "insta" -version = "1.41.0" +version = "1.41.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f72d3e19488cf7d8ea52d2fc0f8754fc933398b337cd3cbdb28aaeb35159ef" +checksum = "7e9ffc4d4892617c50a928c52b2961cb5174b6fc6ebf252b2fac9d21955c48b8" dependencies = [ "console", "lazy_static", diff --git a/Cargo.toml b/Cargo.toml index e06194022..d77a177c3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -106,5 +106,5 @@ vt100 = "0.15.2" assert_cmd = "2.0.16" cc = "1.1.28" criterion = { version = "0.5.1", features = ["html_reports"] } -insta = "1.41.0" +insta = "1.41.1" maplit = "1.0.2" From 2cd629f6f29cfc5be1894a5ec7cead46a64fe9d1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Nov 2024 19:00:36 +0000 Subject: [PATCH 017/146] build: bump thiserror from 1.0.65 to 1.0.68 Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.65 to 1.0.68. - [Release notes](https://github.com/dtolnay/thiserror/releases) - [Commits](https://github.com/dtolnay/thiserror/compare/1.0.65...1.0.68) --- updated-dependencies: - dependency-name: thiserror dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 44 ++++++++++++++++++++++---------------------- Cargo.toml | 2 +- 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 66db63c39..b1248dd31 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -169,7 +169,7 @@ checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -444,7 +444,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -812,7 +812,7 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -834,7 +834,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core 0.20.10", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -989,7 +989,7 @@ checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -1010,7 +1010,7 @@ dependencies = [ "darling 0.20.10", "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -1321,7 +1321,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -1759,7 +1759,7 @@ checksum = "53010ccb100b96a67bc32c0175f0ed1426b31b655d562898e57325f81c023ac0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -3052,7 +3052,7 @@ checksum = "de523f781f095e28fa605cdce0f8307e451cc0fd14e2eb4cd2e98a355b147766" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -3265,7 +3265,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d904e7009df136af5297832a3ace3370cd14ff1546a232f4f185036c2736fcac" dependencies = [ "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -3324,7 +3324,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -3340,9 +3340,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.85" +version = "2.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5023162dfcd14ef8f32034d8bcd4cc5ddc61ef7a247c024a33e24e1f24d21b56" +checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" dependencies = [ "proc-macro2", "quote", @@ -3420,22 +3420,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.65" +version = "1.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d11abd9594d9b38965ef50805c5e469ca9cc6f197f883f717e0269a3057b3d5" +checksum = "02dd99dc800bbb97186339685293e1cc5d9df1f8fae2d0aecd9ff1c77efea892" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.65" +version = "1.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae71770322cbd277e69d762a16c444af02aa0575ac0d174f0b9562d3b37f8602" +checksum = "a7c61ec9a6f64d2793d8a45faba21efbe3ced62a886d44c36a009b2b519b4c7e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -3543,7 +3543,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] [[package]] @@ -3827,7 +3827,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", "wasm-bindgen-shared", ] @@ -3849,7 +3849,7 @@ checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -4157,5 +4157,5 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.87", ] diff --git a/Cargo.toml b/Cargo.toml index d77a177c3..45bedf078 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -95,7 +95,7 @@ shell-words = "1.1.0" skim = "0.10.4" tempfile = "3.13.0" textwrap = "0.16.1" -thiserror = "1.0.64" +thiserror = "1.0.68" tracing = "0.1.40" tracing-chrome = "0.6.0" tracing-error = "0.2.0" From c6c12e5a78d8c232d49873eedb5d53ba02a952b9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Nov 2024 19:01:08 +0000 Subject: [PATCH 018/146] build: bump cc from 1.1.31 to 1.1.34 Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.1.31 to 1.1.34. - [Release notes](https://github.com/rust-lang/cc-rs/releases) - [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md) - [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.1.31...cc-v1.1.34) --- updated-dependencies: - dependency-name: cc dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b1248dd31..6530fe1af 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -312,9 +312,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.31" +version = "1.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2e7962b54006dcfcc61cb72735f4d89bb97061dd6a7ed882ec6b8ee53714c6f" +checksum = "67b9470d453346108f93a59222a9a1a5724db32d0a4727b7ab7ace4b4d822dc9" dependencies = [ "jobserver", "libc", diff --git a/Cargo.toml b/Cargo.toml index 45bedf078..f0b1b0202 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -104,7 +104,7 @@ vt100 = "0.15.2" # dev-dependencies assert_cmd = "2.0.16" -cc = "1.1.28" +cc = "1.1.34" criterion = { version = "0.5.1", features = ["html_reports"] } insta = "1.41.1" maplit = "1.0.2" From 00a87d5a817cd09c5dea5c95f168ff2c13db41dc Mon Sep 17 00:00:00 2001 From: Dennis Kobert Date: Fri, 8 Nov 2024 15:45:40 +0100 Subject: [PATCH 019/146] Skip headers in status output --- git-branchless-lib/src/git/repo.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/git-branchless-lib/src/git/repo.rs b/git-branchless-lib/src/git/repo.rs index d2bee7c43..8a6deafab 100644 --- a/git-branchless-lib/src/git/repo.rs +++ b/git-branchless-lib/src/git/repo.rs @@ -1028,6 +1028,8 @@ impl Repo { line.extend(status_bytes.by_ref().take_while(not_null_terminator)); line } + // Skip header lines + b'#' => continue, _ => { return Err(Error::UnknownStatusLinePrefix { prefix: *line_prefix, From 6a2473a260fc0b1ff0bd8cd1d7bef77e8cb3bff8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Nov 2024 18:45:56 +0000 Subject: [PATCH 020/146] build: bump anyhow from 1.0.92 to 1.0.93 Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.92 to 1.0.93. - [Release notes](https://github.com/dtolnay/anyhow/releases) - [Commits](https://github.com/dtolnay/anyhow/compare/1.0.92...1.0.93) --- updated-dependencies: - dependency-name: anyhow dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6530fe1af..aa6c4bbb4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -126,9 +126,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.92" +version = "1.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74f37166d7d48a0284b99dd824694c26119c700b53bf0d1540cdb147dbdaaf13" +checksum = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775" [[package]] name = "arrayvec" diff --git a/Cargo.toml b/Cargo.toml index f0b1b0202..866a24558 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -32,7 +32,7 @@ push = false tag = false [workspace.dependencies] -anyhow = "1.0.92" +anyhow = "1.0.93" async-trait = "0.1.83" bstr = "1.10.0" bugreport = "0.5.0" From 76e0cf3309013ca570a3e54d7a746e3b353936a3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Nov 2024 18:46:20 +0000 Subject: [PATCH 021/146] build: bump cc from 1.1.34 to 1.1.37 Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.1.34 to 1.1.37. - [Release notes](https://github.com/rust-lang/cc-rs/releases) - [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md) - [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.1.34...cc-v1.1.37) --- updated-dependencies: - dependency-name: cc dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index aa6c4bbb4..825b8ee4d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -312,9 +312,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.34" +version = "1.1.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b9470d453346108f93a59222a9a1a5724db32d0a4727b7ab7ace4b4d822dc9" +checksum = "40545c26d092346d8a8dab71ee48e7685a7a9cba76e634790c215b41a4a7b4cf" dependencies = [ "jobserver", "libc", diff --git a/Cargo.toml b/Cargo.toml index 866a24558..10776dac5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -104,7 +104,7 @@ vt100 = "0.15.2" # dev-dependencies assert_cmd = "2.0.16" -cc = "1.1.34" +cc = "1.1.37" criterion = { version = "0.5.1", features = ["html_reports"] } insta = "1.41.1" maplit = "1.0.2" From cb7d879d5c2c5f76d7d3814235c85260ba260278 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Nov 2024 18:46:33 +0000 Subject: [PATCH 022/146] build: bump thiserror from 1.0.68 to 2.0.3 Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.68 to 2.0.3. - [Release notes](https://github.com/dtolnay/thiserror/releases) - [Commits](https://github.com/dtolnay/thiserror/compare/1.0.68...2.0.3) --- updated-dependencies: - dependency-name: thiserror dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- Cargo.lock | 52 ++++++++++++++++++++++++++++++------------- Cargo.toml | 2 +- scm-bisect/Cargo.toml | 2 +- 3 files changed, 38 insertions(+), 18 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 825b8ee4d..3307cf84b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1077,7 +1077,7 @@ dependencies = [ "rand 0.8.5", "serde", "tempfile", - "thiserror", + "thiserror 1.0.69", "tracing", ] @@ -1208,7 +1208,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7199d965852c3bac31f779ef99cbb4537f80e952e2d6aa0ffeb30cce00f4f46e" dependencies = [ "libc", - "thiserror", + "thiserror 1.0.69", "winapi", ] @@ -1439,7 +1439,7 @@ dependencies = [ "regex", "rusqlite", "scm-diff-editor", - "thiserror", + "thiserror 2.0.3", "tracing", "tracing-chrome", "tracing-error", @@ -1528,7 +1528,7 @@ dependencies = [ "shell-words", "tempfile", "textwrap", - "thiserror", + "thiserror 2.0.3", "tracing", "tracing-chrome", "tracing-error", @@ -1633,7 +1633,7 @@ dependencies = [ "rayon", "regex", "serde_json", - "thiserror", + "thiserror 2.0.3", "tracing", ] @@ -1692,7 +1692,7 @@ dependencies = [ "serde", "serde_json", "tempfile", - "thiserror", + "thiserror 2.0.3", "tracing", ] @@ -1723,7 +1723,7 @@ dependencies = [ "serde", "serde_json", "tempfile", - "thiserror", + "thiserror 2.0.3", "tracing", ] @@ -2853,7 +2853,7 @@ checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ "getrandom 0.2.15", "libredox", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -2993,7 +2993,7 @@ dependencies = [ "itertools 0.13.0", "maplit", "proptest", - "thiserror", + "thiserror 2.0.3", "tracing", ] @@ -3007,7 +3007,7 @@ dependencies = [ "diffy", "scm-record", "sha1", - "thiserror", + "thiserror 1.0.69", "tracing", "walkdir", ] @@ -3024,7 +3024,7 @@ dependencies = [ "ratatui", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "tracing", "unicode-width 0.1.14", ] @@ -3420,18 +3420,38 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.68" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02dd99dc800bbb97186339685293e1cc5d9df1f8fae2d0aecd9ff1c77efea892" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ - "thiserror-impl", + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c006c85c7651b3cf2ada4584faa36773bd07bac24acfb39f3c431b36d7e667aa" +dependencies = [ + "thiserror-impl 2.0.3", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", ] [[package]] name = "thiserror-impl" -version = "1.0.68" +version = "2.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7c61ec9a6f64d2793d8a45faba21efbe3ced62a886d44c36a009b2b519b4c7e" +checksum = "f077553d607adc1caf65430528a576c757a71ed73944b66ebb58ef2bbd243568" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 10776dac5..925d7267f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -95,7 +95,7 @@ shell-words = "1.1.0" skim = "0.10.4" tempfile = "3.13.0" textwrap = "0.16.1" -thiserror = "1.0.68" +thiserror = "2.0.3" tracing = "0.1.40" tracing-chrome = "0.6.0" tracing-error = "0.2.0" diff --git a/scm-bisect/Cargo.toml b/scm-bisect/Cargo.toml index 112efb4e4..4ddda2ece 100644 --- a/scm-bisect/Cargo.toml +++ b/scm-bisect/Cargo.toml @@ -11,7 +11,7 @@ version = "0.3.0" [dependencies] indexmap = "2" itertools = "0.13" -thiserror = "1" +thiserror = "2" tracing = "0.1" [dev-dependencies] From def68e33dcd05fc3fe7e815195fb254141fc440e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Nov 2024 18:56:48 +0000 Subject: [PATCH 023/146] build: bump tempfile from 3.13.0 to 3.14.0 Bumps [tempfile](https://github.com/Stebalien/tempfile) from 3.13.0 to 3.14.0. - [Changelog](https://github.com/Stebalien/tempfile/blob/master/CHANGELOG.md) - [Commits](https://github.com/Stebalien/tempfile/compare/v3.13.0...v3.14.0) --- updated-dependencies: - dependency-name: tempfile dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Cargo.lock | 8 ++++---- Cargo.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3307cf84b..9d3b3e8cd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2934,9 +2934,9 @@ checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustix" -version = "0.38.37" +version = "0.38.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" +checksum = "99e4ea3e1cdc4b559b8e5650f9c8e5998e3e5c1343b4eaf034565f32318d63c0" dependencies = [ "bitflags 2.6.0", "errno", @@ -3361,9 +3361,9 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.13.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" +checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" dependencies = [ "cfg-if", "fastrand", diff --git a/Cargo.toml b/Cargo.toml index 925d7267f..fb7e2d99b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -93,7 +93,7 @@ serde = { version = "1.0.214", features = ["derive"] } serde_json = "1.0.120" shell-words = "1.1.0" skim = "0.10.4" -tempfile = "3.13.0" +tempfile = "3.14.0" textwrap = "0.16.1" thiserror = "2.0.3" tracing = "0.1.40" From 7e8853e24b6e278bcf5dba7f38a7df7c5e010464 Mon Sep 17 00:00:00 2001 From: Waleed Khan Date: Tue, 12 Nov 2024 11:41:51 -0800 Subject: [PATCH 024/146] docs: update `README.md` --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3514fda87..23878b7ee 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@

git-branchless logo

Branchless workflow for Git

-

(This suite of tools is 100% compatible with branches. If you think this is confusing, you can discuss a new name here.)

+

(This suite of tools is 100% compatible with branches. For more discussion, see this thread.)


From 1de8928b3bdf51ed5bb955ad6c4457c9b884f45c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Nov 2024 18:04:08 +0000 Subject: [PATCH 025/146] build: bump bstr from 1.10.0 to 1.11.0 Bumps [bstr](https://github.com/BurntSushi/bstr) from 1.10.0 to 1.11.0. - [Commits](https://github.com/BurntSushi/bstr/compare/1.10.0...1.11.0) --- updated-dependencies: - dependency-name: bstr dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9d3b3e8cd..85c39607f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -248,9 +248,9 @@ dependencies = [ [[package]] name = "bstr" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c" +checksum = "1a68f1f47cdf0ec8ee4b941b2eee2a80cb796db73118c0dd09ac63fbe405be22" dependencies = [ "memchr", "regex-automata 0.4.8", diff --git a/Cargo.toml b/Cargo.toml index fb7e2d99b..0d8447778 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -34,7 +34,7 @@ tag = false [workspace.dependencies] anyhow = "1.0.93" async-trait = "0.1.83" -bstr = "1.10.0" +bstr = "1.11.0" bugreport = "0.5.0" chashmap = "2.2.2" chrono = "0.4.34" From e555b7be77d249a4013ddaea892f2c7659e3fff5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Nov 2024 18:04:26 +0000 Subject: [PATCH 026/146] build: bump indicatif from 0.17.8 to 0.17.9 Bumps [indicatif](https://github.com/console-rs/indicatif) from 0.17.8 to 0.17.9. - [Release notes](https://github.com/console-rs/indicatif/releases) - [Commits](https://github.com/console-rs/indicatif/compare/0.17.8...0.17.9) --- updated-dependencies: - dependency-name: indicatif dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 27 ++++++++++++++------------- Cargo.toml | 2 +- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 85c39607f..bdb4ef6e1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1933,16 +1933,16 @@ dependencies = [ [[package]] name = "indicatif" -version = "0.17.8" +version = "0.17.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3" +checksum = "cbf675b85ed934d3c67b5c5469701eec7db22689d0a2139d856e0925fa28b281" dependencies = [ "console", - "instant", "number_prefix", "portable-atomic", "unicode-segmentation", - "unicode-width 0.1.14", + "unicode-width 0.2.0", + "web-time", ] [[package]] @@ -1957,15 +1957,6 @@ dependencies = [ "similar", ] -[[package]] -name = "instant" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" -dependencies = [ - "cfg-if", -] - [[package]] name = "ioctl-rs" version = "0.1.6" @@ -3890,6 +3881,16 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + [[package]] name = "winapi" version = "0.3.9" diff --git a/Cargo.toml b/Cargo.toml index 0d8447778..f1f9e4eb0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -72,7 +72,7 @@ git-branchless-undo = { version = "0.10.0", path = "git-branchless-undo" } git2 = { version = "0.19.0", default-features = false } glob = "0.3.0" indexmap = "2.2.6" -indicatif = { version = "0.17.8", features = ["improved_unicode"] } +indicatif = { version = "0.17.9", features = ["improved_unicode"] } itertools = "0.13.0" lalrpop = "0.19.12" lalrpop-util = "0.19.12" From 9a5d414dafd52ae4a5a5f241d5487a34b24fbc51 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Nov 2024 18:04:43 +0000 Subject: [PATCH 027/146] build: bump serde from 1.0.214 to 1.0.215 Bumps [serde](https://github.com/serde-rs/serde) from 1.0.214 to 1.0.215. - [Release notes](https://github.com/serde-rs/serde/releases) - [Commits](https://github.com/serde-rs/serde/compare/v1.0.214...v1.0.215) --- updated-dependencies: - dependency-name: serde dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 8 ++++---- Cargo.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index bdb4ef6e1..1eefc297e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3028,18 +3028,18 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "serde" -version = "1.0.214" +version = "1.0.215" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f55c3193aca71c12ad7890f1785d2b73e1b9f63a0bbc353c08ef26fe03fc56b5" +checksum = "6513c1ad0b11a9376da888e3e0baa0077f1aed55c17f50e7b2397136129fb88f" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.214" +version = "1.0.215" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de523f781f095e28fa605cdce0f8307e451cc0fd14e2eb4cd2e98a355b147766" +checksum = "ad1e866f866923f252f05c889987993144fb74e722403468a4ebd70c3cd756c0" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index f1f9e4eb0..9106a14b9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -89,7 +89,7 @@ rusqlite = { version = "0.29.0", features = ["bundled"] } scm-bisect = { version = "0.3.0", path = "scm-bisect" } scm-diff-editor = "0.4.0" scm-record = "0.4.0" -serde = { version = "1.0.214", features = ["derive"] } +serde = { version = "1.0.215", features = ["derive"] } serde_json = "1.0.120" shell-words = "1.1.0" skim = "0.10.4" From 52d41f20a4bcecbcb0e1a05b67dc3bdb7e2803f3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Nov 2024 19:22:09 +0000 Subject: [PATCH 028/146] build: bump cc from 1.1.37 to 1.2.1 Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.1.37 to 1.2.1. - [Release notes](https://github.com/rust-lang/cc-rs/releases) - [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md) - [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.1.37...cc-v1.2.1) --- updated-dependencies: - dependency-name: cc dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1eefc297e..18979f5f8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -312,9 +312,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.37" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40545c26d092346d8a8dab71ee48e7685a7a9cba76e634790c215b41a4a7b4cf" +checksum = "fd9de9f2205d5ef3fd67e685b0df337994ddd4495e2a28d185500d0e1edfea47" dependencies = [ "jobserver", "libc", diff --git a/Cargo.toml b/Cargo.toml index 9106a14b9..9714b187c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -104,7 +104,7 @@ vt100 = "0.15.2" # dev-dependencies assert_cmd = "2.0.16" -cc = "1.1.37" +cc = "1.2.1" criterion = { version = "0.5.1", features = ["html_reports"] } insta = "1.41.1" maplit = "1.0.2" From 2be0fd031979e37dfdf8870a3058f1802af4f7b1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Nov 2024 19:22:13 +0000 Subject: [PATCH 029/146] build: bump serde_json from 1.0.132 to 1.0.133 Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.132 to 1.0.133. - [Release notes](https://github.com/serde-rs/json/releases) - [Commits](https://github.com/serde-rs/json/compare/v1.0.132...v1.0.133) --- updated-dependencies: - dependency-name: serde_json dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 18979f5f8..0f1e75b9c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3048,9 +3048,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.132" +version = "1.0.133" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" +checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" dependencies = [ "itoa", "memchr", diff --git a/Cargo.toml b/Cargo.toml index 9714b187c..73ed4a767 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -90,7 +90,7 @@ scm-bisect = { version = "0.3.0", path = "scm-bisect" } scm-diff-editor = "0.4.0" scm-record = "0.4.0" serde = { version = "1.0.215", features = ["derive"] } -serde_json = "1.0.120" +serde_json = "1.0.133" shell-words = "1.1.0" skim = "0.10.4" tempfile = "3.14.0" From b5a6bfd89067040ffc483d32c2474ed57c50a262 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 25 Nov 2024 18:53:41 +0000 Subject: [PATCH 030/146] build: bump clap from 4.5.20 to 4.5.21 Bumps [clap](https://github.com/clap-rs/clap) from 4.5.20 to 4.5.21. - [Release notes](https://github.com/clap-rs/clap/releases) - [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md) - [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.5.20...clap_complete-v4.5.21) --- updated-dependencies: - dependency-name: clap dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 22 +++++++++++----------- Cargo.toml | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0f1e75b9c..14edb5f9c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -415,9 +415,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.20" +version = "4.5.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97f376d85a664d5837dbae44bf546e6477a679ff6610010f17276f686d867e8" +checksum = "fb3b4b9e5a7c7514dfa52869339ee98b3156b0bfb4e8a77c4ff4babb64b1604f" dependencies = [ "clap_builder", "clap_derive", @@ -425,9 +425,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.20" +version = "4.5.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19bc80abd44e4bed93ca373a0704ccbd1b710dc5749406201bb018272808dc54" +checksum = "b17a95aa67cc7b5ebd32aa5370189aa0d79069ef1c64ce893bd30fb24bff20ec" dependencies = [ "anstream", "anstyle", @@ -468,7 +468,7 @@ version = "0.2.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fbae9cbfdc5d4fa8711c09bd7b83f644cb48281ac35bf97af3e47b0675864bdf" dependencies = [ - "clap 4.5.20", + "clap 4.5.21", "roff 0.2.2", ] @@ -575,7 +575,7 @@ dependencies = [ "anes", "cast", "ciborium", - "clap 4.5.20", + "clap 4.5.21", "criterion-plot", "is-terminal", "itertools 0.10.5", @@ -1481,7 +1481,7 @@ dependencies = [ name = "git-branchless-invoke" version = "0.10.0" dependencies = [ - "clap 4.5.20", + "clap 4.5.21", "color-eyre", "cursive_core", "eyre", @@ -1570,7 +1570,7 @@ dependencies = [ name = "git-branchless-opts" version = "0.10.0" dependencies = [ - "clap 4.5.20", + "clap 4.5.21", "clap_mangen", "git-branchless-lib", "itertools 0.13.0", @@ -1674,7 +1674,7 @@ dependencies = [ name = "git-branchless-submit" version = "0.10.0" dependencies = [ - "clap 4.5.20", + "clap 4.5.21", "cursive_core", "esl01-dag", "eyre", @@ -1702,7 +1702,7 @@ version = "0.10.0" dependencies = [ "assert_cmd", "bstr", - "clap 4.5.20", + "clap 4.5.21", "crossbeam", "cursive", "esl01-dag", @@ -2994,7 +2994,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adfb2974d3500342f111c2642357b8eda61977b8d4f2994274aa07a0ad834069" dependencies = [ - "clap 4.5.20", + "clap 4.5.21", "diffy", "scm-record", "sha1", diff --git a/Cargo.toml b/Cargo.toml index 73ed4a767..a7b04dd95 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -40,7 +40,7 @@ chashmap = "2.2.2" chrono = "0.4.34" chrono-english = "0.1.7" chronoutil = "0.2.7" -clap = "4.5.9" +clap = "4.5.21" clap_mangen = "0.2.22" color-eyre = "0.6.3" concolor = { version = "0.1.1", features = ["auto"] } From b3303a34d9ac96d80a1e1a6538c751b7b9f3be50 Mon Sep 17 00:00:00 2001 From: Waleed Khan Date: Mon, 2 Dec 2024 12:02:23 -0800 Subject: [PATCH 031/146] cleanup: fix latest nightly lint warnings --- git-branchless-lib/src/core/effects.rs | 2 +- git-branchless-lib/src/core/node_descriptors.rs | 10 +++++----- git-branchless-lib/src/core/rewrite/evolve.rs | 6 +----- git-branchless-lib/src/core/task.rs | 4 ++-- git-branchless-lib/src/git/object.rs | 2 +- git-branchless-lib/src/git/repo.rs | 2 +- git-branchless-test/src/lib.rs | 2 +- scm-bisect/src/search.rs | 4 ++-- 8 files changed, 14 insertions(+), 18 deletions(-) diff --git a/git-branchless-lib/src/core/effects.rs b/git-branchless-lib/src/core/effects.rs index 7f3c0a74b..24e9bee46 100644 --- a/git-branchless-lib/src/core/effects.rs +++ b/git-branchless-lib/src/core/effects.rs @@ -1000,7 +1000,7 @@ impl Drop for ProgressHandle<'_> { } } -impl<'a> ProgressHandle<'a> { +impl ProgressHandle<'_> { /// Notify the progress meter that the current operation has `total` /// discrete units of work, and it's currently `current` units of the way /// through the operation. diff --git a/git-branchless-lib/src/core/node_descriptors.rs b/git-branchless-lib/src/core/node_descriptors.rs index 3c4cb9762..bc3b083ff 100644 --- a/git-branchless-lib/src/core/node_descriptors.rs +++ b/git-branchless-lib/src/core/node_descriptors.rs @@ -44,7 +44,7 @@ pub enum NodeObject<'repo> { }, } -impl<'repo> NodeObject<'repo> { +impl NodeObject<'_> { fn get_oid(&self) -> NonZeroOid { match self { NodeObject::Commit { commit } => commit.get_oid(), @@ -214,7 +214,7 @@ impl<'a> CommitMessageDescriptor<'a> { } } -impl<'a> NodeDescriptor for CommitMessageDescriptor<'a> { +impl NodeDescriptor for CommitMessageDescriptor<'_> { #[instrument] fn describe_node( &mut self, @@ -249,7 +249,7 @@ impl<'a> ObsolescenceExplanationDescriptor<'a> { } } -impl<'a> NodeDescriptor for ObsolescenceExplanationDescriptor<'a> { +impl NodeDescriptor for ObsolescenceExplanationDescriptor<'_> { fn describe_node( &mut self, _glyphs: &Glyphs, @@ -317,7 +317,7 @@ impl<'a> BranchesDescriptor<'a> { } } -impl<'a> NodeDescriptor for BranchesDescriptor<'a> { +impl NodeDescriptor for BranchesDescriptor<'_> { #[instrument] fn describe_node( &mut self, @@ -412,7 +412,7 @@ $", Some(diff_number.to_owned()) } -impl<'a> NodeDescriptor for DifferentialRevisionDescriptor<'a> { +impl NodeDescriptor for DifferentialRevisionDescriptor<'_> { #[instrument] fn describe_node( &mut self, diff --git a/git-branchless-lib/src/core/rewrite/evolve.rs b/git-branchless-lib/src/core/rewrite/evolve.rs index 446a18105..206bea575 100644 --- a/git-branchless-lib/src/core/rewrite/evolve.rs +++ b/git-branchless-lib/src/core/rewrite/evolve.rs @@ -18,11 +18,7 @@ pub fn find_rewrite_target( event_cursor: EventCursor, oid: NonZeroOid, ) -> Option { - let event = event_replayer.get_cursor_commit_latest_event(event_cursor, oid); - let event = match event { - Some(event) => event, - None => return None, - }; + let event = event_replayer.get_cursor_commit_latest_event(event_cursor, oid)?; match event { Event::RewriteEvent { timestamp: _, diff --git a/git-branchless-lib/src/core/task.rs b/git-branchless-lib/src/core/task.rs index b023ca2fd..1f7a0ce6e 100644 --- a/git-branchless-lib/src/core/task.rs +++ b/git-branchless-lib/src/core/task.rs @@ -86,7 +86,7 @@ pub struct ResourceHandle<'pool, R: Resource> { inner: Option, } -impl<'a, R: Resource> Drop for ResourceHandle<'a, R> { +impl Drop for ResourceHandle<'_, R> { fn drop(&mut self) { let mut resources = self .parent @@ -97,7 +97,7 @@ impl<'a, R: Resource> Drop for ResourceHandle<'a, R> { } } -impl<'a, R: Resource> Deref for ResourceHandle<'a, R> { +impl Deref for ResourceHandle<'_, R> { type Target = R::Output; fn deref(&self) -> &Self::Target { diff --git a/git-branchless-lib/src/git/object.rs b/git-branchless-lib/src/git/object.rs index 8f27949d9..adc0c8092 100644 --- a/git-branchless-lib/src/git/object.rs +++ b/git-branchless-lib/src/git/object.rs @@ -319,7 +319,7 @@ pub struct Blob<'repo> { pub(super) inner: git2::Blob<'repo>, } -impl<'repo> Blob<'repo> { +impl Blob<'_> { /// Get the size of the blob in bytes. pub fn size(&self) -> u64 { self.inner.size().try_into().unwrap() diff --git a/git-branchless-lib/src/git/repo.rs b/git-branchless-lib/src/git/repo.rs index 8a6deafab..9725e1037 100644 --- a/git-branchless-lib/src/git/repo.rs +++ b/git-branchless-lib/src/git/repo.rs @@ -449,7 +449,7 @@ pub enum AmendFastOptions<'repo> { }, } -impl<'repo> AmendFastOptions<'repo> { +impl AmendFastOptions<'_> { /// Returns whether there are any paths to be amended. pub fn is_empty(&self) -> bool { match &self { diff --git a/git-branchless-test/src/lib.rs b/git-branchless-test/src/lib.rs index a86d3d89d..add7cd898 100644 --- a/git-branchless-test/src/lib.rs +++ b/git-branchless-test/src/lib.rs @@ -1164,7 +1164,7 @@ struct SearchGraph<'a> { commit_set: CommitSet, } -impl<'a> BasicSourceControlGraph for SearchGraph<'a> { +impl BasicSourceControlGraph for SearchGraph<'_> { type Node = NonZeroOid; type Error = SearchGraphError; diff --git a/scm-bisect/src/search.rs b/scm-bisect/src/search.rs index d9e32ee60..c37e21aaa 100644 --- a/scm-bisect/src/search.rs +++ b/scm-bisect/src/search.rs @@ -265,7 +265,7 @@ impl Search { &'a self, strategy: &'a S, ) -> Result< - LazySolution>, + LazySolution<'a, G::Node, SearchError>, SearchError, > { let success_bounds = self.success_bounds().map_err(SearchError::Graph)?; @@ -284,7 +284,7 @@ impl Search { states: VecDeque>, } - impl<'a, G: Graph, S: Strategy> Iterator for Iter<'a, G, S> { + impl> Iterator for Iter<'_, G, S> { type Item = Result>; fn next(&mut self) -> Option { From a321abcc228d918d6d4c3fb807606d11d5b5a7ad Mon Sep 17 00:00:00 2001 From: Waleed Khan Date: Mon, 2 Dec 2024 12:33:40 -0800 Subject: [PATCH 032/146] docs(scm-bisect): add doc-comments to `scm_bisect::testing` `cargo clippy` was failing in this CI run: https://github.com/arxanas/git-branchless/actions/runs/12127041277?pr=1460 Actually, I have no idea how it even resulted in this. If I understand correctly, `cfg(test)` shouldn't even be enabled here, so the `testing` module shouldn't even be checked. I was unable to reproduce the issue locally on `1.74.1` and `nightly`. Possibly it's something non-deterministic that depends on the order that crates were compiled, or some other caching issue. Regardless, it seems fine to add the doc-comments, so I've added them and now hope that CI will pass. --- scm-bisect/src/testing.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/scm-bisect/src/testing.rs b/scm-bisect/src/testing.rs index a8b0dafc7..20baeccac 100644 --- a/scm-bisect/src/testing.rs +++ b/scm-bisect/src/testing.rs @@ -1,3 +1,5 @@ +//! Testing utilities. + use std::collections::{HashMap, HashSet}; use std::convert::Infallible; @@ -7,8 +9,12 @@ use proptest::prelude::*; use crate::basic::{BasicSourceControlGraph, BasicStrategyKind}; +/// Graph that represents a "stick" of nodes, represented as increasing +/// integers. The node `n` is the immediate parent of `n + 1`. #[derive(Clone, Debug)] pub struct UsizeGraph { + /// The maximum node value for this graph. Valid nodes are in `0..max` (a + /// half-open [`std::ops::Range`]). pub max: usize, } @@ -27,8 +33,10 @@ impl BasicSourceControlGraph for UsizeGraph { } } +/// Directed acyclic graph with nodes `char` and edges `char -> char`. #[derive(Clone, Debug)] pub struct TestGraph { + /// Mapping from parent to children. pub nodes: HashMap>, } @@ -57,6 +65,7 @@ impl BasicSourceControlGraph for TestGraph { } } +/// Select an arbitrary [`BasicStrategyKind`]. pub fn arb_strategy() -> impl ProptestStrategy { prop_oneof![ Just(BasicStrategyKind::Linear), @@ -65,6 +74,7 @@ pub fn arb_strategy() -> impl ProptestStrategy { ] } +/// Create an arbitrary [`TestGraph`] and an arbitrary set of failing nodes. pub fn arb_test_graph_and_nodes() -> impl ProptestStrategy)> { let nodes = prop::collection::hash_set( prop::sample::select(vec!['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']), From b7de6ae38073b1f1224d5a5d58f11c0272493be9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Dec 2024 20:46:57 +0000 Subject: [PATCH 033/146] build: bump tracing from 0.1.40 to 0.1.41 Bumps [tracing](https://github.com/tokio-rs/tracing) from 0.1.40 to 0.1.41. - [Release notes](https://github.com/tokio-rs/tracing/releases) - [Commits](https://github.com/tokio-rs/tracing/compare/tracing-0.1.40...tracing-0.1.41) --- updated-dependencies: - dependency-name: tracing dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 12 ++++++------ Cargo.toml | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 14edb5f9c..8e6b67b58 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3537,9 +3537,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tracing" -version = "0.1.40" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ "pin-project-lite", "tracing-attributes", @@ -3548,9 +3548,9 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", @@ -3571,9 +3571,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.32" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" dependencies = [ "once_cell", "valuable", diff --git a/Cargo.toml b/Cargo.toml index a7b04dd95..abf738494 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -96,7 +96,7 @@ skim = "0.10.4" tempfile = "3.14.0" textwrap = "0.16.1" thiserror = "2.0.3" -tracing = "0.1.40" +tracing = "0.1.41" tracing-chrome = "0.6.0" tracing-error = "0.2.0" tracing-subscriber = { version = "=0.3.11", features = ["env-filter"] } From 32eadeda2976a87a029a7e12d07d48ea0557e9a0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Dec 2024 20:47:02 +0000 Subject: [PATCH 034/146] build: bump cc from 1.2.1 to 1.2.2 Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.2.1 to 1.2.2. - [Release notes](https://github.com/rust-lang/cc-rs/releases) - [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md) - [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.1...cc-v1.2.2) --- updated-dependencies: - dependency-name: cc dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8e6b67b58..88f2176c1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -312,9 +312,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd9de9f2205d5ef3fd67e685b0df337994ddd4495e2a28d185500d0e1edfea47" +checksum = "f34d93e62b03caf570cccc334cbc6c2fceca82f39211051345108adcba3eebdc" dependencies = [ "jobserver", "libc", diff --git a/Cargo.toml b/Cargo.toml index abf738494..3e10007aa 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -104,7 +104,7 @@ vt100 = "0.15.2" # dev-dependencies assert_cmd = "2.0.16" -cc = "1.2.1" +cc = "1.2.2" criterion = { version = "0.5.1", features = ["html_reports"] } insta = "1.41.1" maplit = "1.0.2" From fe54947e668f3ae4e034b1e19cab7d292ec7a115 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Dec 2024 20:47:06 +0000 Subject: [PATCH 035/146] build: bump indexmap from 2.6.0 to 2.7.0 Bumps [indexmap](https://github.com/indexmap-rs/indexmap) from 2.6.0 to 2.7.0. - [Changelog](https://github.com/indexmap-rs/indexmap/blob/master/RELEASES.md) - [Commits](https://github.com/indexmap-rs/indexmap/compare/2.6.0...2.7.0) --- updated-dependencies: - dependency-name: indexmap dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Cargo.lock | 12 ++++++------ Cargo.toml | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 88f2176c1..597cd01af 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1683,7 +1683,7 @@ dependencies = [ "git-branchless-opts", "git-branchless-revset", "git-branchless-test", - "indexmap 2.6.0", + "indexmap 2.7.0", "insta", "itertools 0.13.0", "lazy_static", @@ -1712,7 +1712,7 @@ dependencies = [ "git-branchless-lib", "git-branchless-opts", "git-branchless-revset", - "indexmap 2.6.0", + "indexmap 2.7.0", "insta", "itertools 0.13.0", "lazy_static", @@ -1923,9 +1923,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.6.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" +checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" dependencies = [ "equivalent", "hashbrown 0.15.0", @@ -2492,7 +2492,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset", - "indexmap 2.6.0", + "indexmap 2.7.0", ] [[package]] @@ -2979,7 +2979,7 @@ checksum = "088c5d71572124929ea7549a8ce98e1a6fd33d0a38367b09027b382e67c033db" name = "scm-bisect" version = "0.3.0" dependencies = [ - "indexmap 2.6.0", + "indexmap 2.7.0", "insta", "itertools 0.13.0", "maplit", diff --git a/Cargo.toml b/Cargo.toml index 3e10007aa..c354dead5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -71,7 +71,7 @@ git-branchless-test = { version = "0.10.0", path = "git-branchless-test" } git-branchless-undo = { version = "0.10.0", path = "git-branchless-undo" } git2 = { version = "0.19.0", default-features = false } glob = "0.3.0" -indexmap = "2.2.6" +indexmap = "2.7.0" indicatif = { version = "0.17.9", features = ["improved_unicode"] } itertools = "0.13.0" lalrpop = "0.19.12" From f1e951a6830d1478cc07d617e5c18edeff16cdc8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Dec 2024 20:56:09 +0000 Subject: [PATCH 036/146] build: bump tracing-error from 0.2.0 to 0.2.1 Bumps [tracing-error](https://github.com/tokio-rs/tracing) from 0.2.0 to 0.2.1. - [Release notes](https://github.com/tokio-rs/tracing/releases) - [Commits](https://github.com/tokio-rs/tracing/compare/tracing-error-0.2.0...tracing-error-0.2.1) --- updated-dependencies: - dependency-name: tracing-error dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 597cd01af..f27e7d0bf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3581,9 +3581,9 @@ dependencies = [ [[package]] name = "tracing-error" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d686ec1c0f384b1277f097b2f279a2ecc11afe8c133c1aabf036a27cb4cd206e" +checksum = "8b1581020d7a273442f5b45074a6a57d5757ad0a47dac0e9f0bd57b81936f3db" dependencies = [ "tracing", "tracing-subscriber", diff --git a/Cargo.toml b/Cargo.toml index c354dead5..23342bf2a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -98,7 +98,7 @@ textwrap = "0.16.1" thiserror = "2.0.3" tracing = "0.1.41" tracing-chrome = "0.6.0" -tracing-error = "0.2.0" +tracing-error = "0.2.1" tracing-subscriber = { version = "=0.3.11", features = ["env-filter"] } vt100 = "0.15.2" From 9a49241ee8bff98147d98b48ad7386746e091ee9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Dec 2024 18:47:46 +0000 Subject: [PATCH 037/146] build: bump clap from 4.5.21 to 4.5.23 Bumps [clap](https://github.com/clap-rs/clap) from 4.5.21 to 4.5.23. - [Release notes](https://github.com/clap-rs/clap/releases) - [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md) - [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.5.21...clap_complete-v4.5.23) --- updated-dependencies: - dependency-name: clap dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 28 ++++++++++++++-------------- Cargo.toml | 2 +- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f27e7d0bf..ecbe8d551 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -415,9 +415,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.21" +version = "4.5.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb3b4b9e5a7c7514dfa52869339ee98b3156b0bfb4e8a77c4ff4babb64b1604f" +checksum = "3135e7ec2ef7b10c6ed8950f0f792ed96ee093fa088608f1c76e569722700c84" dependencies = [ "clap_builder", "clap_derive", @@ -425,13 +425,13 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.21" +version = "4.5.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b17a95aa67cc7b5ebd32aa5370189aa0d79069ef1c64ce893bd30fb24bff20ec" +checksum = "30582fc632330df2bd26877bde0c1f4470d57c582bbc070376afcd04d8cb4838" dependencies = [ "anstream", "anstyle", - "clap_lex 0.7.2", + "clap_lex 0.7.4", "strsim 0.11.1", ] @@ -458,9 +458,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.7.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" +checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "clap_mangen" @@ -468,7 +468,7 @@ version = "0.2.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fbae9cbfdc5d4fa8711c09bd7b83f644cb48281ac35bf97af3e47b0675864bdf" dependencies = [ - "clap 4.5.21", + "clap 4.5.23", "roff 0.2.2", ] @@ -575,7 +575,7 @@ dependencies = [ "anes", "cast", "ciborium", - "clap 4.5.21", + "clap 4.5.23", "criterion-plot", "is-terminal", "itertools 0.10.5", @@ -1481,7 +1481,7 @@ dependencies = [ name = "git-branchless-invoke" version = "0.10.0" dependencies = [ - "clap 4.5.21", + "clap 4.5.23", "color-eyre", "cursive_core", "eyre", @@ -1570,7 +1570,7 @@ dependencies = [ name = "git-branchless-opts" version = "0.10.0" dependencies = [ - "clap 4.5.21", + "clap 4.5.23", "clap_mangen", "git-branchless-lib", "itertools 0.13.0", @@ -1674,7 +1674,7 @@ dependencies = [ name = "git-branchless-submit" version = "0.10.0" dependencies = [ - "clap 4.5.21", + "clap 4.5.23", "cursive_core", "esl01-dag", "eyre", @@ -1702,7 +1702,7 @@ version = "0.10.0" dependencies = [ "assert_cmd", "bstr", - "clap 4.5.21", + "clap 4.5.23", "crossbeam", "cursive", "esl01-dag", @@ -2994,7 +2994,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adfb2974d3500342f111c2642357b8eda61977b8d4f2994274aa07a0ad834069" dependencies = [ - "clap 4.5.21", + "clap 4.5.23", "diffy", "scm-record", "sha1", diff --git a/Cargo.toml b/Cargo.toml index 23342bf2a..93967bcf8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -40,7 +40,7 @@ chashmap = "2.2.2" chrono = "0.4.34" chrono-english = "0.1.7" chronoutil = "0.2.7" -clap = "4.5.21" +clap = "4.5.23" clap_mangen = "0.2.22" color-eyre = "0.6.3" concolor = { version = "0.1.1", features = ["auto"] } From 7bd5c1bcb2a8f75263fab043073f4f9fe234bf03 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Dec 2024 18:48:32 +0000 Subject: [PATCH 038/146] build: bump anyhow from 1.0.93 to 1.0.94 Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.93 to 1.0.94. - [Release notes](https://github.com/dtolnay/anyhow/releases) - [Commits](https://github.com/dtolnay/anyhow/compare/1.0.93...1.0.94) --- updated-dependencies: - dependency-name: anyhow dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ecbe8d551..6e3af807a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -126,9 +126,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.93" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775" +checksum = "c1fd03a028ef38ba2276dce7e33fcd6369c158a1bca17946c4b1b701891c1ff7" [[package]] name = "arrayvec" diff --git a/Cargo.toml b/Cargo.toml index 93967bcf8..6f37b8a64 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -32,7 +32,7 @@ push = false tag = false [workspace.dependencies] -anyhow = "1.0.93" +anyhow = "1.0.94" async-trait = "0.1.83" bstr = "1.11.0" bugreport = "0.5.0" From 51dbae17bcb9adf0f0f331ed4994244d05034c46 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Dec 2024 18:48:43 +0000 Subject: [PATCH 039/146] build: bump thiserror from 2.0.3 to 2.0.6 Bumps [thiserror](https://github.com/dtolnay/thiserror) from 2.0.3 to 2.0.6. - [Release notes](https://github.com/dtolnay/thiserror/releases) - [Commits](https://github.com/dtolnay/thiserror/compare/2.0.3...2.0.6) --- updated-dependencies: - dependency-name: thiserror dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 22 +++++++++++----------- Cargo.toml | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6e3af807a..8801d893c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1439,7 +1439,7 @@ dependencies = [ "regex", "rusqlite", "scm-diff-editor", - "thiserror 2.0.3", + "thiserror 2.0.6", "tracing", "tracing-chrome", "tracing-error", @@ -1528,7 +1528,7 @@ dependencies = [ "shell-words", "tempfile", "textwrap", - "thiserror 2.0.3", + "thiserror 2.0.6", "tracing", "tracing-chrome", "tracing-error", @@ -1633,7 +1633,7 @@ dependencies = [ "rayon", "regex", "serde_json", - "thiserror 2.0.3", + "thiserror 2.0.6", "tracing", ] @@ -1692,7 +1692,7 @@ dependencies = [ "serde", "serde_json", "tempfile", - "thiserror 2.0.3", + "thiserror 2.0.6", "tracing", ] @@ -1723,7 +1723,7 @@ dependencies = [ "serde", "serde_json", "tempfile", - "thiserror 2.0.3", + "thiserror 2.0.6", "tracing", ] @@ -2984,7 +2984,7 @@ dependencies = [ "itertools 0.13.0", "maplit", "proptest", - "thiserror 2.0.3", + "thiserror 2.0.6", "tracing", ] @@ -3420,11 +3420,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.3" +version = "2.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c006c85c7651b3cf2ada4584faa36773bd07bac24acfb39f3c431b36d7e667aa" +checksum = "8fec2a1820ebd077e2b90c4df007bebf344cd394098a13c563957d0afc83ea47" dependencies = [ - "thiserror-impl 2.0.3", + "thiserror-impl 2.0.6", ] [[package]] @@ -3440,9 +3440,9 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "2.0.3" +version = "2.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f077553d607adc1caf65430528a576c757a71ed73944b66ebb58ef2bbd243568" +checksum = "d65750cab40f4ff1929fb1ba509e9914eb756131cef4210da8d5d700d26f6312" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 6f37b8a64..b3ea5a3af 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -95,7 +95,7 @@ shell-words = "1.1.0" skim = "0.10.4" tempfile = "3.14.0" textwrap = "0.16.1" -thiserror = "2.0.3" +thiserror = "2.0.6" tracing = "0.1.41" tracing-chrome = "0.6.0" tracing-error = "0.2.1" From 90a6d89577e7f0a0b6b6fea5030ee3da3db67c03 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Dec 2024 18:56:19 +0000 Subject: [PATCH 040/146] build: bump chrono from 0.4.38 to 0.4.39 Bumps [chrono](https://github.com/chronotope/chrono) from 0.4.38 to 0.4.39. - [Release notes](https://github.com/chronotope/chrono/releases) - [Changelog](https://github.com/chronotope/chrono/blob/main/CHANGELOG.md) - [Commits](https://github.com/chronotope/chrono/compare/v0.4.38...v0.4.39) --- updated-dependencies: - dependency-name: chrono dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8801d893c..8920de2a6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -339,9 +339,9 @@ dependencies = [ [[package]] name = "chrono" -version = "0.4.38" +version = "0.4.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825" dependencies = [ "android-tzdata", "iana-time-zone", diff --git a/Cargo.toml b/Cargo.toml index b3ea5a3af..0021f0890 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -37,7 +37,7 @@ async-trait = "0.1.83" bstr = "1.11.0" bugreport = "0.5.0" chashmap = "2.2.2" -chrono = "0.4.34" +chrono = "0.4.39" chrono-english = "0.1.7" chronoutil = "0.2.7" clap = "4.5.23" From 2cb84846811b3a20560ed8503adca7eb5bc331b0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Dec 2024 18:56:25 +0000 Subject: [PATCH 041/146] build: bump cc from 1.2.2 to 1.2.3 Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.2.2 to 1.2.3. - [Release notes](https://github.com/rust-lang/cc-rs/releases) - [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md) - [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.2...cc-v1.2.3) --- updated-dependencies: - dependency-name: cc dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8920de2a6..525d94f16 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -312,9 +312,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.2" +version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f34d93e62b03caf570cccc334cbc6c2fceca82f39211051345108adcba3eebdc" +checksum = "27f657647bcff5394bf56c7317665bbf790a137a50eaaa5c6bfbb9e27a518f2d" dependencies = [ "jobserver", "libc", diff --git a/Cargo.toml b/Cargo.toml index 0021f0890..e07086ac0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -104,7 +104,7 @@ vt100 = "0.15.2" # dev-dependencies assert_cmd = "2.0.16" -cc = "1.2.2" +cc = "1.2.3" criterion = { version = "0.5.1", features = ["html_reports"] } insta = "1.41.1" maplit = "1.0.2" From aeb77e331c04105eb7228567264bf2cd2b3176e8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Dec 2024 18:13:09 +0000 Subject: [PATCH 042/146] build: bump console from 0.15.8 to 0.15.10 Bumps [console](https://github.com/console-rs/console) from 0.15.8 to 0.15.10. - [Release notes](https://github.com/console-rs/console/releases) - [Changelog](https://github.com/console-rs/console/blob/main/CHANGELOG.md) - [Commits](https://github.com/console-rs/console/compare/0.15.8...0.15.10) --- updated-dependencies: - dependency-name: console dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 14 +++++++------- Cargo.toml | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 525d94f16..e556a03b7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -540,15 +540,15 @@ dependencies = [ [[package]] name = "console" -version = "0.15.8" +version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb" +checksum = "ea3c6ecd8059b57859df5c69830340ed3c41d30e3da0c1cbed90a96ac853041b" dependencies = [ "encode_unicode", - "lazy_static", "libc", - "unicode-width 0.1.14", - "windows-sys 0.52.0", + "once_cell", + "unicode-width 0.2.0", + "windows-sys 0.59.0", ] [[package]] @@ -968,9 +968,9 @@ dependencies = [ [[package]] name = "encode_unicode" -version = "0.3.6" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" +checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" [[package]] name = "enum-map" diff --git a/Cargo.toml b/Cargo.toml index e07086ac0..712eaff98 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -44,7 +44,7 @@ clap = "4.5.23" clap_mangen = "0.2.22" color-eyre = "0.6.3" concolor = { version = "0.1.1", features = ["auto"] } -console = "0.15.8" +console = "0.15.10" crossbeam = "0.8.4" cursive = { version = "0.20.0", default-features = false, features = [ "crossterm-backend", From 647f3ddbc3afa0108250c81ee68b764370ebef1a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Dec 2024 18:12:54 +0000 Subject: [PATCH 043/146] build: bump thiserror from 2.0.6 to 2.0.7 Bumps [thiserror](https://github.com/dtolnay/thiserror) from 2.0.6 to 2.0.7. - [Release notes](https://github.com/dtolnay/thiserror/releases) - [Commits](https://github.com/dtolnay/thiserror/compare/2.0.6...2.0.7) --- updated-dependencies: - dependency-name: thiserror dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 22 +++++++++++----------- Cargo.toml | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e556a03b7..a07cd74b0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1439,7 +1439,7 @@ dependencies = [ "regex", "rusqlite", "scm-diff-editor", - "thiserror 2.0.6", + "thiserror 2.0.7", "tracing", "tracing-chrome", "tracing-error", @@ -1528,7 +1528,7 @@ dependencies = [ "shell-words", "tempfile", "textwrap", - "thiserror 2.0.6", + "thiserror 2.0.7", "tracing", "tracing-chrome", "tracing-error", @@ -1633,7 +1633,7 @@ dependencies = [ "rayon", "regex", "serde_json", - "thiserror 2.0.6", + "thiserror 2.0.7", "tracing", ] @@ -1692,7 +1692,7 @@ dependencies = [ "serde", "serde_json", "tempfile", - "thiserror 2.0.6", + "thiserror 2.0.7", "tracing", ] @@ -1723,7 +1723,7 @@ dependencies = [ "serde", "serde_json", "tempfile", - "thiserror 2.0.6", + "thiserror 2.0.7", "tracing", ] @@ -2984,7 +2984,7 @@ dependencies = [ "itertools 0.13.0", "maplit", "proptest", - "thiserror 2.0.6", + "thiserror 2.0.7", "tracing", ] @@ -3420,11 +3420,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.6" +version = "2.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fec2a1820ebd077e2b90c4df007bebf344cd394098a13c563957d0afc83ea47" +checksum = "93605438cbd668185516ab499d589afb7ee1859ea3d5fc8f6b0755e1c7443767" dependencies = [ - "thiserror-impl 2.0.6", + "thiserror-impl 2.0.7", ] [[package]] @@ -3440,9 +3440,9 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "2.0.6" +version = "2.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d65750cab40f4ff1929fb1ba509e9914eb756131cef4210da8d5d700d26f6312" +checksum = "e1d8749b4531af2117677a5fcd12b1348a3fe2b81e36e61ffeac5c4aa3273e36" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 712eaff98..545988671 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -95,7 +95,7 @@ shell-words = "1.1.0" skim = "0.10.4" tempfile = "3.14.0" textwrap = "0.16.1" -thiserror = "2.0.6" +thiserror = "2.0.7" tracing = "0.1.41" tracing-chrome = "0.6.0" tracing-error = "0.2.1" From 3bbd4e6d5876264db377f86dc4252f495f33d8c1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Dec 2024 18:12:38 +0000 Subject: [PATCH 044/146] build: bump proptest from 1.5.0 to 1.6.0 Bumps [proptest](https://github.com/proptest-rs/proptest) from 1.5.0 to 1.6.0. - [Release notes](https://github.com/proptest-rs/proptest/releases) - [Changelog](https://github.com/proptest-rs/proptest/blob/main/CHANGELOG.md) - [Commits](https://github.com/proptest-rs/proptest/commits) --- updated-dependencies: - dependency-name: proptest dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Cargo.lock | 34 +++++++++++++++++++++------------- scm-bisect/Cargo.toml | 2 +- 2 files changed, 22 insertions(+), 14 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a07cd74b0..1bcc1367c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -216,7 +216,16 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" dependencies = [ - "bit-vec", + "bit-vec 0.6.3", +] + +[[package]] +name = "bit-set" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" +dependencies = [ + "bit-vec 0.8.0", ] [[package]] @@ -225,6 +234,12 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" +[[package]] +name = "bit-vec" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" + [[package]] name = "bitflags" version = "1.3.2" @@ -2038,7 +2053,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0a1cbf952127589f2851ab2046af368fd20645491bb4b376f04b7f94d7a9837b" dependencies = [ "ascii-canvas", - "bit-set", + "bit-set 0.5.3", "diff", "ena", "is-terminal", @@ -2086,12 +2101,6 @@ dependencies = [ "pkg-config", ] -[[package]] -name = "libm" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" - [[package]] name = "libredox" version = "0.1.3" @@ -2343,7 +2352,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", - "libm", ] [[package]] @@ -2636,12 +2644,12 @@ dependencies = [ [[package]] name = "proptest" -version = "1.5.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c2511913b88df1637da85cc8d96ec8e43a3f8bb8ccb71ee1ac240d6f3df58d" +checksum = "14cae93065090804185d3b75f0bf93b8eeda30c7a9b4a33d3bdb3988d6229e50" dependencies = [ - "bit-set", - "bit-vec", + "bit-set 0.8.0", + "bit-vec 0.8.0", "bitflags 2.6.0", "lazy_static", "num-traits", diff --git a/scm-bisect/Cargo.toml b/scm-bisect/Cargo.toml index 4ddda2ece..b2be106ca 100644 --- a/scm-bisect/Cargo.toml +++ b/scm-bisect/Cargo.toml @@ -17,4 +17,4 @@ tracing = "0.1" [dev-dependencies] insta = "1" maplit = "1" -proptest = "1.5.0" +proptest = "1.6.0" From f423e3a637658d50452119661fbe29d6fe208a99 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Dec 2024 18:12:27 +0000 Subject: [PATCH 045/146] build: bump cc from 1.2.3 to 1.2.4 Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.2.3 to 1.2.4. - [Release notes](https://github.com/rust-lang/cc-rs/releases) - [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md) - [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.3...cc-v1.2.4) --- updated-dependencies: - dependency-name: cc dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1bcc1367c..0087c8892 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -327,9 +327,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.3" +version = "1.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27f657647bcff5394bf56c7317665bbf790a137a50eaaa5c6bfbb9e27a518f2d" +checksum = "9157bbaa6b165880c27a4293a474c91cdcf265cc68cc829bf10be0964a391caf" dependencies = [ "jobserver", "libc", diff --git a/Cargo.toml b/Cargo.toml index 545988671..b6e71daf9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -104,7 +104,7 @@ vt100 = "0.15.2" # dev-dependencies assert_cmd = "2.0.16" -cc = "1.2.3" +cc = "1.2.4" criterion = { version = "0.5.1", features = ["html_reports"] } insta = "1.41.1" maplit = "1.0.2" From 41f8d7d408b288bebc3b0176a7a07debcf59239a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Dec 2024 18:12:14 +0000 Subject: [PATCH 046/146] build: bump bstr from 1.11.0 to 1.11.1 Bumps [bstr](https://github.com/BurntSushi/bstr) from 1.11.0 to 1.11.1. - [Commits](https://github.com/BurntSushi/bstr/compare/1.11.0...1.11.1) --- updated-dependencies: - dependency-name: bstr dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0087c8892..cd33000e5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -263,9 +263,9 @@ dependencies = [ [[package]] name = "bstr" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a68f1f47cdf0ec8ee4b941b2eee2a80cb796db73118c0dd09ac63fbe405be22" +checksum = "786a307d683a5bf92e6fd5fd69a7eb613751668d1d8d67d802846dfe367c62c8" dependencies = [ "memchr", "regex-automata 0.4.8", diff --git a/Cargo.toml b/Cargo.toml index b6e71daf9..98ffcf53d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -34,7 +34,7 @@ tag = false [workspace.dependencies] anyhow = "1.0.94" async-trait = "0.1.83" -bstr = "1.11.0" +bstr = "1.11.1" bugreport = "0.5.0" chashmap = "2.2.2" chrono = "0.4.39" From 7892aca99d148642e73ddd89376c9d4a2f2f5aba Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Dec 2024 18:25:44 +0000 Subject: [PATCH 047/146] build: bump thiserror from 2.0.7 to 2.0.9 Bumps [thiserror](https://github.com/dtolnay/thiserror) from 2.0.7 to 2.0.9. - [Release notes](https://github.com/dtolnay/thiserror/releases) - [Commits](https://github.com/dtolnay/thiserror/compare/2.0.7...2.0.9) --- updated-dependencies: - dependency-name: thiserror dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 22 +++++++++++----------- Cargo.toml | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index cd33000e5..8eefcd799 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1454,7 +1454,7 @@ dependencies = [ "regex", "rusqlite", "scm-diff-editor", - "thiserror 2.0.7", + "thiserror 2.0.9", "tracing", "tracing-chrome", "tracing-error", @@ -1543,7 +1543,7 @@ dependencies = [ "shell-words", "tempfile", "textwrap", - "thiserror 2.0.7", + "thiserror 2.0.9", "tracing", "tracing-chrome", "tracing-error", @@ -1648,7 +1648,7 @@ dependencies = [ "rayon", "regex", "serde_json", - "thiserror 2.0.7", + "thiserror 2.0.9", "tracing", ] @@ -1707,7 +1707,7 @@ dependencies = [ "serde", "serde_json", "tempfile", - "thiserror 2.0.7", + "thiserror 2.0.9", "tracing", ] @@ -1738,7 +1738,7 @@ dependencies = [ "serde", "serde_json", "tempfile", - "thiserror 2.0.7", + "thiserror 2.0.9", "tracing", ] @@ -2992,7 +2992,7 @@ dependencies = [ "itertools 0.13.0", "maplit", "proptest", - "thiserror 2.0.7", + "thiserror 2.0.9", "tracing", ] @@ -3428,11 +3428,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.7" +version = "2.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93605438cbd668185516ab499d589afb7ee1859ea3d5fc8f6b0755e1c7443767" +checksum = "f072643fd0190df67a8bab670c20ef5d8737177d6ac6b2e9a236cb096206b2cc" dependencies = [ - "thiserror-impl 2.0.7", + "thiserror-impl 2.0.9", ] [[package]] @@ -3448,9 +3448,9 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "2.0.7" +version = "2.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1d8749b4531af2117677a5fcd12b1348a3fe2b81e36e61ffeac5c4aa3273e36" +checksum = "7b50fa271071aae2e6ee85f842e2e28ba8cd2c5fb67f11fcb1fd70b276f9e7d4" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 98ffcf53d..ad521be17 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -95,7 +95,7 @@ shell-words = "1.1.0" skim = "0.10.4" tempfile = "3.14.0" textwrap = "0.16.1" -thiserror = "2.0.7" +thiserror = "2.0.9" tracing = "0.1.41" tracing-chrome = "0.6.0" tracing-error = "0.2.1" From b930be47c4872e41f89e686b19a18f77d9db01b8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Dec 2024 18:25:27 +0000 Subject: [PATCH 048/146] build: bump serde from 1.0.215 to 1.0.216 Bumps [serde](https://github.com/serde-rs/serde) from 1.0.215 to 1.0.216. - [Release notes](https://github.com/serde-rs/serde/releases) - [Commits](https://github.com/serde-rs/serde/compare/v1.0.215...v1.0.216) --- updated-dependencies: - dependency-name: serde dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 8 ++++---- Cargo.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8eefcd799..3e6345323 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3036,18 +3036,18 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "serde" -version = "1.0.215" +version = "1.0.216" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6513c1ad0b11a9376da888e3e0baa0077f1aed55c17f50e7b2397136129fb88f" +checksum = "0b9781016e935a97e8beecf0c933758c97a5520d32930e460142b4cd80c6338e" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.215" +version = "1.0.216" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad1e866f866923f252f05c889987993144fb74e722403468a4ebd70c3cd756c0" +checksum = "46f859dbbf73865c6627ed570e78961cd3ac92407a2d117204c49232485da55e" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index ad521be17..44c3a0218 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -89,7 +89,7 @@ rusqlite = { version = "0.29.0", features = ["bundled"] } scm-bisect = { version = "0.3.0", path = "scm-bisect" } scm-diff-editor = "0.4.0" scm-record = "0.4.0" -serde = { version = "1.0.215", features = ["derive"] } +serde = { version = "1.0.216", features = ["derive"] } serde_json = "1.0.133" shell-words = "1.1.0" skim = "0.10.4" From 0ac48c421c654fa89663949f9619fd95e0287856 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Dec 2024 18:25:16 +0000 Subject: [PATCH 049/146] build: bump cc from 1.2.4 to 1.2.5 Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.2.4 to 1.2.5. - [Release notes](https://github.com/rust-lang/cc-rs/releases) - [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md) - [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.4...cc-v1.2.5) --- updated-dependencies: - dependency-name: cc dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3e6345323..1aee0526b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -327,9 +327,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.4" +version = "1.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9157bbaa6b165880c27a4293a474c91cdcf265cc68cc829bf10be0964a391caf" +checksum = "c31a0499c1dc64f458ad13872de75c0eb7e3fdb0e67964610c914b034fc5956e" dependencies = [ "jobserver", "libc", diff --git a/Cargo.toml b/Cargo.toml index 44c3a0218..f2d647b1a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -104,7 +104,7 @@ vt100 = "0.15.2" # dev-dependencies assert_cmd = "2.0.16" -cc = "1.2.4" +cc = "1.2.5" criterion = { version = "0.5.1", features = ["html_reports"] } insta = "1.41.1" maplit = "1.0.2" From 91d1d34831e7c37087a4227b99312936b7fd2470 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Dec 2024 18:24:45 +0000 Subject: [PATCH 050/146] build: bump anyhow from 1.0.94 to 1.0.95 Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.94 to 1.0.95. - [Release notes](https://github.com/dtolnay/anyhow/releases) - [Commits](https://github.com/dtolnay/anyhow/compare/1.0.94...1.0.95) --- updated-dependencies: - dependency-name: anyhow dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1aee0526b..850eec660 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -126,9 +126,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.94" +version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1fd03a028ef38ba2276dce7e33fcd6369c158a1bca17946c4b1b701891c1ff7" +checksum = "34ac096ce696dc2fcabef30516bb13c0a68a11d30131d3df6f04711467681b04" [[package]] name = "arrayvec" diff --git a/Cargo.toml b/Cargo.toml index f2d647b1a..73e933723 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -32,7 +32,7 @@ push = false tag = false [workspace.dependencies] -anyhow = "1.0.94" +anyhow = "1.0.95" async-trait = "0.1.83" bstr = "1.11.1" bugreport = "0.5.0" From bcb157f0c86ba377b03b42c13545ad6ab733cfbc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 25 Dec 2024 21:51:18 +0000 Subject: [PATCH 051/146] build: bump serde_json from 1.0.133 to 1.0.134 Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.133 to 1.0.134. - [Release notes](https://github.com/serde-rs/json/releases) - [Commits](https://github.com/serde-rs/json/compare/v1.0.133...v1.0.134) --- updated-dependencies: - dependency-name: serde_json dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 850eec660..d661b5216 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3056,9 +3056,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.133" +version = "1.0.134" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" +checksum = "d00f4175c42ee48b15416f6193a959ba3a0d67fc699a0db9ad12df9f83991c7d" dependencies = [ "itoa", "memchr", diff --git a/Cargo.toml b/Cargo.toml index 73e933723..28cd0e4cd 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -90,7 +90,7 @@ scm-bisect = { version = "0.3.0", path = "scm-bisect" } scm-diff-editor = "0.4.0" scm-record = "0.4.0" serde = { version = "1.0.216", features = ["derive"] } -serde_json = "1.0.133" +serde_json = "1.0.134" shell-words = "1.1.0" skim = "0.10.4" tempfile = "3.14.0" From ea6d9f9524980726825b23fbd3b07b95866ef226 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 30 Dec 2024 18:25:20 +0000 Subject: [PATCH 052/146] build: bump Swatinem/rust-cache from 2.7.5 to 2.7.7 Bumps [Swatinem/rust-cache](https://github.com/swatinem/rust-cache) from 2.7.5 to 2.7.7. - [Release notes](https://github.com/swatinem/rust-cache/releases) - [Changelog](https://github.com/Swatinem/rust-cache/blob/master/CHANGELOG.md) - [Commits](https://github.com/swatinem/rust-cache/compare/82a92a6e8fbeee089604da2575dc567ae9ddeaab...f0deed1e0edfc6a9be95417288c0e1099b1eeec3) --- updated-dependencies: - dependency-name: Swatinem/rust-cache dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/lint.yml | 2 +- .github/workflows/linux.yml | 2 +- .github/workflows/macos.yml | 2 +- .github/workflows/windows.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index d78c6f1c4..676656131 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -35,7 +35,7 @@ jobs: override: true - name: Cache dependencies - uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab + uses: Swatinem/rust-cache@f0deed1e0edfc6a9be95417288c0e1099b1eeec3 - name: Run `cargo fmt` uses: actions-rs/cargo@v1 diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 2669b75b6..e0b3f38bc 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -78,7 +78,7 @@ jobs: override: true - name: Cache dependencies - uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab + uses: Swatinem/rust-cache@f0deed1e0edfc6a9be95417288c0e1099b1eeec3 - name: Compile (all features) run: cargo build --all-features --all-targets --workspace diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index 6acfa12c1..f1dc76683 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -31,7 +31,7 @@ jobs: override: true - name: Cache dependencies - uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab + uses: Swatinem/rust-cache@f0deed1e0edfc6a9be95417288c0e1099b1eeec3 - name: Compile run: cargo build --benches --tests diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 8e73c7c46..af0369cd3 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -24,7 +24,7 @@ jobs: override: true - name: Cache dependencies - uses: Swatinem/rust-cache@82a92a6e8fbeee089604da2575dc567ae9ddeaab + uses: Swatinem/rust-cache@f0deed1e0edfc6a9be95417288c0e1099b1eeec3 - name: Compile run: cargo build --all-targets --workspace From 5f274a0a6de96cbb3f5e8fdd50d5f3109e622855 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 30 Dec 2024 18:21:17 +0000 Subject: [PATCH 053/146] build: bump cc from 1.2.5 to 1.2.6 Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.2.5 to 1.2.6. - [Release notes](https://github.com/rust-lang/cc-rs/releases) - [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md) - [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.5...cc-v1.2.6) --- updated-dependencies: - dependency-name: cc dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d661b5216..d25f013e9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -327,9 +327,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.5" +version = "1.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c31a0499c1dc64f458ad13872de75c0eb7e3fdb0e67964610c914b034fc5956e" +checksum = "8d6dbb628b8f8555f86d0323c2eb39e3ec81901f4b83e091db8a6a76d316a333" dependencies = [ "jobserver", "libc", diff --git a/Cargo.toml b/Cargo.toml index 28cd0e4cd..e79fd984f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -104,7 +104,7 @@ vt100 = "0.15.2" # dev-dependencies assert_cmd = "2.0.16" -cc = "1.2.5" +cc = "1.2.6" criterion = { version = "0.5.1", features = ["html_reports"] } insta = "1.41.1" maplit = "1.0.2" From e6adf35add4ae7e527fbec97a044a575207d1357 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 30 Dec 2024 18:20:51 +0000 Subject: [PATCH 054/146] build: bump serde from 1.0.216 to 1.0.217 Bumps [serde](https://github.com/serde-rs/serde) from 1.0.216 to 1.0.217. - [Release notes](https://github.com/serde-rs/serde/releases) - [Commits](https://github.com/serde-rs/serde/compare/v1.0.216...v1.0.217) --- updated-dependencies: - dependency-name: serde dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 8 ++++---- Cargo.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d25f013e9..d9ec445e4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3036,18 +3036,18 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "serde" -version = "1.0.216" +version = "1.0.217" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b9781016e935a97e8beecf0c933758c97a5520d32930e460142b4cd80c6338e" +checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.216" +version = "1.0.217" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46f859dbbf73865c6627ed570e78961cd3ac92407a2d117204c49232485da55e" +checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index e79fd984f..154154b3b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -89,7 +89,7 @@ rusqlite = { version = "0.29.0", features = ["bundled"] } scm-bisect = { version = "0.3.0", path = "scm-bisect" } scm-diff-editor = "0.4.0" scm-record = "0.4.0" -serde = { version = "1.0.216", features = ["derive"] } +serde = { version = "1.0.217", features = ["derive"] } serde_json = "1.0.134" shell-words = "1.1.0" skim = "0.10.4" From 7f86069a85dc0256ad080fdf1ce071285a26fd6e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 30 Dec 2024 18:20:28 +0000 Subject: [PATCH 055/146] build: bump glob from 0.3.1 to 0.3.2 Bumps [glob](https://github.com/rust-lang/glob) from 0.3.1 to 0.3.2. - [Release notes](https://github.com/rust-lang/glob/releases) - [Changelog](https://github.com/rust-lang/glob/blob/master/CHANGELOG.md) - [Commits](https://github.com/rust-lang/glob/compare/0.3.1...v0.3.2) --- updated-dependencies: - dependency-name: glob dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d9ec445e4..cc47af369 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1792,9 +1792,9 @@ dependencies = [ [[package]] name = "glob" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" +checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" [[package]] name = "half" diff --git a/Cargo.toml b/Cargo.toml index 154154b3b..4817a0f31 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -70,7 +70,7 @@ git-branchless-submit = { version = "0.10.0", path = "git-branchless-submit" } git-branchless-test = { version = "0.10.0", path = "git-branchless-test" } git-branchless-undo = { version = "0.10.0", path = "git-branchless-undo" } git2 = { version = "0.19.0", default-features = false } -glob = "0.3.0" +glob = "0.3.2" indexmap = "2.7.0" indicatif = { version = "0.17.9", features = ["improved_unicode"] } itertools = "0.13.0" From 731c77300364f3fcf51575e8d96879fd585126ac Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Jan 2025 18:55:30 +0000 Subject: [PATCH 056/146] build: bump itertools from 0.13.0 to 0.14.0 Bumps [itertools](https://github.com/rust-itertools/itertools) from 0.13.0 to 0.14.0. - [Changelog](https://github.com/rust-itertools/itertools/blob/master/CHANGELOG.md) - [Commits](https://github.com/rust-itertools/itertools/compare/v0.13.0...v0.14.0) --- updated-dependencies: - dependency-name: itertools dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Cargo.lock | 33 +++++++++++++++++++++------------ Cargo.toml | 2 +- scm-bisect/Cargo.toml | 2 +- 3 files changed, 23 insertions(+), 14 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index cc47af369..b9b2de1c1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1444,7 +1444,7 @@ dependencies = [ "git-branchless-test", "git-branchless-undo", "insta", - "itertools 0.13.0", + "itertools 0.14.0", "lazy_static", "man", "num_cpus", @@ -1471,7 +1471,7 @@ dependencies = [ "git-branchless-lib", "git-branchless-opts", "insta", - "itertools 0.13.0", + "itertools 0.14.0", "lazy_static", "regex", "tracing", @@ -1487,7 +1487,7 @@ dependencies = [ "git-branchless-invoke", "git-branchless-lib", "git-branchless-opts", - "itertools 0.13.0", + "itertools 0.14.0", "path-slash", "tracing", ] @@ -1531,7 +1531,7 @@ dependencies = [ "git2", "indicatif", "insta", - "itertools 0.13.0", + "itertools 0.14.0", "lazy_static", "once_cell", "portable-pty", @@ -1576,7 +1576,7 @@ dependencies = [ "git-branchless-opts", "git-branchless-revset", "git-branchless-smartlog", - "itertools 0.13.0", + "itertools 0.14.0", "skim", "tracing", ] @@ -1588,7 +1588,7 @@ dependencies = [ "clap 4.5.23", "clap_mangen", "git-branchless-lib", - "itertools 0.13.0", + "itertools 0.14.0", "scm-diff-editor", ] @@ -1603,7 +1603,7 @@ dependencies = [ "git-branchless-opts", "git-branchless-revset", "insta", - "itertools 0.13.0", + "itertools 0.14.0", "tracing", ] @@ -1620,7 +1620,7 @@ dependencies = [ "git-branchless-opts", "git-branchless-reword", "insta", - "itertools 0.13.0", + "itertools 0.14.0", "rayon", "scm-record", "tracing", @@ -1641,7 +1641,7 @@ dependencies = [ "git-branchless-opts", "glob", "insta", - "itertools 0.13.0", + "itertools 0.14.0", "lalrpop", "lalrpop-util", "lazy_static", @@ -1700,7 +1700,7 @@ dependencies = [ "git-branchless-test", "indexmap 2.7.0", "insta", - "itertools 0.13.0", + "itertools 0.14.0", "lazy_static", "rayon", "regex", @@ -1729,7 +1729,7 @@ dependencies = [ "git-branchless-revset", "indexmap 2.7.0", "insta", - "itertools 0.13.0", + "itertools 0.14.0", "lazy_static", "maplit", "num_cpus", @@ -2016,6 +2016,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.11" @@ -2989,7 +2998,7 @@ version = "0.3.0" dependencies = [ "indexmap 2.7.0", "insta", - "itertools 0.13.0", + "itertools 0.14.0", "maplit", "proptest", "thiserror 2.0.9", diff --git a/Cargo.toml b/Cargo.toml index 4817a0f31..1e463aea1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -73,7 +73,7 @@ git2 = { version = "0.19.0", default-features = false } glob = "0.3.2" indexmap = "2.7.0" indicatif = { version = "0.17.9", features = ["improved_unicode"] } -itertools = "0.13.0" +itertools = "0.14.0" lalrpop = "0.19.12" lalrpop-util = "0.19.12" lazy_static = "1.5.0" diff --git a/scm-bisect/Cargo.toml b/scm-bisect/Cargo.toml index b2be106ca..1fe70a5c3 100644 --- a/scm-bisect/Cargo.toml +++ b/scm-bisect/Cargo.toml @@ -10,7 +10,7 @@ version = "0.3.0" [dependencies] indexmap = "2" -itertools = "0.13" +itertools = "0.14" thiserror = "2" tracing = "0.1" From 37f04fc0d08e5d38cdb330aa5c79081ae0bd6595 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Jan 2025 18:55:18 +0000 Subject: [PATCH 057/146] build: bump bstr from 1.11.1 to 1.11.3 Bumps [bstr](https://github.com/BurntSushi/bstr) from 1.11.1 to 1.11.3. - [Commits](https://github.com/BurntSushi/bstr/compare/1.11.1...1.11.3) --- updated-dependencies: - dependency-name: bstr dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b9b2de1c1..aec96b293 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -263,9 +263,9 @@ dependencies = [ [[package]] name = "bstr" -version = "1.11.1" +version = "1.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "786a307d683a5bf92e6fd5fd69a7eb613751668d1d8d67d802846dfe367c62c8" +checksum = "531a9155a481e2ee699d4f98f43c0ca4ff8ee1bfd55c31e9e98fb29d2b176fe0" dependencies = [ "memchr", "regex-automata 0.4.8", diff --git a/Cargo.toml b/Cargo.toml index 1e463aea1..d32a00f8e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -34,7 +34,7 @@ tag = false [workspace.dependencies] anyhow = "1.0.95" async-trait = "0.1.83" -bstr = "1.11.1" +bstr = "1.11.3" bugreport = "0.5.0" chashmap = "2.2.2" chrono = "0.4.39" From d7023b0541f7f6c208570f3750cef8bb2833a3af Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Jan 2025 18:55:58 +0000 Subject: [PATCH 058/146] build: bump cc from 1.2.6 to 1.2.7 Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.2.6 to 1.2.7. - [Release notes](https://github.com/rust-lang/cc-rs/releases) - [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md) - [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.6...cc-v1.2.7) --- updated-dependencies: - dependency-name: cc dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index aec96b293..6a1f5793f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -327,9 +327,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.6" +version = "1.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d6dbb628b8f8555f86d0323c2eb39e3ec81901f4b83e091db8a6a76d316a333" +checksum = "a012a0df96dd6d06ba9a1b29d6402d1a5d77c6befd2566afdc26e10603dc93d7" dependencies = [ "jobserver", "libc", diff --git a/Cargo.toml b/Cargo.toml index d32a00f8e..79effad07 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -104,7 +104,7 @@ vt100 = "0.15.2" # dev-dependencies assert_cmd = "2.0.16" -cc = "1.2.6" +cc = "1.2.7" criterion = { version = "0.5.1", features = ["html_reports"] } insta = "1.41.1" maplit = "1.0.2" From ab8ca7bfdafe7ba562fdfd44f2d9621d49b32e5b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Jan 2025 19:07:47 +0000 Subject: [PATCH 059/146] build: bump bugreport from 0.5.0 to 0.5.1 Bumps [bugreport](https://github.com/sharkdp/bugreport) from 0.5.0 to 0.5.1. - [Release notes](https://github.com/sharkdp/bugreport/releases) - [Commits](https://github.com/sharkdp/bugreport/compare/v0.5.0...v0.5.1) --- updated-dependencies: - dependency-name: bugreport dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 86 +++++++++++++++++++++++++++++++++++++++++++++++------- Cargo.toml | 2 +- 2 files changed, 77 insertions(+), 11 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6a1f5793f..029e33dbe 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -274,13 +274,13 @@ dependencies = [ [[package]] name = "bugreport" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "535120b8182547808081a66f1f77a64533c780b23da26763e0ee34dfb94f98c9" +checksum = "f280f65ce85b880919349bbfcb204930291251eedcb2e5f84ce2f51df969c162" dependencies = [ "git-version", "shell-escape", - "sys-info", + "sysinfo", ] [[package]] @@ -1892,7 +1892,7 @@ dependencies = [ "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "windows-core", + "windows-core 0.52.0", ] [[package]] @@ -2094,9 +2094,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.161" +version = "0.2.169" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1" +checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" [[package]] name = "libgit2-sys" @@ -2287,6 +2287,15 @@ dependencies = [ "pin-utils", ] +[[package]] +name = "ntapi" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4" +dependencies = [ + "winapi", +] + [[package]] name = "nu-ansi-term" version = "0.50.1" @@ -3358,13 +3367,17 @@ dependencies = [ ] [[package]] -name = "sys-info" -version = "0.9.1" +name = "sysinfo" +version = "0.33.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b3a0d0aba8bf96a0e1ddfdc352fc53b3df7f39318c71854910c3c4b024ae52c" +checksum = "4fc858248ea01b66f19d8e8a6d55f41deaf91e9d495246fd01368d99935c6c01" dependencies = [ - "cc", + "core-foundation-sys", "libc", + "memchr", + "ntapi", + "rayon", + "windows", ] [[package]] @@ -3939,6 +3952,16 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12342cb4d8e3b046f3d80effd474a7a02447231330ef77d71daa6fbc40681143" +dependencies = [ + "windows-core 0.57.0", + "windows-targets 0.52.6", +] + [[package]] name = "windows-core" version = "0.52.0" @@ -3948,6 +3971,49 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-core" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-result", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-implement" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "windows-interface" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "windows-result" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" +dependencies = [ + "windows-targets 0.52.6", +] + [[package]] name = "windows-sys" version = "0.45.0" diff --git a/Cargo.toml b/Cargo.toml index 79effad07..448825c44 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -35,7 +35,7 @@ tag = false anyhow = "1.0.95" async-trait = "0.1.83" bstr = "1.11.3" -bugreport = "0.5.0" +bugreport = "0.5.1" chashmap = "2.2.2" chrono = "0.4.39" chrono-english = "0.1.7" From dff8a8e17ecb8e9e2c8ea3271538496ceca4467b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Jan 2025 21:40:33 +0000 Subject: [PATCH 060/146] build: bump tempfile from 3.14.0 to 3.15.0 Bumps [tempfile](https://github.com/Stebalien/tempfile) from 3.14.0 to 3.15.0. - [Changelog](https://github.com/Stebalien/tempfile/blob/master/CHANGELOG.md) - [Commits](https://github.com/Stebalien/tempfile/compare/v3.14.0...v3.15.0) --- updated-dependencies: - dependency-name: tempfile dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Cargo.lock | 5 +++-- Cargo.toml | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 029e33dbe..9faa7182d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3382,12 +3382,13 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.14.0" +version = "3.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" +checksum = "9a8a559c81686f576e8cd0290cd2a24a2a9ad80c98b3478856500fcbd7acd704" dependencies = [ "cfg-if", "fastrand", + "getrandom 0.2.15", "once_cell", "rustix", "windows-sys 0.59.0", diff --git a/Cargo.toml b/Cargo.toml index 448825c44..765f27872 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -93,7 +93,7 @@ serde = { version = "1.0.217", features = ["derive"] } serde_json = "1.0.134" shell-words = "1.1.0" skim = "0.10.4" -tempfile = "3.14.0" +tempfile = "3.15.0" textwrap = "0.16.1" thiserror = "2.0.9" tracing = "0.1.41" From 47431f3db7479fd0bdcd92b81d2ffdb7b729ef7e Mon Sep 17 00:00:00 2001 From: Bryan Lai Date: Mon, 6 Jan 2025 19:19:10 +0800 Subject: [PATCH 061/146] build: bump git2 0.19 -> 0.20 to unlock ^ref spec This depends on libgit2 1.9.0 which is contained in git2 0.20. --- Cargo.lock | 8 ++++---- Cargo.toml | 2 +- git-branchless-invoke/src/lib.rs | 8 ++++---- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9faa7182d..866a3ab94 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1779,9 +1779,9 @@ dependencies = [ [[package]] name = "git2" -version = "0.19.0" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b903b73e45dc0c6c596f2d37eccece7c1c8bb6e4407b001096387c63d0d93724" +checksum = "3fda788993cc341f69012feba8bf45c0ba4f3291fcc08e214b4d5a7332d88aff" dependencies = [ "bitflags 2.6.0", "libc", @@ -2100,9 +2100,9 @@ checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" [[package]] name = "libgit2-sys" -version = "0.17.0+1.8.1" +version = "0.18.0+1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10472326a8a6477c3c20a64547b0059e4b0d086869eee31e6d7da728a8eb7224" +checksum = "e1a117465e7e1597e8febea8bb0c410f1c7fb93b1e1cddf34363f8390367ffec" dependencies = [ "cc", "libc", diff --git a/Cargo.toml b/Cargo.toml index 765f27872..765045d07 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -69,7 +69,7 @@ git-branchless-smartlog = { version = "0.10.0", path = "git-branchless-smartlog" git-branchless-submit = { version = "0.10.0", path = "git-branchless-submit" } git-branchless-test = { version = "0.10.0", path = "git-branchless-test" } git-branchless-undo = { version = "0.10.0", path = "git-branchless-undo" } -git2 = { version = "0.19.0", default-features = false } +git2 = { version = "0.20.0", default-features = false } glob = "0.3.2" indexmap = "2.7.0" indicatif = { version = "0.17.9", features = ["improved_unicode"] } diff --git a/git-branchless-invoke/src/lib.rs b/git-branchless-invoke/src/lib.rs index eee43ffaa..a6cd9738f 100644 --- a/git-branchless-invoke/src/lib.rs +++ b/git-branchless-invoke/src/lib.rs @@ -117,12 +117,12 @@ fn install_tracing(effects: Effects) -> eyre::Result { #[instrument] fn install_libgit2_tracing() { - fn git_trace(level: git2::TraceLevel, msg: &str) { - info!("[{:?}]: {}", level, msg); + fn git_trace(level: git2::TraceLevel, msg: &[u8]) { + info!("[{:?}]: {}", level, String::from_utf8_lossy(msg)); } - if !git2::trace_set(git2::TraceLevel::Trace, git_trace) { - warn!("Failed to install libgit2 tracing"); + if let Err(err) = git2::trace_set(git2::TraceLevel::Trace, git_trace) { + warn!("Failed to install libgit2 tracing: {err}"); } } From 10f02d4c9192fd96bf21fa816d7211855c463749 Mon Sep 17 00:00:00 2001 From: Waleed Khan Date: Fri, 10 Jan 2025 14:55:50 -0800 Subject: [PATCH 062/146] feat(scm-record): upgrade `scm-record` from v0.4.0 to v0.5.0 --- CHANGELOG.md | 4 ++ Cargo.lock | 163 +++++++++++++++++++++++++++++++++++++++++---------- Cargo.toml | 2 +- 3 files changed, 137 insertions(+), 32 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4e0a77d5b..f1f3b5608 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] - ReleaseDate +### Changed + +- `scm-record` upgraded to [v0.5.0](https://github.com/arxanas/scm-record/releases/tag/v0.5.0). + ## [v0.10.0] - 2024-10-10 ### Added diff --git a/Cargo.lock b/Cargo.lock index 866a3ab94..efaa248d1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -169,7 +169,7 @@ checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.96", ] [[package]] @@ -459,7 +459,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.96", ] [[package]] @@ -533,6 +533,20 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "compact_str" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b79c4069c6cad78e2e0cdfcbd26275770669fb39fd308a752dc110e83b9af32" +dependencies = [ + "castaway", + "cfg-if", + "itoa", + "rustversion", + "ryu", + "static_assertions", +] + [[package]] name = "concolor" version = "0.1.1" @@ -682,7 +696,7 @@ dependencies = [ "bitflags 1.3.2", "crossterm_winapi", "libc", - "mio", + "mio 0.8.11", "parking_lot 0.12.3", "signal-hook", "signal-hook-mio", @@ -698,8 +712,24 @@ dependencies = [ "bitflags 2.6.0", "crossterm_winapi", "libc", - "mio", + "mio 0.8.11", + "parking_lot 0.12.3", + "signal-hook", + "signal-hook-mio", + "winapi", +] + +[[package]] +name = "crossterm" +version = "0.28.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6" +dependencies = [ + "bitflags 2.6.0", + "crossterm_winapi", + "mio 1.0.3", "parking_lot 0.12.3", + "rustix", "signal-hook", "signal-hook-mio", "winapi", @@ -827,7 +857,8 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "syn 2.0.87", + "strsim 0.11.1", + "syn 2.0.96", ] [[package]] @@ -849,7 +880,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core 0.20.10", "quote", - "syn 2.0.87", + "syn 2.0.96", ] [[package]] @@ -1004,7 +1035,7 @@ checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.96", ] [[package]] @@ -1025,7 +1056,7 @@ dependencies = [ "darling 0.20.10", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.96", ] [[package]] @@ -1336,7 +1367,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.96", ] [[package]] @@ -1538,7 +1569,7 @@ dependencies = [ "rayon", "regex", "rusqlite", - "scm-record", + "scm-record 0.5.0", "serde", "shell-words", "tempfile", @@ -1622,7 +1653,7 @@ dependencies = [ "insta", "itertools 0.14.0", "rayon", - "scm-record", + "scm-record 0.5.0", "tracing", ] @@ -1774,7 +1805,7 @@ checksum = "53010ccb100b96a67bc32c0175f0ed1426b31b655d562898e57325f81c023ac0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.96", ] [[package]] @@ -1960,6 +1991,12 @@ dependencies = [ "web-time", ] +[[package]] +name = "indoc" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5" + [[package]] name = "insta" version = "1.41.1" @@ -1972,6 +2009,19 @@ dependencies = [ "similar", ] +[[package]] +name = "instability" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "894813a444908c0c8c0e221b041771d107c4a21de1d317dc49bcc66e3c9e5b3f" +dependencies = [ + "darling 0.20.10", + "indoc", + "proc-macro2", + "quote", + "syn 2.0.96", +] + [[package]] name = "ioctl-rs" version = "0.1.6" @@ -2256,6 +2306,18 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "mio" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" +dependencies = [ + "libc", + "log", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys 0.52.0", +] + [[package]] name = "new_debug_unreachable" version = "1.0.6" @@ -2653,9 +2715,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.89" +version = "1.0.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e" +checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" dependencies = [ "unicode-ident", ] @@ -2811,7 +2873,7 @@ checksum = "d16546c5b5962abf8ce6e2881e722b4e0ae3b6f1a08a26ae3573c55853ca68d3" dependencies = [ "bitflags 2.6.0", "cassowary", - "compact_str", + "compact_str 0.7.1", "crossterm 0.27.0", "itertools 0.13.0", "lru", @@ -2824,6 +2886,27 @@ dependencies = [ "unicode-width 0.1.14", ] +[[package]] +name = "ratatui" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eabd94c2f37801c20583fc49dd5cd6b0ba68c716787c2dd6ed18571e1e63117b" +dependencies = [ + "bitflags 2.6.0", + "cassowary", + "compact_str 0.8.1", + "crossterm 0.28.1", + "indoc", + "instability", + "itertools 0.13.0", + "lru", + "paste", + "strum", + "unicode-segmentation", + "unicode-truncate", + "unicode-width 0.2.0", +] + [[package]] name = "rayon" version = "1.10.0" @@ -3022,7 +3105,7 @@ checksum = "adfb2974d3500342f111c2642357b8eda61977b8d4f2994274aa07a0ad834069" dependencies = [ "clap 4.5.23", "diffy", - "scm-record", + "scm-record 0.4.0", "sha1", "thiserror 1.0.69", "tracing", @@ -3038,7 +3121,7 @@ dependencies = [ "cassowary", "crossterm 0.27.0", "num-traits", - "ratatui", + "ratatui 0.27.0", "serde", "serde_json", "thiserror 1.0.69", @@ -3046,6 +3129,23 @@ dependencies = [ "unicode-width 0.1.14", ] +[[package]] +name = "scm-record" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2165c1b15fb2285ed7d1c281501826d451ffa3bf4928de95020a1a103e2c256" +dependencies = [ + "cassowary", + "crossterm 0.28.1", + "num-traits", + "ratatui 0.29.0", + "serde", + "serde_json", + "thiserror 2.0.9", + "tracing", + "unicode-width 0.2.0", +] + [[package]] name = "scopeguard" version = "1.2.0" @@ -3069,7 +3169,7 @@ checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.96", ] [[package]] @@ -3191,7 +3291,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34db1a06d485c9142248b7a054f034b349b212551f3dfd19c94d45a754a217cd" dependencies = [ "libc", - "mio", + "mio 0.8.11", + "mio 1.0.3", "signal-hook", ] @@ -3282,7 +3383,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d904e7009df136af5297832a3ace3370cd14ff1546a232f4f185036c2736fcac" dependencies = [ "quote", - "syn 2.0.87", + "syn 2.0.96", ] [[package]] @@ -3341,7 +3442,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.87", + "syn 2.0.96", ] [[package]] @@ -3357,9 +3458,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.87" +version = "2.0.96" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" +checksum = "d5d0adab1ae378d7f53bdebc67a39f1f151407ef230f0ce2883572f5d8985c80" dependencies = [ "proc-macro2", "quote", @@ -3466,7 +3567,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.96", ] [[package]] @@ -3477,7 +3578,7 @@ checksum = "7b50fa271071aae2e6ee85f842e2e28ba8cd2c5fb67f11fcb1fd70b276f9e7d4" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.96", ] [[package]] @@ -3585,7 +3686,7 @@ checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.96", ] [[package]] @@ -3869,7 +3970,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.96", "wasm-bindgen-shared", ] @@ -3891,7 +3992,7 @@ checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.96", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -3992,7 +4093,7 @@ checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.96", ] [[package]] @@ -4003,7 +4104,7 @@ checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.96", ] [[package]] @@ -4262,5 +4363,5 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.96", ] diff --git a/Cargo.toml b/Cargo.toml index 765045d07..2cbed0680 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -88,7 +88,7 @@ regex = "1.11.0" rusqlite = { version = "0.29.0", features = ["bundled"] } scm-bisect = { version = "0.3.0", path = "scm-bisect" } scm-diff-editor = "0.4.0" -scm-record = "0.4.0" +scm-record = "0.5.0" serde = { version = "1.0.217", features = ["derive"] } serde_json = "1.0.134" shell-words = "1.1.0" From 9f1401941916a4246cb610a5c976b0b70db86536 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Jan 2025 18:05:25 +0000 Subject: [PATCH 063/146] build: bump thiserror from 2.0.9 to 2.0.11 Bumps [thiserror](https://github.com/dtolnay/thiserror) from 2.0.9 to 2.0.11. - [Release notes](https://github.com/dtolnay/thiserror/releases) - [Commits](https://github.com/dtolnay/thiserror/compare/2.0.9...2.0.11) --- updated-dependencies: - dependency-name: thiserror dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 24 ++++++++++++------------ Cargo.toml | 2 +- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index efaa248d1..4db5f06df 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1485,7 +1485,7 @@ dependencies = [ "regex", "rusqlite", "scm-diff-editor", - "thiserror 2.0.9", + "thiserror 2.0.11", "tracing", "tracing-chrome", "tracing-error", @@ -1574,7 +1574,7 @@ dependencies = [ "shell-words", "tempfile", "textwrap", - "thiserror 2.0.9", + "thiserror 2.0.11", "tracing", "tracing-chrome", "tracing-error", @@ -1679,7 +1679,7 @@ dependencies = [ "rayon", "regex", "serde_json", - "thiserror 2.0.9", + "thiserror 2.0.11", "tracing", ] @@ -1738,7 +1738,7 @@ dependencies = [ "serde", "serde_json", "tempfile", - "thiserror 2.0.9", + "thiserror 2.0.11", "tracing", ] @@ -1769,7 +1769,7 @@ dependencies = [ "serde", "serde_json", "tempfile", - "thiserror 2.0.9", + "thiserror 2.0.11", "tracing", ] @@ -3093,7 +3093,7 @@ dependencies = [ "itertools 0.14.0", "maplit", "proptest", - "thiserror 2.0.9", + "thiserror 2.0.11", "tracing", ] @@ -3141,7 +3141,7 @@ dependencies = [ "ratatui 0.29.0", "serde", "serde_json", - "thiserror 2.0.9", + "thiserror 2.0.11", "tracing", "unicode-width 0.2.0", ] @@ -3552,11 +3552,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.9" +version = "2.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f072643fd0190df67a8bab670c20ef5d8737177d6ac6b2e9a236cb096206b2cc" +checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc" dependencies = [ - "thiserror-impl 2.0.9", + "thiserror-impl 2.0.11", ] [[package]] @@ -3572,9 +3572,9 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "2.0.9" +version = "2.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b50fa271071aae2e6ee85f842e2e28ba8cd2c5fb67f11fcb1fd70b276f9e7d4" +checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 2cbed0680..0b3093517 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -95,7 +95,7 @@ shell-words = "1.1.0" skim = "0.10.4" tempfile = "3.15.0" textwrap = "0.16.1" -thiserror = "2.0.9" +thiserror = "2.0.11" tracing = "0.1.41" tracing-chrome = "0.6.0" tracing-error = "0.2.1" From b732b2f19a927480ae8fcd182cc108673fc39003 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Jan 2025 18:36:13 +0000 Subject: [PATCH 064/146] build: bump cc from 1.2.7 to 1.2.9 Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.2.7 to 1.2.9. - [Release notes](https://github.com/rust-lang/cc-rs/releases) - [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md) - [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.7...cc-v1.2.9) --- updated-dependencies: - dependency-name: cc dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4db5f06df..5f13b3a0f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -327,9 +327,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.7" +version = "1.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a012a0df96dd6d06ba9a1b29d6402d1a5d77c6befd2566afdc26e10603dc93d7" +checksum = "c8293772165d9345bdaaa39b45b2109591e63fe5e6fbc23c6ff930a048aa310b" dependencies = [ "jobserver", "libc", diff --git a/Cargo.toml b/Cargo.toml index 0b3093517..70e9aa72c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -104,7 +104,7 @@ vt100 = "0.15.2" # dev-dependencies assert_cmd = "2.0.16" -cc = "1.2.7" +cc = "1.2.9" criterion = { version = "0.5.1", features = ["html_reports"] } insta = "1.41.1" maplit = "1.0.2" From 1ee6a583fbc595dcb21b37ca7e986df3e59e978c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Jan 2025 18:06:08 +0000 Subject: [PATCH 065/146] build: bump clap_mangen from 0.2.24 to 0.2.26 Bumps [clap_mangen](https://github.com/clap-rs/clap) from 0.2.24 to 0.2.26. - [Release notes](https://github.com/clap-rs/clap/releases) - [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md) - [Commits](https://github.com/clap-rs/clap/compare/clap_mangen-v0.2.24...clap_mangen-v0.2.26) --- updated-dependencies: - dependency-name: clap_mangen dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5f13b3a0f..13ee72505 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -479,9 +479,9 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "clap_mangen" -version = "0.2.24" +version = "0.2.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbae9cbfdc5d4fa8711c09bd7b83f644cb48281ac35bf97af3e47b0675864bdf" +checksum = "724842fa9b144f9b89b3f3d371a89f3455eea660361d13a554f68f8ae5d6c13a" dependencies = [ "clap 4.5.23", "roff 0.2.2", diff --git a/Cargo.toml b/Cargo.toml index 70e9aa72c..55bc1eaf0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -41,7 +41,7 @@ chrono = "0.4.39" chrono-english = "0.1.7" chronoutil = "0.2.7" clap = "4.5.23" -clap_mangen = "0.2.22" +clap_mangen = "0.2.26" color-eyre = "0.6.3" concolor = { version = "0.1.1", features = ["auto"] } console = "0.15.10" From 9277146feeb62a5ad69ab1ccf29121cd37c571a2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Jan 2025 18:05:52 +0000 Subject: [PATCH 066/146] build: bump async-trait from 0.1.83 to 0.1.85 Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.83 to 0.1.85. - [Release notes](https://github.com/dtolnay/async-trait/releases) - [Commits](https://github.com/dtolnay/async-trait/compare/0.1.83...0.1.85) --- updated-dependencies: - dependency-name: async-trait dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 13ee72505..ba193a07c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -163,9 +163,9 @@ dependencies = [ [[package]] name = "async-trait" -version = "0.1.83" +version = "0.1.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" +checksum = "3f934833b4b7233644e5848f235df3f57ed8c80f1528a26c3dfa13d2147fa056" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 55bc1eaf0..16b2d9365 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -33,7 +33,7 @@ tag = false [workspace.dependencies] anyhow = "1.0.95" -async-trait = "0.1.83" +async-trait = "0.1.85" bstr = "1.11.3" bugreport = "0.5.1" chashmap = "2.2.2" From 8352ad47accb70e8689972ef8d72904c116a9d61 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Jan 2025 18:05:36 +0000 Subject: [PATCH 067/146] build: bump insta from 1.41.1 to 1.42.0 Bumps [insta](https://github.com/mitsuhiko/insta) from 1.41.1 to 1.42.0. - [Release notes](https://github.com/mitsuhiko/insta/releases) - [Changelog](https://github.com/mitsuhiko/insta/blob/master/CHANGELOG.md) - [Commits](https://github.com/mitsuhiko/insta/compare/1.41.1...1.42.0) --- updated-dependencies: - dependency-name: insta dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Cargo.lock | 6 +++--- Cargo.toml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ba193a07c..1867aa7e4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1999,13 +1999,13 @@ checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5" [[package]] name = "insta" -version = "1.41.1" +version = "1.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e9ffc4d4892617c50a928c52b2961cb5174b6fc6ebf252b2fac9d21955c48b8" +checksum = "6513e4067e16e69ed1db5ab56048ed65db32d10ba5fc1217f5393f8f17d8b5a5" dependencies = [ "console", - "lazy_static", "linked-hash-map", + "once_cell", "similar", ] diff --git a/Cargo.toml b/Cargo.toml index 16b2d9365..41cfaeb53 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -106,5 +106,5 @@ vt100 = "0.15.2" assert_cmd = "2.0.16" cc = "1.2.9" criterion = { version = "0.5.1", features = ["html_reports"] } -insta = "1.41.1" +insta = "1.42.0" maplit = "1.0.2" From acc0965db8dd9a308c5a646b7227d6b9c04396fa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Jan 2025 18:55:37 +0000 Subject: [PATCH 068/146] build: bump serde_json from 1.0.134 to 1.0.137 Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.134 to 1.0.137. - [Release notes](https://github.com/serde-rs/json/releases) - [Commits](https://github.com/serde-rs/json/compare/v1.0.134...v1.0.137) --- updated-dependencies: - dependency-name: serde_json dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1867aa7e4..55f97ceda 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3174,9 +3174,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.134" +version = "1.0.137" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d00f4175c42ee48b15416f6193a959ba3a0d67fc699a0db9ad12df9f83991c7d" +checksum = "930cfb6e6abf99298aaad7d29abbef7a9999a9a8806a40088f55f0dcec03146b" dependencies = [ "itoa", "memchr", diff --git a/Cargo.toml b/Cargo.toml index 41cfaeb53..3e652aa8f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -90,7 +90,7 @@ scm-bisect = { version = "0.3.0", path = "scm-bisect" } scm-diff-editor = "0.4.0" scm-record = "0.5.0" serde = { version = "1.0.217", features = ["derive"] } -serde_json = "1.0.134" +serde_json = "1.0.137" shell-words = "1.1.0" skim = "0.10.4" tempfile = "3.15.0" From cb497fc347828d8f32adea717c4683be37c3a4b6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Jan 2025 18:55:26 +0000 Subject: [PATCH 069/146] build: bump clap from 4.5.23 to 4.5.26 Bumps [clap](https://github.com/clap-rs/clap) from 4.5.23 to 4.5.26. - [Release notes](https://github.com/clap-rs/clap/releases) - [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md) - [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.5.23...clap_complete-v4.5.26) --- updated-dependencies: - dependency-name: clap dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 26 +++++++++++++------------- Cargo.toml | 2 +- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 55f97ceda..016f7811e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -430,9 +430,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.23" +version = "4.5.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3135e7ec2ef7b10c6ed8950f0f792ed96ee093fa088608f1c76e569722700c84" +checksum = "a8eb5e908ef3a6efbe1ed62520fb7287959888c88485abe072543190ecc66783" dependencies = [ "clap_builder", "clap_derive", @@ -440,9 +440,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.23" +version = "4.5.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30582fc632330df2bd26877bde0c1f4470d57c582bbc070376afcd04d8cb4838" +checksum = "96b01801b5fc6a0a232407abc821660c9c6d25a1cafc0d4f85f29fb8d9afc121" dependencies = [ "anstream", "anstyle", @@ -452,9 +452,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.18" +version = "4.5.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" +checksum = "54b755194d6389280185988721fffba69495eed5ee9feeee9a599b53db80318c" dependencies = [ "heck", "proc-macro2", @@ -483,7 +483,7 @@ version = "0.2.26" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "724842fa9b144f9b89b3f3d371a89f3455eea660361d13a554f68f8ae5d6c13a" dependencies = [ - "clap 4.5.23", + "clap 4.5.26", "roff 0.2.2", ] @@ -604,7 +604,7 @@ dependencies = [ "anes", "cast", "ciborium", - "clap 4.5.23", + "clap 4.5.26", "criterion-plot", "is-terminal", "itertools 0.10.5", @@ -1527,7 +1527,7 @@ dependencies = [ name = "git-branchless-invoke" version = "0.10.0" dependencies = [ - "clap 4.5.23", + "clap 4.5.26", "color-eyre", "cursive_core", "eyre", @@ -1616,7 +1616,7 @@ dependencies = [ name = "git-branchless-opts" version = "0.10.0" dependencies = [ - "clap 4.5.23", + "clap 4.5.26", "clap_mangen", "git-branchless-lib", "itertools 0.14.0", @@ -1720,7 +1720,7 @@ dependencies = [ name = "git-branchless-submit" version = "0.10.0" dependencies = [ - "clap 4.5.23", + "clap 4.5.26", "cursive_core", "esl01-dag", "eyre", @@ -1748,7 +1748,7 @@ version = "0.10.0" dependencies = [ "assert_cmd", "bstr", - "clap 4.5.23", + "clap 4.5.26", "crossbeam", "cursive", "esl01-dag", @@ -3103,7 +3103,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adfb2974d3500342f111c2642357b8eda61977b8d4f2994274aa07a0ad834069" dependencies = [ - "clap 4.5.23", + "clap 4.5.26", "diffy", "scm-record 0.4.0", "sha1", diff --git a/Cargo.toml b/Cargo.toml index 3e652aa8f..9f3118b0f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -40,7 +40,7 @@ chashmap = "2.2.2" chrono = "0.4.39" chrono-english = "0.1.7" chronoutil = "0.2.7" -clap = "4.5.23" +clap = "4.5.26" clap_mangen = "0.2.26" color-eyre = "0.6.3" concolor = { version = "0.1.1", features = ["auto"] } From 16aab34ecca9105427ecce390633660dcb442d95 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Jan 2025 18:54:51 +0000 Subject: [PATCH 070/146] build: bump indexmap from 2.7.0 to 2.7.1 Bumps [indexmap](https://github.com/indexmap-rs/indexmap) from 2.7.0 to 2.7.1. - [Changelog](https://github.com/indexmap-rs/indexmap/blob/master/RELEASES.md) - [Commits](https://github.com/indexmap-rs/indexmap/compare/2.7.0...2.7.1) --- updated-dependencies: - dependency-name: indexmap dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 12 ++++++------ Cargo.toml | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 016f7811e..c309dc665 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1729,7 +1729,7 @@ dependencies = [ "git-branchless-opts", "git-branchless-revset", "git-branchless-test", - "indexmap 2.7.0", + "indexmap 2.7.1", "insta", "itertools 0.14.0", "lazy_static", @@ -1758,7 +1758,7 @@ dependencies = [ "git-branchless-lib", "git-branchless-opts", "git-branchless-revset", - "indexmap 2.7.0", + "indexmap 2.7.1", "insta", "itertools 0.14.0", "lazy_static", @@ -1969,9 +1969,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.7.0" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" +checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652" dependencies = [ "equivalent", "hashbrown 0.15.0", @@ -2580,7 +2580,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset", - "indexmap 2.7.0", + "indexmap 2.7.1", ] [[package]] @@ -3088,7 +3088,7 @@ checksum = "088c5d71572124929ea7549a8ce98e1a6fd33d0a38367b09027b382e67c033db" name = "scm-bisect" version = "0.3.0" dependencies = [ - "indexmap 2.7.0", + "indexmap 2.7.1", "insta", "itertools 0.14.0", "maplit", diff --git a/Cargo.toml b/Cargo.toml index 9f3118b0f..01e6df9c2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -71,7 +71,7 @@ git-branchless-test = { version = "0.10.0", path = "git-branchless-test" } git-branchless-undo = { version = "0.10.0", path = "git-branchless-undo" } git2 = { version = "0.20.0", default-features = false } glob = "0.3.2" -indexmap = "2.7.0" +indexmap = "2.7.1" indicatif = { version = "0.17.9", features = ["improved_unicode"] } itertools = "0.14.0" lalrpop = "0.19.12" From ca7bddba1e64a2c470af1128ca87281d9af53501 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Jan 2025 20:41:37 +0000 Subject: [PATCH 071/146] build: bump cc from 1.2.9 to 1.2.10 Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.2.9 to 1.2.10. - [Release notes](https://github.com/rust-lang/cc-rs/releases) - [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md) - [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.9...cc-v1.2.10) --- updated-dependencies: - dependency-name: cc dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c309dc665..13900e373 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -327,9 +327,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.9" +version = "1.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8293772165d9345bdaaa39b45b2109591e63fe5e6fbc23c6ff930a048aa310b" +checksum = "13208fcbb66eaeffe09b99fffbe1af420f00a7b35aa99ad683dfc1aa76145229" dependencies = [ "jobserver", "libc", diff --git a/Cargo.toml b/Cargo.toml index 01e6df9c2..bf8fd3d38 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -104,7 +104,7 @@ vt100 = "0.15.2" # dev-dependencies assert_cmd = "2.0.16" -cc = "1.2.9" +cc = "1.2.10" criterion = { version = "0.5.1", features = ["html_reports"] } insta = "1.42.0" maplit = "1.0.2" From 012899d6bfd140e4bfdafa920ab39b642b329725 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Feb 2025 18:48:59 +0000 Subject: [PATCH 072/146] build: bump async-trait from 0.1.85 to 0.1.86 Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.85 to 0.1.86. - [Release notes](https://github.com/dtolnay/async-trait/releases) - [Commits](https://github.com/dtolnay/async-trait/compare/0.1.85...0.1.86) --- updated-dependencies: - dependency-name: async-trait dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 13900e373..b8ac3f717 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -163,9 +163,9 @@ dependencies = [ [[package]] name = "async-trait" -version = "0.1.85" +version = "0.1.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f934833b4b7233644e5848f235df3f57ed8c80f1528a26c3dfa13d2147fa056" +checksum = "644dd749086bf3771a2fbc5f256fdb982d53f011c7d5d560304eafeecebce79d" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index bf8fd3d38..c59d6acce 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -33,7 +33,7 @@ tag = false [workspace.dependencies] anyhow = "1.0.95" -async-trait = "0.1.85" +async-trait = "0.1.86" bstr = "1.11.3" bugreport = "0.5.1" chashmap = "2.2.2" From ea205cdb973a4a387da83040856195dcde392a88 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Feb 2025 18:49:34 +0000 Subject: [PATCH 073/146] build: bump indicatif from 0.17.9 to 0.17.11 Bumps [indicatif](https://github.com/console-rs/indicatif) from 0.17.9 to 0.17.11. - [Release notes](https://github.com/console-rs/indicatif/releases) - [Commits](https://github.com/console-rs/indicatif/compare/0.17.9...0.17.11) --- updated-dependencies: - dependency-name: indicatif dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b8ac3f717..ba0b453a4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1979,9 +1979,9 @@ dependencies = [ [[package]] name = "indicatif" -version = "0.17.9" +version = "0.17.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbf675b85ed934d3c67b5c5469701eec7db22689d0a2139d856e0925fa28b281" +checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235" dependencies = [ "console", "number_prefix", diff --git a/Cargo.toml b/Cargo.toml index c59d6acce..fceffd0b8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -72,7 +72,7 @@ git-branchless-undo = { version = "0.10.0", path = "git-branchless-undo" } git2 = { version = "0.20.0", default-features = false } glob = "0.3.2" indexmap = "2.7.1" -indicatif = { version = "0.17.9", features = ["improved_unicode"] } +indicatif = { version = "0.17.11", features = ["improved_unicode"] } itertools = "0.14.0" lalrpop = "0.19.12" lalrpop-util = "0.19.12" From 32dd4b6186d1e306a3c23a127a61fe61794067f5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Feb 2025 18:49:13 +0000 Subject: [PATCH 074/146] build: bump serde_json from 1.0.137 to 1.0.138 Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.137 to 1.0.138. - [Release notes](https://github.com/serde-rs/json/releases) - [Commits](https://github.com/serde-rs/json/compare/v1.0.137...v1.0.138) --- updated-dependencies: - dependency-name: serde_json dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ba0b453a4..05a4d4734 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3174,9 +3174,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.137" +version = "1.0.138" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "930cfb6e6abf99298aaad7d29abbef7a9999a9a8806a40088f55f0dcec03146b" +checksum = "d434192e7da787e94a6ea7e9670b26a036d0ca41e0b7efb2676dd32bae872949" dependencies = [ "itoa", "memchr", diff --git a/Cargo.toml b/Cargo.toml index fceffd0b8..454d835da 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -90,7 +90,7 @@ scm-bisect = { version = "0.3.0", path = "scm-bisect" } scm-diff-editor = "0.4.0" scm-record = "0.5.0" serde = { version = "1.0.217", features = ["derive"] } -serde_json = "1.0.137" +serde_json = "1.0.138" shell-words = "1.1.0" skim = "0.10.4" tempfile = "3.15.0" From 7cb4e051d6e008b3337d51e2f468127e3f54a6dd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Jan 2025 18:21:39 +0000 Subject: [PATCH 075/146] build: bump insta from 1.42.0 to 1.42.1 Bumps [insta](https://github.com/mitsuhiko/insta) from 1.42.0 to 1.42.1. - [Release notes](https://github.com/mitsuhiko/insta/releases) - [Changelog](https://github.com/mitsuhiko/insta/blob/master/CHANGELOG.md) - [Commits](https://github.com/mitsuhiko/insta/compare/1.42.0...1.42.1) --- updated-dependencies: - dependency-name: insta dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 25 +++++++++++++++++++++++-- Cargo.toml | 2 +- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 05a4d4734..94a70825b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1999,13 +1999,14 @@ checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5" [[package]] name = "insta" -version = "1.42.0" +version = "1.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6513e4067e16e69ed1db5ab56048ed65db32d10ba5fc1217f5393f8f17d8b5a5" +checksum = "71c1b125e30d93896b365e156c33dadfffab45ee8400afcbba4752f59de08a86" dependencies = [ "console", "linked-hash-map", "once_cell", + "pin-project", "similar", ] @@ -2592,6 +2593,26 @@ dependencies = [ "siphasher", ] +[[package]] +name = "pin-project" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e2ec53ad785f4d35dac0adea7f7dc6f1bb277ad84a680c7afefeae05d1f5916" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d56a66c0c55993aa927429d0f8a0abfd74f084e4d9c192cffed01e418d83eefb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", +] + [[package]] name = "pin-project-lite" version = "0.2.15" diff --git a/Cargo.toml b/Cargo.toml index 454d835da..d03a6f900 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -106,5 +106,5 @@ vt100 = "0.15.2" assert_cmd = "2.0.16" cc = "1.2.10" criterion = { version = "0.5.1", features = ["html_reports"] } -insta = "1.42.0" +insta = "1.42.1" maplit = "1.0.2" From 10fdf3d75489bd9e16e2a4c9d26f83f328f1158a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Jan 2025 18:22:01 +0000 Subject: [PATCH 076/146] build: bump clap from 4.5.26 to 4.5.27 Bumps [clap](https://github.com/clap-rs/clap) from 4.5.26 to 4.5.27. - [Release notes](https://github.com/clap-rs/clap/releases) - [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md) - [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.5.26...clap_complete-v4.5.27) --- updated-dependencies: - dependency-name: clap dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 22 +++++++++++----------- Cargo.toml | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 94a70825b..7125f6c70 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -430,9 +430,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.26" +version = "4.5.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8eb5e908ef3a6efbe1ed62520fb7287959888c88485abe072543190ecc66783" +checksum = "769b0145982b4b48713e01ec42d61614425f27b7058bda7180a3a41f30104796" dependencies = [ "clap_builder", "clap_derive", @@ -440,9 +440,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.26" +version = "4.5.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96b01801b5fc6a0a232407abc821660c9c6d25a1cafc0d4f85f29fb8d9afc121" +checksum = "1b26884eb4b57140e4d2d93652abfa49498b938b3c9179f9fc487b0acc3edad7" dependencies = [ "anstream", "anstyle", @@ -483,7 +483,7 @@ version = "0.2.26" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "724842fa9b144f9b89b3f3d371a89f3455eea660361d13a554f68f8ae5d6c13a" dependencies = [ - "clap 4.5.26", + "clap 4.5.27", "roff 0.2.2", ] @@ -604,7 +604,7 @@ dependencies = [ "anes", "cast", "ciborium", - "clap 4.5.26", + "clap 4.5.27", "criterion-plot", "is-terminal", "itertools 0.10.5", @@ -1527,7 +1527,7 @@ dependencies = [ name = "git-branchless-invoke" version = "0.10.0" dependencies = [ - "clap 4.5.26", + "clap 4.5.27", "color-eyre", "cursive_core", "eyre", @@ -1616,7 +1616,7 @@ dependencies = [ name = "git-branchless-opts" version = "0.10.0" dependencies = [ - "clap 4.5.26", + "clap 4.5.27", "clap_mangen", "git-branchless-lib", "itertools 0.14.0", @@ -1720,7 +1720,7 @@ dependencies = [ name = "git-branchless-submit" version = "0.10.0" dependencies = [ - "clap 4.5.26", + "clap 4.5.27", "cursive_core", "esl01-dag", "eyre", @@ -1748,7 +1748,7 @@ version = "0.10.0" dependencies = [ "assert_cmd", "bstr", - "clap 4.5.26", + "clap 4.5.27", "crossbeam", "cursive", "esl01-dag", @@ -3124,7 +3124,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adfb2974d3500342f111c2642357b8eda61977b8d4f2994274aa07a0ad834069" dependencies = [ - "clap 4.5.26", + "clap 4.5.27", "diffy", "scm-record 0.4.0", "sha1", diff --git a/Cargo.toml b/Cargo.toml index d03a6f900..e29518c8e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -40,7 +40,7 @@ chashmap = "2.2.2" chrono = "0.4.39" chrono-english = "0.1.7" chronoutil = "0.2.7" -clap = "4.5.26" +clap = "4.5.27" clap_mangen = "0.2.26" color-eyre = "0.6.3" concolor = { version = "0.1.1", features = ["auto"] } From 7ee189be452694186b6d3d73d4b620c0fb890dd8 Mon Sep 17 00:00:00 2001 From: Clayton Carter Date: Thu, 23 Jan 2025 23:00:34 -0400 Subject: [PATCH 077/146] refactor(switch): split match into explicit conditions --- git-branchless-navigation/src/lib.rs | 36 +++++++++++++--------------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/git-branchless-navigation/src/lib.rs b/git-branchless-navigation/src/lib.rs index 8361ee730..d9517d16c 100644 --- a/git-branchless-navigation/src/lib.rs +++ b/git-branchless-navigation/src/lib.rs @@ -474,7 +474,7 @@ pub fn switch( switch_options: &SwitchOptions, ) -> EyreExitOr<()> { let SwitchOptions { - interactive: _, + interactive, branch_name, force, merge, @@ -510,27 +510,23 @@ pub fn switch( false, )?; - let initial_query = match switch_options { - SwitchOptions { - interactive: true, - branch_name: _, - force: _, - merge: _, - detach: _, - target, - } => Some(target.clone().unwrap_or_default()), - SwitchOptions { - interactive: false, - branch_name: _, - force: _, - merge: _, - detach: _, - target: _, - } => None, + enum Target { + /// The (possibly empty) target expression should be used as the initial + /// query in the commit selector. + Interactive(String), + + /// No target expression was specified. + None, + } + let initial_query = match (interactive, target) { + (true, Some(target)) => Target::Interactive(target.clone()), + (true, None) => Target::Interactive(String::new()), + (false, Some(_)) => Target::None, + (false, None) => Target::None, }; let target: Option = match initial_query { - None => target.clone().map(CheckoutTarget::Unknown), - Some(initial_query) => { + Target::None => None, + Target::Interactive(initial_query) => { match prompt_select_commit( None, &initial_query, From 34584a0cfb158127bd93c6c043e2af28a8f47526 Mon Sep 17 00:00:00 2001 From: Clayton Carter Date: Thu, 23 Jan 2025 23:12:51 -0400 Subject: [PATCH 078/146] feat(switch): accept a revset as target --- git-branchless-navigation/src/lib.rs | 50 ++++++++++++++++++-- git-branchless-opts/src/lib.rs | 4 +- git-branchless/tests/test_navigation.rs | 61 +++++++++++++++++++++++++ 3 files changed, 109 insertions(+), 6 deletions(-) diff --git a/git-branchless-navigation/src/lib.rs b/git-branchless-navigation/src/lib.rs index d9517d16c..729a3603d 100644 --- a/git-branchless-navigation/src/lib.rs +++ b/git-branchless-navigation/src/lib.rs @@ -25,11 +25,11 @@ use lib::core::repo_ext::RepoExt; use lib::util::{ExitCode, EyreExitOr}; use tracing::{instrument, warn}; -use git_branchless_opts::{SwitchOptions, TraverseCommitsOptions}; -use git_branchless_revset::resolve_default_smartlog_commits; +use git_branchless_opts::{ResolveRevsetOptions, Revset, SwitchOptions, TraverseCommitsOptions}; +use git_branchless_revset::{resolve_commits, resolve_default_smartlog_commits}; use git_branchless_smartlog::make_smartlog_graph; use lib::core::config::get_next_interactive; -use lib::core::dag::{sorted_commit_set, CommitSet, Dag}; +use lib::core::dag::{sorted_commit_set, union_all, CommitSet, Dag}; use lib::core::effects::Effects; use lib::core::eventlog::{EventLogDb, EventReplayer}; use lib::core::formatting::Pluralize; @@ -515,17 +515,28 @@ pub fn switch( /// query in the commit selector. Interactive(String), + /// The target expression is probably a git revision or reference and + /// should be passed directly to git for resolution. + Passthrough(String), + + /// The target expression should be interpreted as a revset. + Revset(Revset), + /// No target expression was specified. None, } let initial_query = match (interactive, target) { - (true, Some(target)) => Target::Interactive(target.clone()), + (true, Some(target)) => Target::Interactive(target.to_string()), (true, None) => Target::Interactive(String::new()), - (false, Some(_)) => Target::None, + (false, Some(target)) => match repo.revparse_single_commit(target.to_string().as_ref()) { + Ok(Some(_)) => Target::Passthrough(target.to_string()), + Ok(None) | Err(_) => Target::Revset(target.clone()), + }, (false, None) => Target::None, }; let target: Option = match initial_query { Target::None => None, + Target::Passthrough(target) => Some(CheckoutTarget::Unknown(target)), Target::Interactive(initial_query) => { match prompt_select_commit( None, @@ -548,6 +559,35 @@ pub fn switch( None => return Ok(Err(ExitCode(1))), } } + Target::Revset(target) => { + let commit_sets = resolve_commits( + effects, + &repo, + &mut dag, + &[target.clone()], + &ResolveRevsetOptions::default(), + )?; + + let commit_set = union_all(&commit_sets); + let commit_set = dag.query_heads(commit_set)?; + let commits = sorted_commit_set(&repo, &dag, &commit_set)?; + + match commits.as_slice() { + [commit] => Some(CheckoutTarget::Unknown(commit.get_oid().to_string())), + [] | [..] => { + writeln!( + effects.get_error_stream(), + "Cannot switch to target: expected '{target}' to contain 1 head, but found {}.", + commits.len() + )?; + writeln!( + effects.get_error_stream(), + "Target should be a commit or a set of commits with exactly 1 head. Aborting." + )?; + return Ok(Err(ExitCode(1))); + } + } + } }; let additional_args = { diff --git a/git-branchless-opts/src/lib.rs b/git-branchless-opts/src/lib.rs index 348b5b55f..702ec1cbc 100644 --- a/git-branchless-opts/src/lib.rs +++ b/git-branchless-opts/src/lib.rs @@ -172,13 +172,15 @@ pub struct SwitchOptions { /// The commit or branch to check out. /// + /// If a revset is provided, it must evaluate to set with exactly 1 head. + /// /// If this is not provided, then interactive commit selection starts as /// if `--interactive` were passed. /// /// If this is provided and the `--interactive` flag is passed, this /// text is used to pre-fill the interactive commit selector. #[clap(value_parser)] - pub target: Option, + pub target: Option, } /// Internal use. diff --git a/git-branchless/tests/test_navigation.rs b/git-branchless/tests/test_navigation.rs index 1e3221d0e..81115274b 100644 --- a/git-branchless/tests/test_navigation.rs +++ b/git-branchless/tests/test_navigation.rs @@ -851,6 +851,67 @@ fn test_navigation_switch_target_only() -> eyre::Result<()> { Ok(()) } +#[test] +fn test_navigation_switch_revset() -> eyre::Result<()> { + let git = make_git()?; + git.init_repo()?; + + git.detach_head()?; + git.commit_file("test1", 1)?; + git.run(&["checkout", "HEAD~"])?; + + { + { + let (stdout, _stderr) = git.branchless("smartlog", &[])?; + insta::assert_snapshot!(stdout, @r###" + @ f777ecc (master) create initial.txt + | + o 62fc20d create test1.txt + "###); + } + + let (stdout, _stderr) = git.branchless("switch", &["descendants(master)"])?; + insta::assert_snapshot!(stdout, @r###" + branchless: running command: checkout 62fc20d2a290daea0d52bdc2ed2ad4be6491010e + O f777ecc (master) create initial.txt + | + @ 62fc20d create test1.txt + "###); + } + + git.run(&["checkout", "HEAD~"])?; + git.commit_file("test2", 2)?; + git.run(&["checkout", "HEAD~"])?; + + { + { + let (stdout, _stderr) = git.branchless("smartlog", &[])?; + insta::assert_snapshot!(stdout, @r###" + @ f777ecc (master) create initial.txt + |\ + | o 62fc20d create test1.txt + | + o fe65c1f create test2.txt + "###); + } + + let (_stdout, stderr) = git.branchless_with_options( + "switch", + &["descendants(master)"], + &GitRunOptions { + expected_exit_code: 1, + ..Default::default() + }, + )?; + insta::assert_snapshot!(stderr, @r###" + Cannot switch to target: expected 'descendants(master)' to contain 1 head, but found 2. + Target should be a commit or a set of commits with exactly 1 head. Aborting. + "###); + } + + Ok(()) +} + #[test] #[cfg(unix)] fn test_switch_auto_switch_interactive() -> eyre::Result<()> { From b0bc6726f3d162f5e81c6f123641824c10c52361 Mon Sep 17 00:00:00 2001 From: Clayton Carter Date: Thu, 23 Jan 2025 23:21:26 -0400 Subject: [PATCH 079/146] fix(switch): support `-` shorthand --- git-branchless-lib/src/git/repo.rs | 3 ++ git-branchless/tests/test_navigation.rs | 61 +++++++++++++++++++++++++ 2 files changed, 64 insertions(+) diff --git a/git-branchless-lib/src/git/repo.rs b/git-branchless-lib/src/git/repo.rs index 9725e1037..387f5a2c1 100644 --- a/git-branchless-lib/src/git/repo.rs +++ b/git-branchless-lib/src/git/repo.rs @@ -938,6 +938,9 @@ impl Repo { return Err(Error::UnsupportedRevParseSpec(spec.to_owned())); } + // `libgit2` doesn't understand that `-` is short for `@{-1}` + let spec = if spec == "-" { "@{-1}" } else { spec }; + match self.inner.revparse_single(spec) { Ok(object) => match object.into_commit() { Ok(commit) => Ok(Some(Commit { inner: commit })), diff --git a/git-branchless/tests/test_navigation.rs b/git-branchless/tests/test_navigation.rs index 81115274b..6391f7f90 100644 --- a/git-branchless/tests/test_navigation.rs +++ b/git-branchless/tests/test_navigation.rs @@ -909,6 +909,67 @@ fn test_navigation_switch_revset() -> eyre::Result<()> { "###); } + { + // switching back to "last checkout" + let (stdout, _stderr) = git.branchless("switch", &["@{-1}"])?; + insta::assert_snapshot!(stdout, @r###" + branchless: running command: checkout @{-1} + O f777ecc (master) create initial.txt + |\ + | o 62fc20d create test1.txt + | + @ fe65c1f create test2.txt + "###); + } + + { + // switching back to "last checkout" + let (stdout, _stderr) = git.branchless("switch", &["-"])?; + insta::assert_snapshot!(stdout, @r###" + branchless: running command: checkout - + @ f777ecc (master) create initial.txt + |\ + | o 62fc20d create test1.txt + | + o fe65c1f create test2.txt + "###); + } + + { + // switching back to "last checkout" will also checkout last checked out + // branch, if any + + let (stdout, _stderr) = git.branchless("switch", &["master"])?; + insta::assert_snapshot!(stdout, @r###" + branchless: running command: checkout master + @ f777ecc (> master) create initial.txt + |\ + | o 62fc20d create test1.txt + | + o fe65c1f create test2.txt + "###); + + let (stdout, _stderr) = git.branchless("switch", &["@{-2}"])?; + insta::assert_snapshot!(stdout, @r###" + branchless: running command: checkout @{-2} + O f777ecc (master) create initial.txt + |\ + | o 62fc20d create test1.txt + | + @ fe65c1f create test2.txt + "###); + + let (stdout, _stderr) = git.branchless("switch", &["-"])?; + insta::assert_snapshot!(stdout, @r###" + branchless: running command: checkout - + @ f777ecc (> master) create initial.txt + |\ + | o 62fc20d create test1.txt + | + o fe65c1f create test2.txt + "###); + } + Ok(()) } From f3c1861753abadf36089298851e4c9b2b53ae9e1 Mon Sep 17 00:00:00 2001 From: Clayton Carter Date: Thu, 23 Jan 2025 23:27:41 -0400 Subject: [PATCH 080/146] docs: update CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f1f3b5608..1739ff5a5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - `scm-record` upgraded to [v0.5.0](https://github.com/arxanas/scm-record/releases/tag/v0.5.0). +- (#1463): `git switch` now accepts a revset whose sole head will be checked out ## [v0.10.0] - 2024-10-10 From 8e014d9c2d9da83b797dac4bd6d13da0e15303ae Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Feb 2025 19:27:11 +0000 Subject: [PATCH 081/146] build: bump tempfile from 3.15.0 to 3.16.0 Bumps [tempfile](https://github.com/Stebalien/tempfile) from 3.15.0 to 3.16.0. - [Changelog](https://github.com/Stebalien/tempfile/blob/master/CHANGELOG.md) - [Commits](https://github.com/Stebalien/tempfile/compare/v3.15.0...v3.16.0) --- updated-dependencies: - dependency-name: tempfile dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Cargo.lock | 36 +++++++++++++++++++++++++++++++++--- Cargo.toml | 2 +- 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7125f6c70..d70e5abb8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1441,6 +1441,18 @@ dependencies = [ "wasi 0.11.0+wasi-snapshot-preview1", ] +[[package]] +name = "getrandom" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.13.3+wasi-0.2.2", + "windows-targets 0.52.6", +] + [[package]] name = "gimli" version = "0.28.1" @@ -3504,13 +3516,13 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.15.0" +version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a8a559c81686f576e8cd0290cd2a24a2a9ad80c98b3478856500fcbd7acd704" +checksum = "38c246215d7d24f48ae091a2902398798e05d978b24315d6efbc00ede9a8bb91" dependencies = [ "cfg-if", "fastrand", - "getrandom 0.2.15", + "getrandom 0.3.1", "once_cell", "rustix", "windows-sys 0.59.0", @@ -3969,6 +3981,15 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasi" +version = "0.13.3+wasi-0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2" +dependencies = [ + "wit-bindgen-rt", +] + [[package]] name = "wasm-bindgen" version = "0.2.95" @@ -4360,6 +4381,15 @@ dependencies = [ "winapi", ] +[[package]] +name = "wit-bindgen-rt" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" +dependencies = [ + "bitflags 2.6.0", +] + [[package]] name = "xi-unicode" version = "0.3.0" diff --git a/Cargo.toml b/Cargo.toml index e29518c8e..3b1685601 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -93,7 +93,7 @@ serde = { version = "1.0.217", features = ["derive"] } serde_json = "1.0.138" shell-words = "1.1.0" skim = "0.10.4" -tempfile = "3.15.0" +tempfile = "3.16.0" textwrap = "0.16.1" thiserror = "2.0.11" tracing = "0.1.41" From f2fdedd2031f738c4fd2fd19e0659a605f3963fa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Feb 2025 19:28:04 +0000 Subject: [PATCH 082/146] build: bump clap from 4.5.27 to 4.5.28 Bumps [clap](https://github.com/clap-rs/clap) from 4.5.27 to 4.5.28. - [Release notes](https://github.com/clap-rs/clap/releases) - [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md) - [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.5.27...clap_complete-v4.5.28) --- updated-dependencies: - dependency-name: clap dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 22 +++++++++++----------- Cargo.toml | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d70e5abb8..75bc6ab6c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -430,9 +430,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.27" +version = "4.5.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "769b0145982b4b48713e01ec42d61614425f27b7058bda7180a3a41f30104796" +checksum = "3e77c3243bd94243c03672cb5154667347c457ca271254724f9f393aee1c05ff" dependencies = [ "clap_builder", "clap_derive", @@ -452,9 +452,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.24" +version = "4.5.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54b755194d6389280185988721fffba69495eed5ee9feeee9a599b53db80318c" +checksum = "bf4ced95c6f4a675af3da73304b9ac4ed991640c36374e4b46795c49e17cf1ed" dependencies = [ "heck", "proc-macro2", @@ -483,7 +483,7 @@ version = "0.2.26" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "724842fa9b144f9b89b3f3d371a89f3455eea660361d13a554f68f8ae5d6c13a" dependencies = [ - "clap 4.5.27", + "clap 4.5.28", "roff 0.2.2", ] @@ -604,7 +604,7 @@ dependencies = [ "anes", "cast", "ciborium", - "clap 4.5.27", + "clap 4.5.28", "criterion-plot", "is-terminal", "itertools 0.10.5", @@ -1539,7 +1539,7 @@ dependencies = [ name = "git-branchless-invoke" version = "0.10.0" dependencies = [ - "clap 4.5.27", + "clap 4.5.28", "color-eyre", "cursive_core", "eyre", @@ -1628,7 +1628,7 @@ dependencies = [ name = "git-branchless-opts" version = "0.10.0" dependencies = [ - "clap 4.5.27", + "clap 4.5.28", "clap_mangen", "git-branchless-lib", "itertools 0.14.0", @@ -1732,7 +1732,7 @@ dependencies = [ name = "git-branchless-submit" version = "0.10.0" dependencies = [ - "clap 4.5.27", + "clap 4.5.28", "cursive_core", "esl01-dag", "eyre", @@ -1760,7 +1760,7 @@ version = "0.10.0" dependencies = [ "assert_cmd", "bstr", - "clap 4.5.27", + "clap 4.5.28", "crossbeam", "cursive", "esl01-dag", @@ -3136,7 +3136,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adfb2974d3500342f111c2642357b8eda61977b8d4f2994274aa07a0ad834069" dependencies = [ - "clap 4.5.27", + "clap 4.5.28", "diffy", "scm-record 0.4.0", "sha1", diff --git a/Cargo.toml b/Cargo.toml index 3b1685601..ad4ee067c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -40,7 +40,7 @@ chashmap = "2.2.2" chrono = "0.4.39" chrono-english = "0.1.7" chronoutil = "0.2.7" -clap = "4.5.27" +clap = "4.5.28" clap_mangen = "0.2.26" color-eyre = "0.6.3" concolor = { version = "0.1.1", features = ["auto"] } From 957a4826c814caaaf3f89e9ad824034188c0bb20 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Feb 2025 19:28:27 +0000 Subject: [PATCH 083/146] build: bump cc from 1.2.10 to 1.2.13 Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.2.10 to 1.2.13. - [Release notes](https://github.com/rust-lang/cc-rs/releases) - [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md) - [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.10...cc-v1.2.13) --- updated-dependencies: - dependency-name: cc dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 75bc6ab6c..5ed6a7fd5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -327,9 +327,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.10" +version = "1.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13208fcbb66eaeffe09b99fffbe1af420f00a7b35aa99ad683dfc1aa76145229" +checksum = "c7777341816418c02e033934a09f20dc0ccaf65a5201ef8a450ae0105a573fda" dependencies = [ "jobserver", "libc", diff --git a/Cargo.toml b/Cargo.toml index ad4ee067c..99aafe7a9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -104,7 +104,7 @@ vt100 = "0.15.2" # dev-dependencies assert_cmd = "2.0.16" -cc = "1.2.10" +cc = "1.2.13" criterion = { version = "0.5.1", features = ["html_reports"] } insta = "1.42.1" maplit = "1.0.2" From 36046bc0c0c81a29303fff6923f62ba9d05ed926 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Feb 2025 01:18:58 +0000 Subject: [PATCH 084/146] build: bump once_cell from 1.20.2 to 1.20.3 Bumps [once_cell](https://github.com/matklad/once_cell) from 1.20.2 to 1.20.3. - [Changelog](https://github.com/matklad/once_cell/blob/master/CHANGELOG.md) - [Commits](https://github.com/matklad/once_cell/compare/v1.20.2...v1.20.3) --- updated-dependencies: - dependency-name: once_cell dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5ed6a7fd5..b49524bad 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2483,9 +2483,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.20.2" +version = "1.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" +checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e" [[package]] name = "oorandom" diff --git a/Cargo.toml b/Cargo.toml index 99aafe7a9..d55794454 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -80,7 +80,7 @@ lazy_static = "1.5.0" lib = { package = "git-branchless-lib", version = "0.10.0", path = "git-branchless-lib" } man = "0.3.0" num_cpus = "1.16.0" -once_cell = "1.19.0" +once_cell = "1.20.3" path-slash = "0.2.1" portable-pty = "0.8.1" rayon = "1.10.0" From 570e7795fb0b91c4b1aac1656e1e80ccf869a6dd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Mar 2025 19:25:34 +0000 Subject: [PATCH 085/146] build: bump clap from 4.5.28 to 4.5.32 Bumps [clap](https://github.com/clap-rs/clap) from 4.5.28 to 4.5.32. - [Release notes](https://github.com/clap-rs/clap/releases) - [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md) - [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.5.28...clap_complete-v4.5.32) --- updated-dependencies: - dependency-name: clap dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 26 +++++++++++++------------- Cargo.toml | 2 +- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b49524bad..6e33f05c8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -430,9 +430,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.28" +version = "4.5.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e77c3243bd94243c03672cb5154667347c457ca271254724f9f393aee1c05ff" +checksum = "6088f3ae8c3608d19260cd7445411865a485688711b78b5be70d78cd96136f83" dependencies = [ "clap_builder", "clap_derive", @@ -440,9 +440,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.27" +version = "4.5.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b26884eb4b57140e4d2d93652abfa49498b938b3c9179f9fc487b0acc3edad7" +checksum = "22a7ef7f676155edfb82daa97f99441f3ebf4a58d5e32f295a56259f1b6facc8" dependencies = [ "anstream", "anstyle", @@ -452,9 +452,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.28" +version = "4.5.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf4ced95c6f4a675af3da73304b9ac4ed991640c36374e4b46795c49e17cf1ed" +checksum = "09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7" dependencies = [ "heck", "proc-macro2", @@ -483,7 +483,7 @@ version = "0.2.26" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "724842fa9b144f9b89b3f3d371a89f3455eea660361d13a554f68f8ae5d6c13a" dependencies = [ - "clap 4.5.28", + "clap 4.5.32", "roff 0.2.2", ] @@ -604,7 +604,7 @@ dependencies = [ "anes", "cast", "ciborium", - "clap 4.5.28", + "clap 4.5.32", "criterion-plot", "is-terminal", "itertools 0.10.5", @@ -1539,7 +1539,7 @@ dependencies = [ name = "git-branchless-invoke" version = "0.10.0" dependencies = [ - "clap 4.5.28", + "clap 4.5.32", "color-eyre", "cursive_core", "eyre", @@ -1628,7 +1628,7 @@ dependencies = [ name = "git-branchless-opts" version = "0.10.0" dependencies = [ - "clap 4.5.28", + "clap 4.5.32", "clap_mangen", "git-branchless-lib", "itertools 0.14.0", @@ -1732,7 +1732,7 @@ dependencies = [ name = "git-branchless-submit" version = "0.10.0" dependencies = [ - "clap 4.5.28", + "clap 4.5.32", "cursive_core", "esl01-dag", "eyre", @@ -1760,7 +1760,7 @@ version = "0.10.0" dependencies = [ "assert_cmd", "bstr", - "clap 4.5.28", + "clap 4.5.32", "crossbeam", "cursive", "esl01-dag", @@ -3136,7 +3136,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adfb2974d3500342f111c2642357b8eda61977b8d4f2994274aa07a0ad834069" dependencies = [ - "clap 4.5.28", + "clap 4.5.32", "diffy", "scm-record 0.4.0", "sha1", diff --git a/Cargo.toml b/Cargo.toml index d55794454..e532cb1dc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -40,7 +40,7 @@ chashmap = "2.2.2" chrono = "0.4.39" chrono-english = "0.1.7" chronoutil = "0.2.7" -clap = "4.5.28" +clap = "4.5.32" clap_mangen = "0.2.26" color-eyre = "0.6.3" concolor = { version = "0.1.1", features = ["auto"] } From 4f67c2579fa0923eb2642730a80f97f4fe559567 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 18 Mar 2025 02:56:08 +0000 Subject: [PATCH 086/146] build: bump cc from 1.2.13 to 1.2.16 Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.2.13 to 1.2.16. - [Release notes](https://github.com/rust-lang/cc-rs/releases) - [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md) - [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.13...cc-v1.2.16) --- updated-dependencies: - dependency-name: cc dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6e33f05c8..3cb812d46 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -327,9 +327,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.13" +version = "1.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7777341816418c02e033934a09f20dc0ccaf65a5201ef8a450ae0105a573fda" +checksum = "be714c154be609ec7f5dad223a33bf1482fff90472de28f7362806e6d4832b8c" dependencies = [ "jobserver", "libc", diff --git a/Cargo.toml b/Cargo.toml index e532cb1dc..a2fd54672 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -104,7 +104,7 @@ vt100 = "0.15.2" # dev-dependencies assert_cmd = "2.0.16" -cc = "1.2.13" +cc = "1.2.16" criterion = { version = "0.5.1", features = ["html_reports"] } insta = "1.42.1" maplit = "1.0.2" From 18d28378053426833eb2fe18254711daf7450b81 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Mar 2025 20:03:22 +0000 Subject: [PATCH 087/146] build: bump Swatinem/rust-cache from 2.7.7 to 2.7.8 Bumps [Swatinem/rust-cache](https://github.com/swatinem/rust-cache) from 2.7.7 to 2.7.8. - [Release notes](https://github.com/swatinem/rust-cache/releases) - [Changelog](https://github.com/Swatinem/rust-cache/blob/master/CHANGELOG.md) - [Commits](https://github.com/swatinem/rust-cache/compare/f0deed1e0edfc6a9be95417288c0e1099b1eeec3...9d47c6ad4b02e050fd481d890b2ea34778fd09d6) --- updated-dependencies: - dependency-name: Swatinem/rust-cache dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/lint.yml | 2 +- .github/workflows/linux.yml | 2 +- .github/workflows/macos.yml | 2 +- .github/workflows/windows.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 676656131..3c3f4d19a 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -35,7 +35,7 @@ jobs: override: true - name: Cache dependencies - uses: Swatinem/rust-cache@f0deed1e0edfc6a9be95417288c0e1099b1eeec3 + uses: Swatinem/rust-cache@9d47c6ad4b02e050fd481d890b2ea34778fd09d6 - name: Run `cargo fmt` uses: actions-rs/cargo@v1 diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index e0b3f38bc..4650c6d26 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -78,7 +78,7 @@ jobs: override: true - name: Cache dependencies - uses: Swatinem/rust-cache@f0deed1e0edfc6a9be95417288c0e1099b1eeec3 + uses: Swatinem/rust-cache@9d47c6ad4b02e050fd481d890b2ea34778fd09d6 - name: Compile (all features) run: cargo build --all-features --all-targets --workspace diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index f1dc76683..c9bee8252 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -31,7 +31,7 @@ jobs: override: true - name: Cache dependencies - uses: Swatinem/rust-cache@f0deed1e0edfc6a9be95417288c0e1099b1eeec3 + uses: Swatinem/rust-cache@9d47c6ad4b02e050fd481d890b2ea34778fd09d6 - name: Compile run: cargo build --benches --tests diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index af0369cd3..414d75c57 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -24,7 +24,7 @@ jobs: override: true - name: Cache dependencies - uses: Swatinem/rust-cache@f0deed1e0edfc6a9be95417288c0e1099b1eeec3 + uses: Swatinem/rust-cache@9d47c6ad4b02e050fd481d890b2ea34778fd09d6 - name: Compile run: cargo build --all-targets --workspace From 90882326e140e08c3eec88a4272a10d856914b00 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Mar 2025 19:41:01 +0000 Subject: [PATCH 088/146] build: bump async-trait from 0.1.86 to 0.1.88 Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.86 to 0.1.88. - [Release notes](https://github.com/dtolnay/async-trait/releases) - [Commits](https://github.com/dtolnay/async-trait/compare/0.1.86...0.1.88) --- updated-dependencies: - dependency-name: async-trait dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3cb812d46..0b715b9bf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -163,9 +163,9 @@ dependencies = [ [[package]] name = "async-trait" -version = "0.1.86" +version = "0.1.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "644dd749086bf3771a2fbc5f256fdb982d53f011c7d5d560304eafeecebce79d" +checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index a2fd54672..c2745aed1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -33,7 +33,7 @@ tag = false [workspace.dependencies] anyhow = "1.0.95" -async-trait = "0.1.86" +async-trait = "0.1.88" bstr = "1.11.3" bugreport = "0.5.1" chashmap = "2.2.2" From c6628ff3fb79c59786c9921f168e8f1039d36a1b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 31 Mar 2025 19:04:26 +0000 Subject: [PATCH 089/146] build: bump chrono from 0.4.39 to 0.4.40 Bumps [chrono](https://github.com/chronotope/chrono) from 0.4.39 to 0.4.40. - [Release notes](https://github.com/chronotope/chrono/releases) - [Changelog](https://github.com/chronotope/chrono/blob/main/CHANGELOG.md) - [Commits](https://github.com/chronotope/chrono/compare/v0.4.39...v0.4.40) --- updated-dependencies: - dependency-name: chrono dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 12 +++++++++--- Cargo.toml | 2 +- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0b715b9bf..8c78dd0c6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -354,16 +354,16 @@ dependencies = [ [[package]] name = "chrono" -version = "0.4.39" +version = "0.4.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825" +checksum = "1a7964611d71df112cb1730f2ee67324fcf4d0fc6606acbbe9bfe06df124637c" dependencies = [ "android-tzdata", "iana-time-zone", "js-sys", "num-traits", "wasm-bindgen", - "windows-targets 0.52.6", + "windows-link", ] [[package]] @@ -4149,6 +4149,12 @@ dependencies = [ "syn 2.0.96", ] +[[package]] +name = "windows-link" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" + [[package]] name = "windows-result" version = "0.1.2" diff --git a/Cargo.toml b/Cargo.toml index c2745aed1..2942885c0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -37,7 +37,7 @@ async-trait = "0.1.88" bstr = "1.11.3" bugreport = "0.5.1" chashmap = "2.2.2" -chrono = "0.4.39" +chrono = "0.4.40" chrono-english = "0.1.7" chronoutil = "0.2.7" clap = "4.5.32" From 3df4b3394e5612f8ec396465e6790b74883780bc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 10 Apr 2025 14:40:23 +0000 Subject: [PATCH 090/146] build: bump crossbeam-channel from 0.5.13 to 0.5.15 Bumps [crossbeam-channel](https://github.com/crossbeam-rs/crossbeam) from 0.5.13 to 0.5.15. - [Release notes](https://github.com/crossbeam-rs/crossbeam/releases) - [Changelog](https://github.com/crossbeam-rs/crossbeam/blob/master/CHANGELOG.md) - [Commits](https://github.com/crossbeam-rs/crossbeam/compare/crossbeam-channel-0.5.13...crossbeam-channel-0.5.15) --- updated-dependencies: - dependency-name: crossbeam-channel dependency-version: 0.5.15 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8c78dd0c6..a2121faea 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -646,9 +646,9 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.13" +version = "0.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" +checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" dependencies = [ "crossbeam-utils", ] From adcee0732b510ef28b567d963eb44fa8f1dd3e2d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Apr 2025 18:49:01 +0000 Subject: [PATCH 091/146] build: bump anyhow from 1.0.95 to 1.0.98 Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.95 to 1.0.98. - [Release notes](https://github.com/dtolnay/anyhow/releases) - [Commits](https://github.com/dtolnay/anyhow/compare/1.0.95...1.0.98) --- updated-dependencies: - dependency-name: anyhow dependency-version: 1.0.98 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a2121faea..39bd77544 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -126,9 +126,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.95" +version = "1.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34ac096ce696dc2fcabef30516bb13c0a68a11d30131d3df6f04711467681b04" +checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" [[package]] name = "arrayvec" diff --git a/Cargo.toml b/Cargo.toml index 2942885c0..e2d454d93 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -32,7 +32,7 @@ push = false tag = false [workspace.dependencies] -anyhow = "1.0.95" +anyhow = "1.0.98" async-trait = "0.1.88" bstr = "1.11.3" bugreport = "0.5.1" From 4082706c3c76329a433d2d47285583d7d31198cb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 7 Apr 2025 19:30:06 +0000 Subject: [PATCH 092/146] build: bump insta from 1.42.1 to 1.42.2 Bumps [insta](https://github.com/mitsuhiko/insta) from 1.42.1 to 1.42.2. - [Release notes](https://github.com/mitsuhiko/insta/releases) - [Changelog](https://github.com/mitsuhiko/insta/blob/master/CHANGELOG.md) - [Commits](https://github.com/mitsuhiko/insta/compare/1.42.1...1.42.2) --- updated-dependencies: - dependency-name: insta dependency-version: 1.42.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 39bd77544..b6d214e66 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2011,9 +2011,9 @@ checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5" [[package]] name = "insta" -version = "1.42.1" +version = "1.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71c1b125e30d93896b365e156c33dadfffab45ee8400afcbba4752f59de08a86" +checksum = "50259abbaa67d11d2bcafc7ba1d094ed7a0c70e3ce893f0d0997f73558cb3084" dependencies = [ "console", "linked-hash-map", diff --git a/Cargo.toml b/Cargo.toml index e2d454d93..813bd8663 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -106,5 +106,5 @@ vt100 = "0.15.2" assert_cmd = "2.0.16" cc = "1.2.16" criterion = { version = "0.5.1", features = ["html_reports"] } -insta = "1.42.1" +insta = "1.42.2" maplit = "1.0.2" From b1f7ae5951342825eea01f6fe1ce3860f47841da Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Mar 2025 19:00:07 +0000 Subject: [PATCH 093/146] build: bump serde from 1.0.217 to 1.0.219 Bumps [serde](https://github.com/serde-rs/serde) from 1.0.217 to 1.0.219. - [Release notes](https://github.com/serde-rs/serde/releases) - [Commits](https://github.com/serde-rs/serde/compare/v1.0.217...v1.0.219) --- updated-dependencies: - dependency-name: serde dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 8 ++++---- Cargo.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b6d214e66..0a7bae1e2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3187,18 +3187,18 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "serde" -version = "1.0.217" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.217" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 813bd8663..7f9346276 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -89,7 +89,7 @@ rusqlite = { version = "0.29.0", features = ["bundled"] } scm-bisect = { version = "0.3.0", path = "scm-bisect" } scm-diff-editor = "0.4.0" scm-record = "0.5.0" -serde = { version = "1.0.217", features = ["derive"] } +serde = { version = "1.0.219", features = ["derive"] } serde_json = "1.0.138" shell-words = "1.1.0" skim = "0.10.4" From 245d9033ddcf568aa572e018ce4943c92de16fee Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Apr 2025 01:40:07 +0000 Subject: [PATCH 094/146] build: bump serde_json from 1.0.138 to 1.0.140 Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.138 to 1.0.140. - [Release notes](https://github.com/serde-rs/json/releases) - [Commits](https://github.com/serde-rs/json/compare/v1.0.138...v1.0.140) --- updated-dependencies: - dependency-name: serde_json dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0a7bae1e2..83f60544d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3207,9 +3207,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.138" +version = "1.0.140" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d434192e7da787e94a6ea7e9670b26a036d0ca41e0b7efb2676dd32bae872949" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" dependencies = [ "itoa", "memchr", diff --git a/Cargo.toml b/Cargo.toml index 7f9346276..73be9ba71 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -90,7 +90,7 @@ scm-bisect = { version = "0.3.0", path = "scm-bisect" } scm-diff-editor = "0.4.0" scm-record = "0.5.0" serde = { version = "1.0.219", features = ["derive"] } -serde_json = "1.0.138" +serde_json = "1.0.140" shell-words = "1.1.0" skim = "0.10.4" tempfile = "3.16.0" From 932f43796451e66dc6af96327b7dbbb3a0712bae Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 26 May 2025 18:17:35 +0000 Subject: [PATCH 095/146] build: bump cc from 1.2.16 to 1.2.24 Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.2.16 to 1.2.24. - [Release notes](https://github.com/rust-lang/cc-rs/releases) - [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md) - [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.16...cc-v1.2.24) --- updated-dependencies: - dependency-name: cc dependency-version: 1.2.24 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 83f60544d..11ae5bcbb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -327,9 +327,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.16" +version = "1.2.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be714c154be609ec7f5dad223a33bf1482fff90472de28f7362806e6d4832b8c" +checksum = "16595d3be041c03b09d08d0858631facccee9221e579704070e6e9e4915d3bc7" dependencies = [ "jobserver", "libc", diff --git a/Cargo.toml b/Cargo.toml index 73be9ba71..db5ab7ff0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -104,7 +104,7 @@ vt100 = "0.15.2" # dev-dependencies assert_cmd = "2.0.16" -cc = "1.2.16" +cc = "1.2.24" criterion = { version = "0.5.1", features = ["html_reports"] } insta = "1.42.2" maplit = "1.0.2" From dca6a4750b7c0b9f31ec3ad830a02741adb6f11a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Apr 2025 20:09:58 +0000 Subject: [PATCH 096/146] build: bump textwrap from 0.16.1 to 0.16.2 Bumps [textwrap](https://github.com/mgeisler/textwrap) from 0.16.1 to 0.16.2. - [Release notes](https://github.com/mgeisler/textwrap/releases) - [Changelog](https://github.com/mgeisler/textwrap/blob/master/CHANGELOG.md) - [Commits](https://github.com/mgeisler/textwrap/compare/0.16.1...0.16.2) --- updated-dependencies: - dependency-name: textwrap dependency-version: 0.16.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 6 +++--- Cargo.toml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 11ae5bcbb..81354cc45 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3565,13 +3565,13 @@ checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76" [[package]] name = "textwrap" -version = "0.16.1" +version = "0.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" +checksum = "c13547615a44dc9c452a8a534638acdf07120d4b6847c8178705da06306a3057" dependencies = [ "smawk", "unicode-linebreak", - "unicode-width 0.1.14", + "unicode-width 0.2.0", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index db5ab7ff0..a3c10a395 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -94,7 +94,7 @@ serde_json = "1.0.140" shell-words = "1.1.0" skim = "0.10.4" tempfile = "3.16.0" -textwrap = "0.16.1" +textwrap = "0.16.2" thiserror = "2.0.11" tracing = "0.1.41" tracing-chrome = "0.6.0" From b86b8be22ea5043fffe0ac9de5c23185b2a3ae02 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Apr 2025 19:54:34 +0000 Subject: [PATCH 097/146] build: bump once_cell from 1.20.3 to 1.21.3 Bumps [once_cell](https://github.com/matklad/once_cell) from 1.20.3 to 1.21.3. - [Changelog](https://github.com/matklad/once_cell/blob/master/CHANGELOG.md) - [Commits](https://github.com/matklad/once_cell/compare/v1.20.3...v1.21.3) --- updated-dependencies: - dependency-name: once_cell dependency-version: 1.21.3 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 81354cc45..6199cfed2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2483,9 +2483,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.20.3" +version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" [[package]] name = "oorandom" diff --git a/Cargo.toml b/Cargo.toml index a3c10a395..86b31053c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -80,7 +80,7 @@ lazy_static = "1.5.0" lib = { package = "git-branchless-lib", version = "0.10.0", path = "git-branchless-lib" } man = "0.3.0" num_cpus = "1.16.0" -once_cell = "1.20.3" +once_cell = "1.21.3" path-slash = "0.2.1" portable-pty = "0.8.1" rayon = "1.10.0" From c62184e6e7e0d2b05bad4586014bb64753c2a699 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 1 Jun 2025 00:46:08 +0000 Subject: [PATCH 098/146] build: bump insta from 1.42.2 to 1.43.1 Bumps [insta](https://github.com/mitsuhiko/insta) from 1.42.2 to 1.43.1. - [Release notes](https://github.com/mitsuhiko/insta/releases) - [Changelog](https://github.com/mitsuhiko/insta/blob/master/CHANGELOG.md) - [Commits](https://github.com/mitsuhiko/insta/compare/1.42.2...1.43.1) --- updated-dependencies: - dependency-name: insta dependency-version: 1.43.1 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Cargo.lock | 32 ++------------------------------ Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 31 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6199cfed2..98ae72f18 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2011,14 +2011,12 @@ checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5" [[package]] name = "insta" -version = "1.42.2" +version = "1.43.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50259abbaa67d11d2bcafc7ba1d094ed7a0c70e3ce893f0d0997f73558cb3084" +checksum = "154934ea70c58054b556dd430b99a98c2a7ff5309ac9891597e339b5c28f4371" dependencies = [ "console", - "linked-hash-map", "once_cell", - "pin-project", "similar", ] @@ -2206,12 +2204,6 @@ dependencies = [ "vcpkg", ] -[[package]] -name = "linked-hash-map" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" - [[package]] name = "linux-raw-sys" version = "0.4.14" @@ -2605,26 +2597,6 @@ dependencies = [ "siphasher", ] -[[package]] -name = "pin-project" -version = "1.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e2ec53ad785f4d35dac0adea7f7dc6f1bb277ad84a680c7afefeae05d1f5916" -dependencies = [ - "pin-project-internal", -] - -[[package]] -name = "pin-project-internal" -version = "1.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d56a66c0c55993aa927429d0f8a0abfd74f084e4d9c192cffed01e418d83eefb" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.96", -] - [[package]] name = "pin-project-lite" version = "0.2.15" diff --git a/Cargo.toml b/Cargo.toml index 86b31053c..50e8d9403 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -106,5 +106,5 @@ vt100 = "0.15.2" assert_cmd = "2.0.16" cc = "1.2.24" criterion = { version = "0.5.1", features = ["html_reports"] } -insta = "1.42.2" +insta = "1.43.1" maplit = "1.0.2" From e703266f3bfe193224af144e464736839bf76f9c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Mar 2025 18:44:13 +0000 Subject: [PATCH 099/146] build: bump cachix/install-nix-action from 30 to 31 Bumps [cachix/install-nix-action](https://github.com/cachix/install-nix-action) from 30 to 31. - [Release notes](https://github.com/cachix/install-nix-action/releases) - [Commits](https://github.com/cachix/install-nix-action/compare/v30...v31) --- updated-dependencies: - dependency-name: cachix/install-nix-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/nix-linux.yml | 2 +- .github/workflows/nix-macos.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/nix-linux.yml b/.github/workflows/nix-linux.yml index 606f3ce70..5c9f58097 100644 --- a/.github/workflows/nix-linux.yml +++ b/.github/workflows/nix-linux.yml @@ -15,7 +15,7 @@ jobs: - uses: actions/checkout@v4 with: fetch-depth: 0 - - uses: cachix/install-nix-action@v30 + - uses: cachix/install-nix-action@v31 with: extra_nix_config: | experimental-features = nix-command flakes diff --git a/.github/workflows/nix-macos.yml b/.github/workflows/nix-macos.yml index 4c7c66e72..203e7e2d1 100644 --- a/.github/workflows/nix-macos.yml +++ b/.github/workflows/nix-macos.yml @@ -22,7 +22,7 @@ jobs: - uses: actions/checkout@v4 with: fetch-depth: 0 - - uses: cachix/install-nix-action@v30 + - uses: cachix/install-nix-action@v31 with: extra_nix_config: | experimental-features = nix-command flakes From 86933b3ec2a1678cfb093ea5fe33b2eb7515b9b2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Jun 2025 18:49:23 +0000 Subject: [PATCH 100/146] build: bump num_cpus from 1.16.0 to 1.17.0 Bumps [num_cpus](https://github.com/seanmonstar/num_cpus) from 1.16.0 to 1.17.0. - [Release notes](https://github.com/seanmonstar/num_cpus/releases) - [Changelog](https://github.com/seanmonstar/num_cpus/blob/master/CHANGELOG.md) - [Commits](https://github.com/seanmonstar/num_cpus/compare/v1.16.0...v1.17.0) --- updated-dependencies: - dependency-name: num_cpus dependency-version: 1.17.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Cargo.lock | 14 +++++++------- Cargo.toml | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 98ae72f18..43fbb4277 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1902,15 +1902,15 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.3.9" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" +checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" [[package]] name = "hermit-abi" -version = "0.4.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" +checksum = "f154ce46856750ed433c8649605bf7ed2de3bc35fd9d2a9f30cddd873c80cb08" [[package]] name = "hex" @@ -2441,11 +2441,11 @@ dependencies = [ [[package]] name = "num_cpus" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" dependencies = [ - "hermit-abi 0.3.9", + "hermit-abi 0.5.1", "libc", ] diff --git a/Cargo.toml b/Cargo.toml index 50e8d9403..c59776d4e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -79,7 +79,7 @@ lalrpop-util = "0.19.12" lazy_static = "1.5.0" lib = { package = "git-branchless-lib", version = "0.10.0", path = "git-branchless-lib" } man = "0.3.0" -num_cpus = "1.16.0" +num_cpus = "1.17.0" once_cell = "1.21.3" path-slash = "0.2.1" portable-pty = "0.8.1" From 25a85ef6f2f3abfacf05279ca544b9d66764007d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Jun 2025 18:55:34 +0000 Subject: [PATCH 101/146] build: bump chrono from 0.4.40 to 0.4.41 Bumps [chrono](https://github.com/chronotope/chrono) from 0.4.40 to 0.4.41. - [Release notes](https://github.com/chronotope/chrono/releases) - [Changelog](https://github.com/chronotope/chrono/blob/main/CHANGELOG.md) - [Commits](https://github.com/chronotope/chrono/compare/v0.4.40...v0.4.41) --- updated-dependencies: - dependency-name: chrono dependency-version: 0.4.41 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 43fbb4277..9a419d1ca 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -354,9 +354,9 @@ dependencies = [ [[package]] name = "chrono" -version = "0.4.40" +version = "0.4.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a7964611d71df112cb1730f2ee67324fcf4d0fc6606acbbe9bfe06df124637c" +checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" dependencies = [ "android-tzdata", "iana-time-zone", diff --git a/Cargo.toml b/Cargo.toml index c59776d4e..636292e7f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -37,7 +37,7 @@ async-trait = "0.1.88" bstr = "1.11.3" bugreport = "0.5.1" chashmap = "2.2.2" -chrono = "0.4.40" +chrono = "0.4.41" chrono-english = "0.1.7" chronoutil = "0.2.7" clap = "4.5.32" From 073956c3b655c3b8eb00474d3cafc3db40baac40 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Jun 2025 18:55:51 +0000 Subject: [PATCH 102/146] build: bump bstr from 1.11.3 to 1.12.0 Bumps [bstr](https://github.com/BurntSushi/bstr) from 1.11.3 to 1.12.0. - [Commits](https://github.com/BurntSushi/bstr/compare/1.11.3...1.12.0) --- updated-dependencies: - dependency-name: bstr dependency-version: 1.12.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9a419d1ca..f9f897087 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -263,9 +263,9 @@ dependencies = [ [[package]] name = "bstr" -version = "1.11.3" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "531a9155a481e2ee699d4f98f43c0ca4ff8ee1bfd55c31e9e98fb29d2b176fe0" +checksum = "234113d19d0d7d613b40e86fb654acf958910802bcceab913a4f9e7cda03b1a4" dependencies = [ "memchr", "regex-automata 0.4.8", diff --git a/Cargo.toml b/Cargo.toml index 636292e7f..ff34c2c2c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -34,7 +34,7 @@ tag = false [workspace.dependencies] anyhow = "1.0.98" async-trait = "0.1.88" -bstr = "1.11.3" +bstr = "1.12.0" bugreport = "0.5.1" chashmap = "2.2.2" chrono = "0.4.41" From edde58dfe9dc2f88971c6cd536728c9beca0f048 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Jun 2025 19:01:44 +0000 Subject: [PATCH 103/146] build: bump color-eyre from 0.6.3 to 0.6.5 Bumps [color-eyre](https://github.com/eyre-rs/eyre) from 0.6.3 to 0.6.5. - [Commits](https://github.com/eyre-rs/eyre/compare/color-eyre-v0.6.3...color-eyre@0.6.5) --- updated-dependencies: - dependency-name: color-eyre dependency-version: 0.6.5 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 12 ++++++------ Cargo.toml | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f9f897087..5e99b75ad 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -489,9 +489,9 @@ dependencies = [ [[package]] name = "color-eyre" -version = "0.6.3" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55146f5e46f237f7423d74111267d4597b59b0dad0ffaf7303bce9945d843ad5" +checksum = "e5920befb47832a6d61ee3a3a846565cfa39b331331e68a3b1d1116630f2f26d" dependencies = [ "backtrace", "color-spantrace", @@ -504,9 +504,9 @@ dependencies = [ [[package]] name = "color-spantrace" -version = "0.2.1" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd6be1b2a7e382e2b98b43b2adcca6bb0e465af0bdd38123873ae61eb17a72c2" +checksum = "b8b88ea9df13354b55bc7234ebcce36e6ef896aca2e42a15de9e10edce01b427" dependencies = [ "once_cell", "owo-colors", @@ -2511,9 +2511,9 @@ dependencies = [ [[package]] name = "owo-colors" -version = "3.5.0" +version = "4.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f" +checksum = "26995317201fa17f3656c36716aed4a7c81743a9634ac4c99c0eeda495db0cec" [[package]] name = "parking_lot" diff --git a/Cargo.toml b/Cargo.toml index ff34c2c2c..f9ac84ad5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -42,7 +42,7 @@ chrono-english = "0.1.7" chronoutil = "0.2.7" clap = "4.5.32" clap_mangen = "0.2.26" -color-eyre = "0.6.3" +color-eyre = "0.6.5" concolor = { version = "0.1.1", features = ["auto"] } console = "0.15.10" crossbeam = "0.8.4" From f3e66f23e89c67fa7dedd6d795ccdb4e217c0b8c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Jun 2025 18:12:11 +0000 Subject: [PATCH 104/146] build: bump tempfile from 3.16.0 to 3.20.0 Bumps [tempfile](https://github.com/Stebalien/tempfile) from 3.16.0 to 3.20.0. - [Changelog](https://github.com/Stebalien/tempfile/blob/master/CHANGELOG.md) - [Commits](https://github.com/Stebalien/tempfile/compare/v3.16.0...v3.20.0) --- updated-dependencies: - dependency-name: tempfile dependency-version: 3.20.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Cargo.lock | 36 +++++++++++++++++++++++++++--------- Cargo.toml | 2 +- 2 files changed, 28 insertions(+), 10 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5e99b75ad..4912c56cb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -729,7 +729,7 @@ dependencies = [ "crossterm_winapi", "mio 1.0.3", "parking_lot 0.12.3", - "rustix", + "rustix 0.38.40", "signal-hook", "signal-hook-mio", "winapi", @@ -1080,12 +1080,12 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.9" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +checksum = "cea14ef9355e3beab063703aa9dab15afd25f0667c341310c1e5274bb1d0da18" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -2210,6 +2210,12 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +[[package]] +name = "linux-raw-sys" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" + [[package]] name = "lock_api" version = "0.4.12" @@ -3046,10 +3052,23 @@ dependencies = [ "bitflags 2.6.0", "errno", "libc", - "linux-raw-sys", + "linux-raw-sys 0.4.14", "windows-sys 0.52.0", ] +[[package]] +name = "rustix" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" +dependencies = [ + "bitflags 2.6.0", + "errno", + "libc", + "linux-raw-sys 0.9.4", + "windows-sys 0.59.0", +] + [[package]] name = "rustversion" version = "1.0.18" @@ -3488,15 +3507,14 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.16.0" +version = "3.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38c246215d7d24f48ae091a2902398798e05d978b24315d6efbc00ede9a8bb91" +checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" dependencies = [ - "cfg-if", "fastrand", "getrandom 0.3.1", "once_cell", - "rustix", + "rustix 1.0.7", "windows-sys 0.59.0", ] diff --git a/Cargo.toml b/Cargo.toml index f9ac84ad5..7cf6d6fc0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -93,7 +93,7 @@ serde = { version = "1.0.219", features = ["derive"] } serde_json = "1.0.140" shell-words = "1.1.0" skim = "0.10.4" -tempfile = "3.16.0" +tempfile = "3.20.0" textwrap = "0.16.2" thiserror = "2.0.11" tracing = "0.1.41" From 046de1f4166329db245bef74a92a9086b8c430ff Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Jun 2025 18:22:12 +0000 Subject: [PATCH 105/146] build: bump clap_mangen from 0.2.26 to 0.2.27 Bumps [clap_mangen](https://github.com/clap-rs/clap) from 0.2.26 to 0.2.27. - [Release notes](https://github.com/clap-rs/clap/releases) - [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md) - [Commits](https://github.com/clap-rs/clap/compare/clap_mangen-v0.2.26...clap_mangen-v0.2.27) --- updated-dependencies: - dependency-name: clap_mangen dependency-version: 0.2.27 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4912c56cb..3ac6df7e2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -479,9 +479,9 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "clap_mangen" -version = "0.2.26" +version = "0.2.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "724842fa9b144f9b89b3f3d371a89f3455eea660361d13a554f68f8ae5d6c13a" +checksum = "fc33c849748320656a90832f54a5eeecaa598e92557fb5dedebc3355746d31e4" dependencies = [ "clap 4.5.32", "roff 0.2.2", diff --git a/Cargo.toml b/Cargo.toml index 7cf6d6fc0..75926bf26 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -41,7 +41,7 @@ chrono = "0.4.41" chrono-english = "0.1.7" chronoutil = "0.2.7" clap = "4.5.32" -clap_mangen = "0.2.26" +clap_mangen = "0.2.27" color-eyre = "0.6.5" concolor = { version = "0.1.1", features = ["auto"] } console = "0.15.10" From 8cbc266c83747fe44224901068e0d9f5280c2d3e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Jun 2025 18:22:30 +0000 Subject: [PATCH 106/146] build: bump cc from 1.2.24 to 1.2.26 Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.2.24 to 1.2.26. - [Release notes](https://github.com/rust-lang/cc-rs/releases) - [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md) - [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.24...cc-v1.2.26) --- updated-dependencies: - dependency-name: cc dependency-version: 1.2.26 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3ac6df7e2..2b5fc0f88 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -327,9 +327,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.24" +version = "1.2.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16595d3be041c03b09d08d0858631facccee9221e579704070e6e9e4915d3bc7" +checksum = "956a5e21988b87f372569b66183b78babf23ebc2e744b733e4350a752c4dafac" dependencies = [ "jobserver", "libc", diff --git a/Cargo.toml b/Cargo.toml index 75926bf26..0e602ba22 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -104,7 +104,7 @@ vt100 = "0.15.2" # dev-dependencies assert_cmd = "2.0.16" -cc = "1.2.24" +cc = "1.2.26" criterion = { version = "0.5.1", features = ["html_reports"] } insta = "1.43.1" maplit = "1.0.2" From 4157e4f5b7a727e3c10d0bbb3d11c7dc0c4d92a4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Jun 2025 18:18:37 +0000 Subject: [PATCH 107/146] build: bump indexmap from 2.7.1 to 2.9.0 Bumps [indexmap](https://github.com/indexmap-rs/indexmap) from 2.7.1 to 2.9.0. - [Changelog](https://github.com/indexmap-rs/indexmap/blob/main/RELEASES.md) - [Commits](https://github.com/indexmap-rs/indexmap/compare/2.7.1...2.9.0) --- updated-dependencies: - dependency-name: indexmap dependency-version: 2.9.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Cargo.lock | 12 ++++++------ Cargo.toml | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2b5fc0f88..f6561219b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1741,7 +1741,7 @@ dependencies = [ "git-branchless-opts", "git-branchless-revset", "git-branchless-test", - "indexmap 2.7.1", + "indexmap 2.9.0", "insta", "itertools 0.14.0", "lazy_static", @@ -1770,7 +1770,7 @@ dependencies = [ "git-branchless-lib", "git-branchless-opts", "git-branchless-revset", - "indexmap 2.7.1", + "indexmap 2.9.0", "insta", "itertools 0.14.0", "lazy_static", @@ -1981,9 +1981,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.7.1" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652" +checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" dependencies = [ "equivalent", "hashbrown 0.15.0", @@ -2591,7 +2591,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset", - "indexmap 2.7.1", + "indexmap 2.9.0", ] [[package]] @@ -3112,7 +3112,7 @@ checksum = "088c5d71572124929ea7549a8ce98e1a6fd33d0a38367b09027b382e67c033db" name = "scm-bisect" version = "0.3.0" dependencies = [ - "indexmap 2.7.1", + "indexmap 2.9.0", "insta", "itertools 0.14.0", "maplit", diff --git a/Cargo.toml b/Cargo.toml index 0e602ba22..ef790bce7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -71,7 +71,7 @@ git-branchless-test = { version = "0.10.0", path = "git-branchless-test" } git-branchless-undo = { version = "0.10.0", path = "git-branchless-undo" } git2 = { version = "0.20.0", default-features = false } glob = "0.3.2" -indexmap = "2.7.1" +indexmap = "2.9.0" indicatif = { version = "0.17.11", features = ["improved_unicode"] } itertools = "0.14.0" lalrpop = "0.19.12" From f4a5667c6ec5e459e2d8e168e7343bbcdc2d7207 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Jun 2025 19:50:33 +0000 Subject: [PATCH 108/146] build: bump console from 0.15.10 to 0.15.11 Bumps [console](https://github.com/console-rs/console) from 0.15.10 to 0.15.11. - [Release notes](https://github.com/console-rs/console/releases) - [Changelog](https://github.com/console-rs/console/blob/main/CHANGELOG.md) - [Commits](https://github.com/console-rs/console/compare/0.15.10...0.15.11) --- updated-dependencies: - dependency-name: console dependency-version: 0.15.11 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f6561219b..e3048c72e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -569,9 +569,9 @@ dependencies = [ [[package]] name = "console" -version = "0.15.10" +version = "0.15.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea3c6ecd8059b57859df5c69830340ed3c41d30e3da0c1cbed90a96ac853041b" +checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" dependencies = [ "encode_unicode", "libc", diff --git a/Cargo.toml b/Cargo.toml index ef790bce7..dc6daeb4f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -44,7 +44,7 @@ clap = "4.5.32" clap_mangen = "0.2.27" color-eyre = "0.6.5" concolor = { version = "0.1.1", features = ["auto"] } -console = "0.15.10" +console = "0.15.11" crossbeam = "0.8.4" cursive = { version = "0.20.0", default-features = false, features = [ "crossterm-backend", From 116d54972922e67e914595fc9596998909538a87 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Jun 2025 19:51:04 +0000 Subject: [PATCH 109/146] build: bump assert_cmd from 2.0.16 to 2.0.17 Bumps [assert_cmd](https://github.com/assert-rs/assert_cmd) from 2.0.16 to 2.0.17. - [Changelog](https://github.com/assert-rs/assert_cmd/blob/master/CHANGELOG.md) - [Commits](https://github.com/assert-rs/assert_cmd/compare/v2.0.16...v2.0.17) --- updated-dependencies: - dependency-name: assert_cmd dependency-version: 2.0.17 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e3048c72e..976a34791 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -147,9 +147,9 @@ dependencies = [ [[package]] name = "assert_cmd" -version = "2.0.16" +version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc1835b7f27878de8525dc71410b5a31cdcc5f230aed5ba5df968e09c201b23d" +checksum = "2bd389a4b2970a01282ee455294913c0a43724daedcd1a24c3eb0ec1c1320b66" dependencies = [ "anstyle", "bstr", diff --git a/Cargo.toml b/Cargo.toml index dc6daeb4f..07d785157 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -103,7 +103,7 @@ tracing-subscriber = { version = "=0.3.11", features = ["env-filter"] } vt100 = "0.15.2" # dev-dependencies -assert_cmd = "2.0.16" +assert_cmd = "2.0.17" cc = "1.2.26" criterion = { version = "0.5.1", features = ["html_reports"] } insta = "1.43.1" From c494e101c3a753d5cb1f851b5640d25453b40aa0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Jun 2025 19:58:12 +0000 Subject: [PATCH 110/146] build: bump thiserror from 2.0.11 to 2.0.12 Bumps [thiserror](https://github.com/dtolnay/thiserror) from 2.0.11 to 2.0.12. - [Release notes](https://github.com/dtolnay/thiserror/releases) - [Commits](https://github.com/dtolnay/thiserror/compare/2.0.11...2.0.12) --- updated-dependencies: - dependency-name: thiserror dependency-version: 2.0.12 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 24 ++++++++++++------------ Cargo.toml | 2 +- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 976a34791..da9737f1d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1497,7 +1497,7 @@ dependencies = [ "regex", "rusqlite", "scm-diff-editor", - "thiserror 2.0.11", + "thiserror 2.0.12", "tracing", "tracing-chrome", "tracing-error", @@ -1586,7 +1586,7 @@ dependencies = [ "shell-words", "tempfile", "textwrap", - "thiserror 2.0.11", + "thiserror 2.0.12", "tracing", "tracing-chrome", "tracing-error", @@ -1691,7 +1691,7 @@ dependencies = [ "rayon", "regex", "serde_json", - "thiserror 2.0.11", + "thiserror 2.0.12", "tracing", ] @@ -1750,7 +1750,7 @@ dependencies = [ "serde", "serde_json", "tempfile", - "thiserror 2.0.11", + "thiserror 2.0.12", "tracing", ] @@ -1781,7 +1781,7 @@ dependencies = [ "serde", "serde_json", "tempfile", - "thiserror 2.0.11", + "thiserror 2.0.12", "tracing", ] @@ -3117,7 +3117,7 @@ dependencies = [ "itertools 0.14.0", "maplit", "proptest", - "thiserror 2.0.11", + "thiserror 2.0.12", "tracing", ] @@ -3165,7 +3165,7 @@ dependencies = [ "ratatui 0.29.0", "serde", "serde_json", - "thiserror 2.0.11", + "thiserror 2.0.12", "tracing", "unicode-width 0.2.0", ] @@ -3575,11 +3575,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.11" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc" +checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" dependencies = [ - "thiserror-impl 2.0.11", + "thiserror-impl 2.0.12", ] [[package]] @@ -3595,9 +3595,9 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "2.0.11" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" +checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 07d785157..56868682f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -95,7 +95,7 @@ shell-words = "1.1.0" skim = "0.10.4" tempfile = "3.20.0" textwrap = "0.16.2" -thiserror = "2.0.11" +thiserror = "2.0.12" tracing = "0.1.41" tracing-chrome = "0.6.0" tracing-error = "0.2.1" From e245b4e4932dcabccb891d21316966afd0e9373e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Jun 2025 19:42:03 +0000 Subject: [PATCH 111/146] build: bump stefanzweifel/git-auto-commit-action from 5 to 6 Bumps [stefanzweifel/git-auto-commit-action](https://github.com/stefanzweifel/git-auto-commit-action) from 5 to 6. - [Release notes](https://github.com/stefanzweifel/git-auto-commit-action/releases) - [Changelog](https://github.com/stefanzweifel/git-auto-commit-action/blob/master/CHANGELOG.md) - [Commits](https://github.com/stefanzweifel/git-auto-commit-action/compare/v5...v6) --- updated-dependencies: - dependency-name: stefanzweifel/git-auto-commit-action dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/generate-wiki-toc.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/generate-wiki-toc.yml b/.github/workflows/generate-wiki-toc.yml index 0b3ca8649..d7293c777 100644 --- a/.github/workflows/generate-wiki-toc.yml +++ b/.github/workflows/generate-wiki-toc.yml @@ -32,7 +32,7 @@ jobs: include: "*.md" regex: true - - uses: stefanzweifel/git-auto-commit-action@v5 + - uses: stefanzweifel/git-auto-commit-action@v6 with: commit_message: Auto update Wiki tables of contents file_pattern: "*.md" From 4a760400fa846193173044222d36f09495b04694 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 19 Jun 2025 21:05:57 +0000 Subject: [PATCH 112/146] build: bump proptest from 1.6.0 to 1.7.0 Bumps [proptest](https://github.com/proptest-rs/proptest) from 1.6.0 to 1.7.0. - [Release notes](https://github.com/proptest-rs/proptest/releases) - [Changelog](https://github.com/proptest-rs/proptest/blob/main/CHANGELOG.md) - [Commits](https://github.com/proptest-rs/proptest/commits) --- updated-dependencies: - dependency-name: proptest dependency-version: 1.7.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Cargo.lock | 71 ++++++++++++++++++++++++++++++------------- scm-bisect/Cargo.toml | 2 +- 2 files changed, 51 insertions(+), 22 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index da9737f1d..aae91a574 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -248,9 +248,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.6.0" +version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" [[package]] name = "block-buffer" @@ -709,7 +709,7 @@ version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f476fe445d41c9e991fd07515a6f463074b782242ccf4a5b7b1d1012e70824df" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.1", "crossterm_winapi", "libc", "mio 0.8.11", @@ -725,7 +725,7 @@ version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.1", "crossterm_winapi", "mio 1.0.3", "parking_lot 0.12.3", @@ -1826,7 +1826,7 @@ version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3fda788993cc341f69012feba8bf45c0ba4f3291fcc08e214b4d5a7332d88aff" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.1", "libc", "libgit2-sys", "log", @@ -2177,7 +2177,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.1", "libc", ] @@ -2735,17 +2735,17 @@ dependencies = [ [[package]] name = "proptest" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14cae93065090804185d3b75f0bf93b8eeda30c7a9b4a33d3bdb3988d6229e50" +checksum = "6fcdab19deb5195a31cf7726a210015ff1496ba1464fd42cb4f537b8b01b471f" dependencies = [ "bit-set 0.8.0", "bit-vec 0.8.0", - "bitflags 2.6.0", + "bitflags 2.9.1", "lazy_static", "num-traits", - "rand 0.8.5", - "rand_chacha 0.3.1", + "rand 0.9.1", + "rand_chacha 0.9.0", "rand_xorshift", "regex-syntax 0.8.5", "rusty-fork", @@ -2805,6 +2805,16 @@ dependencies = [ "rand_core 0.6.4", ] +[[package]] +name = "rand" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.3", +] + [[package]] name = "rand_chacha" version = "0.2.2" @@ -2825,6 +2835,16 @@ dependencies = [ "rand_core 0.6.4", ] +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.3", +] + [[package]] name = "rand_core" version = "0.3.1" @@ -2858,6 +2878,15 @@ dependencies = [ "getrandom 0.2.15", ] +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom 0.3.1", +] + [[package]] name = "rand_hc" version = "0.2.0" @@ -2869,11 +2898,11 @@ dependencies = [ [[package]] name = "rand_xorshift" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" +checksum = "513962919efc330f829edb2535844d1b912b0fbe2ca165d613e4e8788bb05a5a" dependencies = [ - "rand_core 0.6.4", + "rand_core 0.9.3", ] [[package]] @@ -2882,7 +2911,7 @@ version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d16546c5b5962abf8ce6e2881e722b4e0ae3b6f1a08a26ae3573c55853ca68d3" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.1", "cassowary", "compact_str 0.7.1", "crossterm 0.27.0", @@ -2903,7 +2932,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eabd94c2f37801c20583fc49dd5cd6b0ba68c716787c2dd6ed18571e1e63117b" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.1", "cassowary", "compact_str 0.8.1", "crossterm 0.28.1", @@ -2953,7 +2982,7 @@ version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.1", ] [[package]] @@ -3029,7 +3058,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "549b9d036d571d42e6e85d1c1425e2ac83491075078ca9a15be021c56b1641f2" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.1", "fallible-iterator", "fallible-streaming-iterator", "hashlink", @@ -3049,7 +3078,7 @@ version = "0.38.40" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "99e4ea3e1cdc4b559b8e5650f9c8e5998e3e5c1343b4eaf034565f32318d63c0" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.1", "errno", "libc", "linux-raw-sys 0.4.14", @@ -3062,7 +3091,7 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.1", "errno", "libc", "linux-raw-sys 0.9.4", @@ -4383,7 +4412,7 @@ version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.1", ] [[package]] diff --git a/scm-bisect/Cargo.toml b/scm-bisect/Cargo.toml index 1fe70a5c3..50b66ac2b 100644 --- a/scm-bisect/Cargo.toml +++ b/scm-bisect/Cargo.toml @@ -17,4 +17,4 @@ tracing = "0.1" [dev-dependencies] insta = "1" maplit = "1" -proptest = "1.6.0" +proptest = "1.7.0" From 5f4d1ea6801d94f2cdf44b456c108154691cd93f Mon Sep 17 00:00:00 2001 From: raylu Date: Fri, 28 Feb 2025 14:30:05 -0800 Subject: [PATCH 113/146] ci: arm64 binaries --- .github/workflows/release.yml | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 18e1540ca..47f4eb9bd 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -16,14 +16,20 @@ jobs: strategy: fail-fast: false matrix: - build: [linux-musl, macos, win-msvc] + build: [linux-musl-x64, linux-musl-arm64, macos-x64, macos-arm64, win-msvc] include: - - build: linux-musl + - build: linux-musl-x64 os: ubuntu-24.04 target: x86_64-unknown-linux-musl - - build: macos + - build: linux-musl-arm64 + os: ubuntu-24.04-arm + target: aarch64-unknown-linux-musl + - build: macos-x64 os: macos-13 target: x86_64-apple-darwin + - build: macos-arm64 + os: macos-15 + target: aarch64-apple-darwin - build: win-msvc os: windows-2022 target: x86_64-pc-windows-msvc @@ -34,7 +40,7 @@ jobs: uses: actions/checkout@v4 - name: Install packages (Ubuntu) - if: matrix.os == 'ubuntu-24.04' + if: startsWith(matrix.os, 'ubuntu-24.04') run: | sudo apt-get update sudo apt-get install -y --no-install-recommends xz-utils liblz4-tool musl-tools From 57c8fab881964b0d7ea6f5d0e3c85aeb2fe2a24c Mon Sep 17 00:00:00 2001 From: Clayton Carter Date: Tue, 26 Aug 2025 07:30:24 -0400 Subject: [PATCH 114/146] ci: use MSRV for lints All other CI jobs use MSRV, and all lints have started failing with same error as #1585 --- .github/workflows/lint.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 3c3f4d19a..9e9033f3b 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -30,7 +30,7 @@ jobs: uses: actions-rs/toolchain@v1 with: profile: minimal - toolchain: stable + toolchain: 1.74 components: rustfmt, clippy override: true From 3c55ad3da089b1a89d6668a24260b1a98a9d9ad0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 26 Aug 2025 13:57:16 +0000 Subject: [PATCH 115/146] build: bump cc from 1.2.26 to 1.2.34 Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.2.26 to 1.2.34. - [Release notes](https://github.com/rust-lang/cc-rs/releases) - [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md) - [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.26...cc-v1.2.34) --- updated-dependencies: - dependency-name: cc dependency-version: 1.2.34 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index aae91a574..6ad7917d6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -327,9 +327,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.26" +version = "1.2.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "956a5e21988b87f372569b66183b78babf23ebc2e744b733e4350a752c4dafac" +checksum = "42bc4aea80032b7bf409b0bc7ccad88853858911b7713a8062fdc0623867bedc" dependencies = [ "jobserver", "libc", diff --git a/Cargo.toml b/Cargo.toml index 56868682f..b5395e742 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -104,7 +104,7 @@ vt100 = "0.15.2" # dev-dependencies assert_cmd = "2.0.17" -cc = "1.2.26" +cc = "1.2.34" criterion = { version = "0.5.1", features = ["html_reports"] } insta = "1.43.1" maplit = "1.0.2" From 01001c5df0bf1c85fbc42fc6fdbf14193df2a4b6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 26 Aug 2025 13:56:34 +0000 Subject: [PATCH 116/146] build: bump indexmap from 2.9.0 to 2.11.0 Bumps [indexmap](https://github.com/indexmap-rs/indexmap) from 2.9.0 to 2.11.0. - [Changelog](https://github.com/indexmap-rs/indexmap/blob/main/RELEASES.md) - [Commits](https://github.com/indexmap-rs/indexmap/compare/2.9.0...2.11.0) --- updated-dependencies: - dependency-name: indexmap dependency-version: 2.11.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Cargo.lock | 12 ++++++------ Cargo.toml | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6ad7917d6..a5678e8fb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1741,7 +1741,7 @@ dependencies = [ "git-branchless-opts", "git-branchless-revset", "git-branchless-test", - "indexmap 2.9.0", + "indexmap 2.11.0", "insta", "itertools 0.14.0", "lazy_static", @@ -1770,7 +1770,7 @@ dependencies = [ "git-branchless-lib", "git-branchless-opts", "git-branchless-revset", - "indexmap 2.9.0", + "indexmap 2.11.0", "insta", "itertools 0.14.0", "lazy_static", @@ -1981,9 +1981,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.9.0" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" +checksum = "f2481980430f9f78649238835720ddccc57e52df14ffce1c6f37391d61b563e9" dependencies = [ "equivalent", "hashbrown 0.15.0", @@ -2591,7 +2591,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset", - "indexmap 2.9.0", + "indexmap 2.11.0", ] [[package]] @@ -3141,7 +3141,7 @@ checksum = "088c5d71572124929ea7549a8ce98e1a6fd33d0a38367b09027b382e67c033db" name = "scm-bisect" version = "0.3.0" dependencies = [ - "indexmap 2.9.0", + "indexmap 2.11.0", "insta", "itertools 0.14.0", "maplit", diff --git a/Cargo.toml b/Cargo.toml index b5395e742..45ef4bb69 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -71,7 +71,7 @@ git-branchless-test = { version = "0.10.0", path = "git-branchless-test" } git-branchless-undo = { version = "0.10.0", path = "git-branchless-undo" } git2 = { version = "0.20.0", default-features = false } glob = "0.3.2" -indexmap = "2.9.0" +indexmap = "2.11.0" indicatif = { version = "0.17.11", features = ["improved_unicode"] } itertools = "0.14.0" lalrpop = "0.19.12" From 40864635baad1d4ba9b7b8da5ff118451789accb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 26 Aug 2025 13:56:45 +0000 Subject: [PATCH 117/146] build: bump clap from 4.5.32 to 4.5.45 Bumps [clap](https://github.com/clap-rs/clap) from 4.5.32 to 4.5.45. - [Release notes](https://github.com/clap-rs/clap/releases) - [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md) - [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.5.32...clap_complete-v4.5.45) --- updated-dependencies: - dependency-name: clap dependency-version: 4.5.45 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 26 +++++++++++++------------- Cargo.toml | 2 +- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a5678e8fb..9966f8151 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -430,9 +430,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.32" +version = "4.5.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6088f3ae8c3608d19260cd7445411865a485688711b78b5be70d78cd96136f83" +checksum = "2c5e4fcf9c21d2e544ca1ee9d8552de13019a42aa7dbf32747fa7aaf1df76e57" dependencies = [ "clap_builder", "clap_derive", @@ -440,9 +440,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.32" +version = "4.5.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22a7ef7f676155edfb82daa97f99441f3ebf4a58d5e32f295a56259f1b6facc8" +checksum = "fecb53a0e6fcfb055f686001bc2e2592fa527efaf38dbe81a6a9563562e57d41" dependencies = [ "anstream", "anstyle", @@ -452,9 +452,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.32" +version = "4.5.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7" +checksum = "14cb31bb0a7d536caef2639baa7fad459e15c3144efefa6dbd1c84562c4739f6" dependencies = [ "heck", "proc-macro2", @@ -483,7 +483,7 @@ version = "0.2.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc33c849748320656a90832f54a5eeecaa598e92557fb5dedebc3355746d31e4" dependencies = [ - "clap 4.5.32", + "clap 4.5.46", "roff 0.2.2", ] @@ -604,7 +604,7 @@ dependencies = [ "anes", "cast", "ciborium", - "clap 4.5.32", + "clap 4.5.46", "criterion-plot", "is-terminal", "itertools 0.10.5", @@ -1539,7 +1539,7 @@ dependencies = [ name = "git-branchless-invoke" version = "0.10.0" dependencies = [ - "clap 4.5.32", + "clap 4.5.46", "color-eyre", "cursive_core", "eyre", @@ -1628,7 +1628,7 @@ dependencies = [ name = "git-branchless-opts" version = "0.10.0" dependencies = [ - "clap 4.5.32", + "clap 4.5.46", "clap_mangen", "git-branchless-lib", "itertools 0.14.0", @@ -1732,7 +1732,7 @@ dependencies = [ name = "git-branchless-submit" version = "0.10.0" dependencies = [ - "clap 4.5.32", + "clap 4.5.46", "cursive_core", "esl01-dag", "eyre", @@ -1760,7 +1760,7 @@ version = "0.10.0" dependencies = [ "assert_cmd", "bstr", - "clap 4.5.32", + "clap 4.5.46", "crossbeam", "cursive", "esl01-dag", @@ -3156,7 +3156,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adfb2974d3500342f111c2642357b8eda61977b8d4f2994274aa07a0ad834069" dependencies = [ - "clap 4.5.32", + "clap 4.5.46", "diffy", "scm-record 0.4.0", "sha1", diff --git a/Cargo.toml b/Cargo.toml index 45ef4bb69..231004c41 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -40,7 +40,7 @@ chashmap = "2.2.2" chrono = "0.4.41" chrono-english = "0.1.7" chronoutil = "0.2.7" -clap = "4.5.32" +clap = "4.5.46" clap_mangen = "0.2.27" color-eyre = "0.6.5" concolor = { version = "0.1.1", features = ["auto"] } From 775dcb8d4f9e5050a3031484033f5d63b2eecb5c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 26 Aug 2025 13:55:47 +0000 Subject: [PATCH 118/146] build: bump actions/checkout from 4 to 5 Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '5' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/generate-wiki-toc.yml | 2 +- .github/workflows/lint.yml | 2 +- .github/workflows/linux-git-devel.yml | 6 +++--- .github/workflows/linux.yml | 4 ++-- .github/workflows/macos.yml | 2 +- .github/workflows/nix-linux.yml | 2 +- .github/workflows/nix-macos.yml | 2 +- .github/workflows/release.yml | 2 +- .github/workflows/windows.yml | 2 +- 9 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/generate-wiki-toc.yml b/.github/workflows/generate-wiki-toc.yml index d7293c777..d5515d11c 100644 --- a/.github/workflows/generate-wiki-toc.yml +++ b/.github/workflows/generate-wiki-toc.yml @@ -8,7 +8,7 @@ jobs: "generate-toc": runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: repository: ${{ github.repository }}.wiki token: ${{ secrets.WIKI_UPDATE_TOC_TOKEN }} diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 9e9033f3b..2315f6dca 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -16,7 +16,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Forbid nocommit string run: | diff --git a/.github/workflows/linux-git-devel.yml b/.github/workflows/linux-git-devel.yml index 086c7175a..50d18c895 100644 --- a/.github/workflows/linux-git-devel.yml +++ b/.github/workflows/linux-git-devel.yml @@ -26,13 +26,13 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: path: git-master repository: git/git ref: master - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: path: git-next repository: git/git @@ -57,7 +57,7 @@ jobs: toolchain: 1.74 override: true - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: path: git-branchless diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 4650c6d26..293274306 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -21,7 +21,7 @@ jobs: git-version: ["v2.24.3", "v2.29.2", "v2.33.1", "v2.37.3"] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: repository: git/git ref: ${{ matrix.git-version }} @@ -61,7 +61,7 @@ jobs: git-version: ["v2.24.3", "v2.29.2", "v2.33.1", "v2.37.3"] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: "Download artifact: git" uses: actions/download-artifact@v4 with: diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index c9bee8252..99aaf9cf9 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -21,7 +21,7 @@ jobs: runs-on: macos-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Set up Rust uses: actions-rs/toolchain@v1 diff --git a/.github/workflows/nix-linux.yml b/.github/workflows/nix-linux.yml index 5c9f58097..87fc98c4a 100644 --- a/.github/workflows/nix-linux.yml +++ b/.github/workflows/nix-linux.yml @@ -12,7 +12,7 @@ jobs: name: nix-build timeout-minutes: 40 steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: fetch-depth: 0 - uses: cachix/install-nix-action@v31 diff --git a/.github/workflows/nix-macos.yml b/.github/workflows/nix-macos.yml index 203e7e2d1..bf8108ae6 100644 --- a/.github/workflows/nix-macos.yml +++ b/.github/workflows/nix-macos.yml @@ -19,7 +19,7 @@ jobs: name: nix-build timeout-minutes: 40 steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: fetch-depth: 0 - uses: cachix/install-nix-action@v31 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 47f4eb9bd..eec7c9163 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -37,7 +37,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Install packages (Ubuntu) if: startsWith(matrix.os, 'ubuntu-24.04') diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 414d75c57..cd017b45a 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -14,7 +14,7 @@ jobs: run-tests: runs-on: windows-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Set up Rust uses: actions-rs/toolchain@v1 From b5e3b0874549e157bdaf58d8f62b160aa6e7d897 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 26 Aug 2025 13:55:37 +0000 Subject: [PATCH 119/146] build: bump actions/download-artifact from 4 to 5 Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4 to 5. - [Release notes](https://github.com/actions/download-artifact/releases) - [Commits](https://github.com/actions/download-artifact/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/download-artifact dependency-version: '5' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/linux.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 293274306..7a2820a4d 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -63,7 +63,7 @@ jobs: steps: - uses: actions/checkout@v5 - name: "Download artifact: git" - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v5 with: name: git-${{ matrix.git-version }} From 8a6f6b15e2973547ce0efbd4ba9bab3f5c08e38f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 26 Aug 2025 13:55:03 +0000 Subject: [PATCH 120/146] build: bump Swatinem/rust-cache from 2.7.8 to 2.8.0 --- updated-dependencies: - dependency-name: Swatinem/rust-cache dependency-version: 2.8.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/lint.yml | 2 +- .github/workflows/linux.yml | 2 +- .github/workflows/macos.yml | 2 +- .github/workflows/windows.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 2315f6dca..d70a3a378 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -35,7 +35,7 @@ jobs: override: true - name: Cache dependencies - uses: Swatinem/rust-cache@9d47c6ad4b02e050fd481d890b2ea34778fd09d6 + uses: Swatinem/rust-cache@98c8021b550208e191a6a3145459bfc9fb29c4c0 - name: Run `cargo fmt` uses: actions-rs/cargo@v1 diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 7a2820a4d..faa2c65fa 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -78,7 +78,7 @@ jobs: override: true - name: Cache dependencies - uses: Swatinem/rust-cache@9d47c6ad4b02e050fd481d890b2ea34778fd09d6 + uses: Swatinem/rust-cache@98c8021b550208e191a6a3145459bfc9fb29c4c0 - name: Compile (all features) run: cargo build --all-features --all-targets --workspace diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index 99aaf9cf9..17d8b0f2c 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -31,7 +31,7 @@ jobs: override: true - name: Cache dependencies - uses: Swatinem/rust-cache@9d47c6ad4b02e050fd481d890b2ea34778fd09d6 + uses: Swatinem/rust-cache@98c8021b550208e191a6a3145459bfc9fb29c4c0 - name: Compile run: cargo build --benches --tests diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index cd017b45a..b7c6b3e4b 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -24,7 +24,7 @@ jobs: override: true - name: Cache dependencies - uses: Swatinem/rust-cache@9d47c6ad4b02e050fd481d890b2ea34778fd09d6 + uses: Swatinem/rust-cache@98c8021b550208e191a6a3145459bfc9fb29c4c0 - name: Compile run: cargo build --all-targets --workspace From 494533429c69473379acac6440628da8aa7dff91 Mon Sep 17 00:00:00 2001 From: Waleed Khan Date: Mon, 1 Sep 2025 19:01:48 +0000 Subject: [PATCH 121/146] build: create `.devcontainer` Useful since it's easier than trying to get Nix set up on my laptop. --- .devcontainer/Dockerfile | 20 ++++++++++++++++ .devcontainer/devcontainer.json | 42 +++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 .devcontainer/Dockerfile create mode 100644 .devcontainer/devcontainer.json diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 000000000..c598f7988 --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,20 @@ +# Use Ubuntu as base since we're using features for Rust/Git/Nix +FROM mcr.microsoft.com/devcontainers/base:ubuntu + +# Install git build dependencies and development tools that aren't available as features +RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ + && apt-get install -y \ + # Git build dependencies for testing different Git versions + dh-autoreconf \ + libcurl4-gnutls-dev \ + libexpat1-dev \ + gettext \ + libz-dev \ + libssl-dev \ + # Additional development tools + build-essential \ + pkg-config \ + # Tools for testing different Git versions + autoconf \ + make \ + libpcre2-dev diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 000000000..77df4748d --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,42 @@ +{ + "name": "git-branchless", + "build": { + "dockerfile": "Dockerfile" + }, + + // Features to add to the dev container. More info: https://containers.dev/features. + "features": { + "ghcr.io/devcontainers/features/rust:1": { + "version": "1.81", + "profile": "default" + }, + "ghcr.io/devcontainers/features/git:1": { + "ppa": true, + "version": "2.37.3" + }, + "ghcr.io/devcontainers/features/nix:1": { + "multiUser": false, + "version": "2.24" + } + }, + + // Configure tool-specific properties. + "customizations": { + // Configure properties specific to VS Code. + "vscode": { + // Add the IDs of extensions you want installed when the container is created. + "extensions": [ + "rust-lang.rust-analyzer", + "tamasfe.even-better-toml", + "ms-vscode.vscode-json", + "ms-vscode.vscode-markdown" + ], + "settings": { + "terminal.integrated.shellIntegration.enabled": true + } + } + }, + + // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root. + "remoteUser": "vscode" +} From d8238ffeb082b2c3c27917381fc0da5392c5d713 Mon Sep 17 00:00:00 2001 From: Waleed Khan Date: Mon, 1 Sep 2025 19:04:11 +0000 Subject: [PATCH 122/146] build: upgrade MSRV to `1.82` and migrate from `esl01-dag` to `sapling-dag` `esl01-dag` doesn't compile on Rust 1.89. The easiest fix is to migrate to `sapling-dag`, which is the maintained successor crate. --- .github/workflows/lint.yml | 2 +- .github/workflows/linux-git-devel.yml | 2 +- .github/workflows/linux.yml | 2 +- .github/workflows/macos.yml | 2 +- .github/workflows/windows.yml | 2 +- .gitpod.yml | 2 +- CHANGELOG.md | 4 +- Cargo.lock | 318 +++++++++++++++----------- Cargo.toml | 2 +- flake.lock | 6 +- git-branchless-lib/Cargo.toml | 2 +- git-branchless-lib/src/core/dag.rs | 27 ++- git-branchless-lib/src/git/repo.rs | 2 +- git-branchless-move/src/lib.rs | 4 +- git-branchless-revset/src/builtins.rs | 2 +- git-branchless-revset/src/pattern.rs | 4 +- git-branchless/Cargo.toml | 2 +- rust-toolchain.toml | 2 +- 18 files changed, 215 insertions(+), 172 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index d70a3a378..a9b3bc922 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -30,7 +30,7 @@ jobs: uses: actions-rs/toolchain@v1 with: profile: minimal - toolchain: 1.74 + toolchain: 1.82 components: rustfmt, clippy override: true diff --git a/.github/workflows/linux-git-devel.yml b/.github/workflows/linux-git-devel.yml index 50d18c895..b425af023 100644 --- a/.github/workflows/linux-git-devel.yml +++ b/.github/workflows/linux-git-devel.yml @@ -54,7 +54,7 @@ jobs: uses: actions-rs/toolchain@v1 with: profile: minimal - toolchain: 1.74 + toolchain: 1.82 override: true - uses: actions/checkout@v5 diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index faa2c65fa..221c5124f 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -74,7 +74,7 @@ jobs: uses: actions-rs/toolchain@v1 with: profile: minimal - toolchain: 1.74 + toolchain: 1.82 override: true - name: Cache dependencies diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index 17d8b0f2c..c48c9edef 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -27,7 +27,7 @@ jobs: uses: actions-rs/toolchain@v1 with: profile: minimal - toolchain: 1.74 + toolchain: 1.82 override: true - name: Cache dependencies diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index b7c6b3e4b..4ff7828d1 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -20,7 +20,7 @@ jobs: uses: actions-rs/toolchain@v1 with: profile: minimal - toolchain: 1.74 + toolchain: 1.82 override: true - name: Cache dependencies diff --git a/.gitpod.yml b/.gitpod.yml index ee7f8e2c2..71ca508ce 100644 --- a/.gitpod.yml +++ b/.gitpod.yml @@ -2,7 +2,7 @@ image: file: .gitpod/Dockerfile tasks: - init: | - rustup default 1.74 + rustup default 1.82 cargo test --no-run cargo install cargo-insta cargo install git-branchless && git branchless init diff --git a/CHANGELOG.md b/CHANGELOG.md index 1739ff5a5..7a3a14bd5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- BREAKING (#1593): The minimum supported Rust version (MSRV) is now 1.82. - `scm-record` upgraded to [v0.5.0](https://github.com/arxanas/scm-record/releases/tag/v0.5.0). - (#1463): `git switch` now accepts a revset whose sole head will be checked out @@ -53,7 +54,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - BREAKING (#1128) Arguments/revsets passed to `git sync` are now resolved to their respective stacks. - This allows `git sync my-branch` to work as expected, instead of needing to use `git sync 'stack(my-branch)'`. The behavior of `git sync` when called without arguments is not affected by this change. If you rely on the previous behavior, please use `git move -x -d 'main()'` instead. - BREAKING (#1152) Previously, `git hide` would not delete branches pointing to the hidden commits unless `-D`/`--delete-branches` was passed. Now, deleting branches is the default behavior. Pass `--no-delete-branches` to restore the old behavior. -- BREAKING (#1292): The minimum supported Rust version (MSRV) is now 1.74. +- BREAKING (#1292): The minimum supported Rust version (MSRV) is now 1.82. - (#1204) The default instructions for `git reword` are now wrapped to 72 characters. - (#1230) The icon for omitted commits in the smartlog was changed from `⊘` to `◌`. @@ -346,6 +347,7 @@ This is safe to ignore. We are waiting for an upstream dependency to be updated ### Changed - (#63) The UI for `git undo` has been changed in various ways. Thanks to @chapati23 for their feedback. You can leave your own feedback here: https://github.com/arxanas/git-branchless/discussions +@NOCOMMIT: update comment/link - Merge-base calculation is now performed using [EdenSCM](https://github.com/facebookexperimental/eden)'s directed acyclic graph crate ([`esl01-dag`](https://crates.io/crates/esl01-dag)), which significantly improves performance on large repositories. - Subprocess command output is now dimmed and printed above a progress meter, to make it easier to visually filter out important `git-branchless` status messages from unimportant `git` machinery output. - `git move` tries to avoid issuing a superfluous `git checkout` operation if you're already at the target commit/branch. diff --git a/Cargo.lock b/Cargo.lock index 9966f8151..e0431cfe5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,17 @@ # It is not intended for manual editing. version = 3 +[[package]] +name = "abomonation_derive" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e50e2a046af56a864c62d97b7153fda72c596e646be1b0c7963736821f6e1efa" +dependencies = [ + "proc-macro2", + "quote", + "synstructure", +] + [[package]] name = "addr2line" version = "0.21.0" @@ -130,6 +141,12 @@ version = "1.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" +[[package]] +name = "arbitrary" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" + [[package]] name = "arrayvec" version = "0.7.6" @@ -251,6 +268,9 @@ name = "bitflags" version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" +dependencies = [ + "serde", +] [[package]] name = "block-buffer" @@ -1088,126 +1108,6 @@ dependencies = [ "windows-sys 0.59.0", ] -[[package]] -name = "esl01-atomicfile" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73020f11f072c66f335e7273c3509220c6c06db8e2f27e55f487d484c03c3ae2" -dependencies = [ - "tempfile", - "tracing", -] - -[[package]] -name = "esl01-dag" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cf33c6d93aebed1408b6e6379d3083ea0dc48b3256eba858e24ff1ad0910c5c" -dependencies = [ - "anyhow", - "async-trait", - "bitflags 1.3.2", - "byteorder", - "esl01-dag-types", - "esl01-drawdag", - "esl01-indexedlog", - "esl01-mincode", - "esl01-minibytes", - "esl01-nonblocking", - "esl01-renderdag", - "esl01-vlqencoding", - "fail", - "fs2", - "futures", - "indexmap 1.9.3", - "rand 0.8.5", - "serde", - "tempfile", - "thiserror 1.0.69", - "tracing", -] - -[[package]] -name = "esl01-dag-types" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd764f3e0441aa076242c5591e8c70e9250ece9a0298b9a118a636c97121608f" -dependencies = [ - "esl01-minibytes", - "serde", -] - -[[package]] -name = "esl01-drawdag" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58614a84fe70f0dcf8e4126950606bbe9339bf931002791e34bae0fab0a8c9a7" - -[[package]] -name = "esl01-indexedlog" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca189b77364e351675e0ac8274a8df0be0c88d3e66103d81f9bd265371f49389" -dependencies = [ - "byteorder", - "esl01-atomicfile", - "esl01-minibytes", - "esl01-vlqencoding", - "fs2", - "hex", - "libc", - "memmap", - "once_cell", - "rand 0.8.5", - "tempfile", - "tracing", - "twox-hash", -] - -[[package]] -name = "esl01-mincode" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "238b140f1ced88489a0b3770b3a7613237d73919d6e4c9b8d295c44142264482" -dependencies = [ - "byteorder", - "esl01-vlqencoding", - "serde", -] - -[[package]] -name = "esl01-minibytes" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0068579525ef038377d270f31c6cf5062da1ac99f34c7bc83b31bc61aa701ad1" -dependencies = [ - "bytes", - "memmap", - "serde", -] - -[[package]] -name = "esl01-nonblocking" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a2c37087d9d14a9d6bdf80e61dc7757763839cb528f6b866256b1773dd378ba" - -[[package]] -name = "esl01-renderdag" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a1840969ab8be31e186bb6d2f672d586dcd203dd4019a80dc1277a14686eca9" -dependencies = [ - "bitflags 1.3.2", - "itertools 0.10.5", -] - -[[package]] -name = "esl01-vlqencoding" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ad8aca6f16078736d5e7762a45125eaa685dfe47155f4a72ec301f13a5f0749" - [[package]] name = "eyre" version = "0.6.12" @@ -1311,6 +1211,12 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" +[[package]] +name = "futures" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a471a38ef8ed83cd6e40aa59c1ffe17db6855c18e3604d9c4ed8c08ebc28678" + [[package]] name = "futures" version = "0.3.31" @@ -1388,6 +1294,7 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ + "futures 0.1.31", "futures-channel", "futures-core", "futures-io", @@ -1468,7 +1375,6 @@ dependencies = [ "color-eyre", "console", "cursive_core", - "esl01-dag", "eyre", "fslock", "git-branchless-hook", @@ -1496,6 +1402,7 @@ dependencies = [ "rayon", "regex", "rusqlite", + "sapling-dag", "scm-diff-editor", "thiserror 2.0.12", "tracing", @@ -1568,9 +1475,8 @@ dependencies = [ "console", "criterion", "cursive", - "esl01-dag", "eyre", - "futures", + "futures 0.3.31", "git2", "indicatif", "insta", @@ -1581,6 +1487,7 @@ dependencies = [ "rayon", "regex", "rusqlite", + "sapling-dag", "scm-record 0.5.0", "serde", "shell-words", @@ -1598,13 +1505,13 @@ dependencies = [ name = "git-branchless-move" version = "0.10.0" dependencies = [ - "esl01-dag", "eyre", "git-branchless-lib", "git-branchless-opts", "git-branchless-revset", "insta", "rayon", + "sapling-dag", "tracing", ] @@ -1613,13 +1520,13 @@ name = "git-branchless-navigation" version = "0.10.0" dependencies = [ "cursive", - "esl01-dag", "eyre", "git-branchless-lib", "git-branchless-opts", "git-branchless-revset", "git-branchless-smartlog", "itertools 0.14.0", + "sapling-dag", "skim", "tracing", ] @@ -1639,7 +1546,6 @@ dependencies = [ name = "git-branchless-query" version = "0.10.0" dependencies = [ - "esl01-dag", "eyre", "git-branchless-invoke", "git-branchless-lib", @@ -1647,6 +1553,7 @@ dependencies = [ "git-branchless-revset", "insta", "itertools 0.14.0", + "sapling-dag", "tracing", ] @@ -1656,7 +1563,6 @@ version = "0.10.0" dependencies = [ "cursive", "cursive_buffered_backend", - "esl01-dag", "eyre", "git-branchless-invoke", "git-branchless-lib", @@ -1665,6 +1571,7 @@ dependencies = [ "insta", "itertools 0.14.0", "rayon", + "sapling-dag", "scm-record 0.5.0", "tracing", ] @@ -1677,9 +1584,8 @@ dependencies = [ "chrono", "chrono-english", "chronoutil", - "esl01-dag", "eyre", - "futures", + "futures 0.3.31", "git-branchless-lib", "git-branchless-opts", "glob", @@ -1690,6 +1596,7 @@ dependencies = [ "lazy_static", "rayon", "regex", + "sapling-dag", "serde_json", "thiserror 2.0.12", "tracing", @@ -1701,13 +1608,13 @@ version = "0.10.0" dependencies = [ "bstr", "chrono", - "esl01-dag", "eyre", "git-branchless-lib", "git-branchless-opts", "git-branchless-revset", "insta", "rayon", + "sapling-dag", "shell-words", "tempfile", "tracing", @@ -1718,13 +1625,13 @@ name = "git-branchless-smartlog" version = "0.10.0" dependencies = [ "cursive_core", - "esl01-dag", "eyre", "git-branchless-invoke", "git-branchless-lib", "git-branchless-opts", "git-branchless-revset", "insta", + "sapling-dag", "tracing", ] @@ -1734,7 +1641,6 @@ version = "0.10.0" dependencies = [ "clap 4.5.46", "cursive_core", - "esl01-dag", "eyre", "git-branchless-invoke", "git-branchless-lib", @@ -1747,6 +1653,7 @@ dependencies = [ "lazy_static", "rayon", "regex", + "sapling-dag", "serde", "serde_json", "tempfile", @@ -1763,7 +1670,6 @@ dependencies = [ "clap 4.5.46", "crossbeam", "cursive", - "esl01-dag", "eyre", "fslock", "git-branchless-invoke", @@ -1777,6 +1683,7 @@ dependencies = [ "maplit", "num_cpus", "rayon", + "sapling-dag", "scm-bisect", "serde", "serde_json", @@ -1985,8 +1892,11 @@ version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2481980430f9f78649238835720ddccc57e52df14ffce1c6f37391d61b563e9" dependencies = [ + "arbitrary", "equivalent", "hashbrown 0.15.0", + "rayon", + "serde", ] [[package]] @@ -2278,13 +2188,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] -name = "memmap" -version = "0.7.0" +name = "memmap2" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6585fd95e7bb50d6cc31e20d4cf9afb4e2ba16c5846fc76793f11218da9c475b" +checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" dependencies = [ "libc", - "winapi", ] [[package]] @@ -3131,6 +3040,127 @@ dependencies = [ "winapi-util", ] +[[package]] +name = "sapling-atomicfile" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d91162bc6659937f86b9c85f0e8c31b605063ac8923b21cac7c482cbfda4407" +dependencies = [ + "tempfile", + "tracing", +] + +[[package]] +name = "sapling-dag" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c90cc3ba9ec3cfa19cd9125d5b9df37750b3bb3e0e70462c0183ec7747a1702f" +dependencies = [ + "anyhow", + "async-trait", + "bitflags 2.9.1", + "byteorder", + "fail", + "fs2", + "futures 0.3.31", + "indexmap 2.11.0", + "rand 0.8.5", + "sapling-dag-types", + "sapling-drawdag", + "sapling-indexedlog", + "sapling-mincode", + "sapling-minibytes", + "sapling-nonblocking", + "sapling-renderdag", + "sapling-vlqencoding", + "serde", + "tempfile", + "thiserror 1.0.69", + "tracing", +] + +[[package]] +name = "sapling-dag-types" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ec65200f1f90d5719296a011e45ba61a29942b60fae7c3c5f90ca87656ff68d" +dependencies = [ + "abomonation_derive", + "sapling-minibytes", + "serde", +] + +[[package]] +name = "sapling-drawdag" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "761cba3dfbbbec1ddf1132711df226dd969c8e3620b8849dc3a8bb7be4a2032c" + +[[package]] +name = "sapling-indexedlog" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e5f65ae962b8d889abb3db5cc8bf81bde40282055ece4617dac5e74eac0b790" +dependencies = [ + "byteorder", + "fs2", + "hex", + "libc", + "memmap2", + "once_cell", + "rand 0.8.5", + "sapling-atomicfile", + "sapling-minibytes", + "sapling-vlqencoding", + "tempfile", + "tracing", + "twox-hash", + "winapi", +] + +[[package]] +name = "sapling-mincode" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "172868196a99be4fa7118ad15cedc5c1d0e4a73f29e48b5efdcd5939a683c973" +dependencies = [ + "byteorder", + "sapling-vlqencoding", + "serde", +] + +[[package]] +name = "sapling-minibytes" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51437efe022fb6d20f0873e99da2d0f856b7be819359988ddb86bc0db3cf5c2e" +dependencies = [ + "bytes", + "memmap2", + "serde", +] + +[[package]] +name = "sapling-nonblocking" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5190595f39a20f732f54e969974aac6840731b20ab85fcac010728f0e1735c69" + +[[package]] +name = "sapling-renderdag" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edffb89cab87bd0901c5749d576f5d37a1f34e05160e936f463f4e94cc447b61" +dependencies = [ + "bitflags 2.9.1", +] + +[[package]] +name = "sapling-vlqencoding" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0971439fe0def46ccd69141e5f8c23c2b8d6e88606ddda6ea0670b5691686c4d" + [[package]] name = "scanlex" version = "0.1.4" @@ -3520,6 +3550,18 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "synstructure" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", + "unicode-xid", +] + [[package]] name = "sysinfo" version = "0.33.1" @@ -4106,7 +4148,7 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.48.0", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 231004c41..5a0c9abd2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -51,7 +51,7 @@ cursive = { version = "0.20.0", default-features = false, features = [ ] } cursive_buffered_backend = "0.6.2" cursive_core = "0.3.7" -eden_dag = { package = "esl01-dag", version = "0.3.0" } +eden_dag = { package = "sapling-dag", version = "0.1.0" } eyre = "0.6.12" fslock = "0.2.1" futures = "0.3.30" diff --git a/flake.lock b/flake.lock index a0bc47e3d..8f8d5cd88 100644 --- a/flake.lock +++ b/flake.lock @@ -2,11 +2,11 @@ "nodes": { "nixpkgs": { "locked": { - "lastModified": 1708373374, - "narHash": "sha256-yEyDvDj/YQc4GOZa/cXx6YUzexD8uv1rUvD6SJVr6UI=", + "lastModified": 1756636162, + "narHash": "sha256-mBecwgUTWRgClJYqcF+y4O1bY8PQHqeDpB+zsAn+/zA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "93e1c2d08467d1117ebac45689469613a9fe8453", + "rev": "37ff64b7108517f8b6ba5705ee5085eac636a249", "type": "github" }, "original": { diff --git a/git-branchless-lib/Cargo.toml b/git-branchless-lib/Cargo.toml index 15d8ee590..968e5be4f 100644 --- a/git-branchless-lib/Cargo.toml +++ b/git-branchless-lib/Cargo.toml @@ -6,7 +6,7 @@ keywords = ["git"] license = "MIT OR Apache-2.0" name = "git-branchless-lib" repository = "https://github.com/arxanas/git-branchless" -rust-version = "1.64.0" +rust-version = "1.82" version = "0.10.0" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/git-branchless-lib/src/core/dag.rs b/git-branchless-lib/src/core/dag.rs index 8178054d0..3c1c28c15 100644 --- a/git-branchless-lib/src/core/dag.rs +++ b/git-branchless-lib/src/core/dag.rs @@ -8,9 +8,8 @@ use std::future::Future; use std::sync::{Arc, Mutex}; use async_trait::async_trait; -use eden_dag::namedag::MemNameDag; -use eden_dag::nameset::hints::Hints; use eden_dag::ops::{DagPersistent, Parents}; +use eden_dag::set::hints::Hints; use eden_dag::{DagAlgorithm, Group, VertexListWithOptions, VertexOptions}; use eyre::Context; use futures::{StreamExt, TryStreamExt}; @@ -24,26 +23,26 @@ use crate::git::{Commit, MaybeZeroOid, NonZeroOid, Repo, Time}; use super::repo_ext::RepoReferencesSnapshot; -impl From for eden_dag::VertexName { +impl From for eden_dag::Vertex { fn from(oid: NonZeroOid) -> Self { - eden_dag::VertexName::copy_from(oid.as_bytes()) + eden_dag::Vertex::copy_from(oid.as_bytes()) } } -impl TryFrom for MaybeZeroOid { +impl TryFrom for MaybeZeroOid { type Error = eyre::Error; - fn try_from(value: eden_dag::VertexName) -> Result { + fn try_from(value: eden_dag::Vertex) -> Result { let oid = git2::Oid::from_bytes(value.as_ref())?; let oid = MaybeZeroOid::from(oid); Ok(oid) } } -impl TryFrom for NonZeroOid { +impl TryFrom for NonZeroOid { type Error = eyre::Error; - fn try_from(value: eden_dag::VertexName) -> Result { + fn try_from(value: eden_dag::Vertex) -> Result { let oid = MaybeZeroOid::try_from(value)?; let oid = NonZeroOid::try_from(oid)?; Ok(oid) @@ -51,10 +50,10 @@ impl TryFrom for NonZeroOid { } /// A compact set of commits, backed by the Eden DAG. -pub type CommitSet = eden_dag::NameSet; +pub type CommitSet = eden_dag::Set; /// A vertex referring to a single commit in the Eden DAG. -pub type CommitVertex = eden_dag::VertexName; +pub type CommitVertex = eden_dag::Vertex; impl From for CommitSet { fn from(oid: NonZeroOid) -> Self { @@ -123,8 +122,8 @@ impl Parents for GitParentsBlocking { async fn hint_subdag_for_insertion( &self, _heads: &[CommitVertex], - ) -> Result { - Ok(MemNameDag::new()) + ) -> Result { + Ok(eden_dag::MemDag::new()) } } @@ -290,7 +289,7 @@ impl Dag { let master_group_options = { let mut options = VertexOptions::default(); - options.highest_group = Group::MASTER; + options.desired_group = Group::MASTER; options }; let master_heads = self @@ -449,7 +448,7 @@ impl Dag { #[instrument] pub fn set_count(&self, commit_set: &CommitSet) -> eden_dag::Result { let result = self.run_blocking(commit_set.count())?; - Ok(result) + Ok(result.try_into().unwrap()) } /// Wrapper around NameSet method. diff --git a/git-branchless-lib/src/git/repo.rs b/git-branchless-lib/src/git/repo.rs index 387f5a2c1..507ef7ec3 100644 --- a/git-branchless-lib/src/git/repo.rs +++ b/git-branchless-lib/src/git/repo.rs @@ -630,7 +630,7 @@ impl Repo { /// Get the directory where the DAG for the repository is stored. #[instrument] pub fn get_dag_dir(&self) -> Result { - // Updated from `dag` to `dag2` for `esl01-dag==0.3.0`, since it may + // Updated from `dag` to `dag2` for `sapling-dag==0.1.0`, since it may // not be backwards-compatible. Ok(self.get_branchless_dir()?.join("dag2")) } diff --git a/git-branchless-move/src/lib.rs b/git-branchless-move/src/lib.rs index 86b081dea..4dc6a1b48 100644 --- a/git-branchless-move/src/lib.rs +++ b/git-branchless-move/src/lib.rs @@ -16,7 +16,7 @@ use std::collections::HashMap; use std::fmt::Write; use std::time::SystemTime; -use eden_dag::VertexName; +use eden_dag::Vertex; use lib::core::repo_ext::RepoExt; use lib::util::{ExitCode, EyreExitOr}; use rayon::ThreadPoolBuilder; @@ -40,7 +40,7 @@ use lib::git::{GitRunInfo, NonZeroOid, Repo}; #[instrument] fn resolve_base_commit( dag: &Dag, - merge_base_oid: Option, + merge_base_oid: Option, oid: NonZeroOid, ) -> eyre::Result { let bases = match merge_base_oid { diff --git a/git-branchless-revset/src/builtins.rs b/git-branchless-revset/src/builtins.rs index ec865e66d..ccf8bc08a 100644 --- a/git-branchless-revset/src/builtins.rs +++ b/git-branchless-revset/src/builtins.rs @@ -1,5 +1,5 @@ use bstr::ByteSlice; -use eden_dag::nameset::hints::Hints; +use eden_dag::set::hints::Hints; use lib::core::dag::CommitSet; use lib::core::eventlog::{EventLogDb, EventReplayer}; diff --git a/git-branchless-revset/src/pattern.rs b/git-branchless-revset/src/pattern.rs index 4d969c488..0769028f9 100644 --- a/git-branchless-revset/src/pattern.rs +++ b/git-branchless-revset/src/pattern.rs @@ -4,7 +4,7 @@ use std::sync::{Arc, Mutex}; use chrono::{DateTime, Local}; use chrono_english::{parse_date_string, parse_duration, DateError, Dialect, Interval}; use chronoutil::RelativeDuration; -use eden_dag::nameset::hints::{Flags, Hints}; +use eden_dag::set::hints::{Flags, Hints}; use futures::StreamExt; use lib::core::dag::{CommitSet, CommitVertex}; use lib::core::effects::{Effects, OperationType}; @@ -153,7 +153,7 @@ pub(super) fn make_pattern_matcher_set( let _effects = effects; let len = self.commits_to_match.count().await?; - progress.notify_progress(0, len); + progress.notify_progress(0, len.try_into().unwrap()); let stream = self.commits_to_match.iter().await?; let commit_oids = stream.collect::>().await; diff --git a/git-branchless/Cargo.toml b/git-branchless/Cargo.toml index 830f42cf7..8e78ace34 100644 --- a/git-branchless/Cargo.toml +++ b/git-branchless/Cargo.toml @@ -11,7 +11,7 @@ license = "MIT OR Apache-2.0" name = "git-branchless" readme = "../README.md" repository = "https://github.com/arxanas/git-branchless" -rust-version = "1.74" +rust-version = "1.82" version = "0.10.0" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 94ed87190..59822bf61 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,4 +1,4 @@ [toolchain] # Current minimum-supported Rust version -channel = "1.74" +channel = "1.82" profile = "default" From 8362efac04bef426ec963064f9c4c82aec5d3d55 Mon Sep 17 00:00:00 2001 From: Waleed Khan Date: Mon, 1 Sep 2025 19:27:41 +0000 Subject: [PATCH 123/146] build: fix lint issues --- git-branchless-hook/src/lib.rs | 2 +- git-branchless-init/src/lib.rs | 2 +- git-branchless-invoke/src/lib.rs | 2 +- git-branchless-lib/src/core/effects.rs | 2 +- git-branchless-lib/src/core/repo_ext.rs | 4 +-- git-branchless-lib/src/core/task.rs | 2 +- git-branchless-lib/src/git/object.rs | 6 ++-- git-branchless-lib/src/git/repo.rs | 45 +++++++++++++++---------- git-branchless-lib/src/git/tree.rs | 4 +-- git-branchless-lib/src/lib.rs | 2 +- git-branchless-move/src/lib.rs | 4 +-- git-branchless-navigation/src/lib.rs | 4 +-- git-branchless-navigation/src/prompt.rs | 2 +- git-branchless-opts/src/lib.rs | 2 +- git-branchless-record/src/lib.rs | 2 +- git-branchless-revset/src/lib.rs | 2 +- git-branchless-revset/src/parser.rs | 2 +- git-branchless-reword/src/lib.rs | 2 +- git-branchless-smartlog/src/lib.rs | 2 +- git-branchless-submit/src/lib.rs | 2 +- git-branchless-test/src/lib.rs | 4 +-- git-branchless-undo/src/lib.rs | 2 +- git-branchless/src/lib.rs | 2 +- scm-bisect/src/lib.rs | 2 +- 24 files changed, 57 insertions(+), 48 deletions(-) diff --git a/git-branchless-hook/src/lib.rs b/git-branchless-hook/src/lib.rs index f4c8348a0..d339baae6 100644 --- a/git-branchless-hook/src/lib.rs +++ b/git-branchless-hook/src/lib.rs @@ -14,7 +14,7 @@ clippy::clone_on_ref_ptr, clippy::dbg_macro )] -#![allow(clippy::too_many_arguments, clippy::blocks_in_if_conditions)] +#![allow(clippy::too_many_arguments, clippy::blocks_in_conditions)] use std::fmt::Write; use std::fs::File; diff --git a/git-branchless-init/src/lib.rs b/git-branchless-init/src/lib.rs index 5097e6895..4d65af814 100644 --- a/git-branchless-init/src/lib.rs +++ b/git-branchless-init/src/lib.rs @@ -7,7 +7,7 @@ clippy::clone_on_ref_ptr, clippy::dbg_macro )] -#![allow(clippy::too_many_arguments, clippy::blocks_in_if_conditions)] +#![allow(clippy::too_many_arguments, clippy::blocks_in_conditions)] use std::fmt::Write; use std::io::{stdin, stdout, BufRead, BufReader, Write as WriteIo}; diff --git a/git-branchless-invoke/src/lib.rs b/git-branchless-invoke/src/lib.rs index a6cd9738f..d56315bb3 100644 --- a/git-branchless-invoke/src/lib.rs +++ b/git-branchless-invoke/src/lib.rs @@ -11,7 +11,7 @@ clippy::clone_on_ref_ptr, clippy::dbg_macro )] -#![allow(clippy::too_many_arguments, clippy::blocks_in_if_conditions)] +#![allow(clippy::too_many_arguments, clippy::blocks_in_conditions)] use std::any::Any; use std::collections::HashMap; diff --git a/git-branchless-lib/src/core/effects.rs b/git-branchless-lib/src/core/effects.rs index 24e9bee46..fbc09fff5 100644 --- a/git-branchless-lib/src/core/effects.rs +++ b/git-branchless-lib/src/core/effects.rs @@ -597,7 +597,7 @@ impl Effects { /// value, rather than from zero. The practical implication is that you can /// see the aggregate time it took to carry out sibling operations, i.e. the /// same operation called multiple times in a loop. - pub fn start_operation(&self, operation_type: OperationType) -> (Effects, ProgressHandle) { + pub fn start_operation(&self, operation_type: OperationType) -> (Effects, ProgressHandle<'_>) { let operation_key = { let mut result = self.operation_key.clone(); result.push(operation_type); diff --git a/git-branchless-lib/src/core/repo_ext.rs b/git-branchless-lib/src/core/repo_ext.rs index 26e2b6019..21a5902c1 100644 --- a/git-branchless-lib/src/core/repo_ext.rs +++ b/git-branchless-lib/src/core/repo_ext.rs @@ -28,7 +28,7 @@ pub struct RepoReferencesSnapshot { /// Helper functions on [`Repo`]. pub trait RepoExt { /// Get the `Branch` for the main branch for the repository. - fn get_main_branch(&self) -> eyre::Result; + fn get_main_branch(&self) -> eyre::Result>; /// Get the OID corresponding to the main branch. fn get_main_branch_oid(&self) -> eyre::Result; @@ -47,7 +47,7 @@ pub trait RepoExt { } impl RepoExt for Repo { - fn get_main_branch(&self) -> eyre::Result { + fn get_main_branch(&self) -> eyre::Result> { let main_branch_name = get_main_branch_name(self)?; match self.find_branch(&main_branch_name, BranchType::Local)? { Some(branch) => Ok(branch), diff --git a/git-branchless-lib/src/core/task.rs b/git-branchless-lib/src/core/task.rs index 1f7a0ce6e..cee5e9dc3 100644 --- a/git-branchless-lib/src/core/task.rs +++ b/git-branchless-lib/src/core/task.rs @@ -117,7 +117,7 @@ impl ResourcePool { /// If there are any resources available in the pool, return an arbitrary /// one. Otherwise, invoke the constructor function of the associated /// [`Resource`] and return a [`ResourceHandle`] for it. - pub fn try_create(&self) -> Result, R::Error> { + pub fn try_create(&self) -> Result, R::Error> { let resource = { let mut resources = self .resources diff --git a/git-branchless-lib/src/git/object.rs b/git-branchless-lib/src/git/object.rs index adc0c8092..3d3cce225 100644 --- a/git-branchless-lib/src/git/object.rs +++ b/git-branchless-lib/src/git/object.rs @@ -117,7 +117,7 @@ impl<'repo> Commit<'repo> { /// Get the author of this commit. #[instrument] - pub fn get_author(&self) -> Signature { + pub fn get_author(&self) -> Signature<'_> { Signature { inner: self.inner.author(), } @@ -125,7 +125,7 @@ impl<'repo> Commit<'repo> { /// Get the committer of this commit. #[instrument] - pub fn get_committer(&self) -> Signature { + pub fn get_committer(&self) -> Signature<'_> { Signature { inner: self.inner.committer(), } @@ -139,7 +139,7 @@ impl<'repo> Commit<'repo> { /// Get the `Tree` object associated with this commit. #[instrument] - pub fn get_tree(&self) -> Result { + pub fn get_tree(&self) -> Result> { let tree = self.inner.tree().map_err(|err| Error::FindTree { source: err, oid: self.inner.tree_id().into(), diff --git a/git-branchless-lib/src/git/repo.rs b/git-branchless-lib/src/git/repo.rs index 507ef7ec3..cebf2d9f7 100644 --- a/git-branchless-lib/src/git/repo.rs +++ b/git-branchless-lib/src/git/repo.rs @@ -803,7 +803,11 @@ impl Repo { /// /// If the commit has more than one parent, returns `None`. #[instrument] - pub fn get_patch_for_commit(&self, effects: &Effects, commit: &Commit) -> Result> { + pub fn get_patch_for_commit( + &self, + effects: &Effects, + commit: &Commit, + ) -> Result>> { let changed_paths = self.get_paths_touched_by_commit(commit)?; let dehydrated_commit = self.dehydrate_commit( commit, @@ -836,7 +840,7 @@ impl Repo { old_tree: Option<&Tree>, new_tree: &Tree, num_context_lines: usize, - ) -> Result { + ) -> Result> { let (effects, _progress) = effects.start_operation(OperationType::CalculateDiff); let _effects = effects; @@ -931,7 +935,7 @@ impl Repo { } /// Attempt to parse the user-provided object descriptor. - pub fn revparse_single_commit(&self, spec: &str) -> Result> { + pub fn revparse_single_commit(&self, spec: &str) -> Result>> { if spec.ends_with('@') && spec.len() > 1 { // Weird bug in `libgit2`; it seems that it treats a name like // `foo-@` the same as `@`, and ignores the leading `foo`. @@ -953,7 +957,7 @@ impl Repo { /// Find all references in the repository. #[instrument] - pub fn get_all_references(&self) -> Result> { + pub fn get_all_references(&self) -> Result>> { let mut all_references = Vec::new(); for reference in self.inner.references().map_err(Error::GetReferences)? { let reference = reference.map_err(Error::ReadReference)?; @@ -988,7 +992,7 @@ impl Repo { index: &Index, head_info: &ResolvedReferenceInfo, event_tx_id: Option, - ) -> Result<(WorkingCopySnapshot, Vec)> { + ) -> Result<(WorkingCopySnapshot<'_>, Vec)> { let (effects, _progress) = effects.start_operation(OperationType::QueryWorkingCopy); let _effects = effects; @@ -1055,7 +1059,12 @@ impl Repo { /// be a branch name and not a reference name, i.e. it should not start with /// `refs/heads/`. #[instrument] - pub fn create_branch(&self, branch_name: &str, commit: &Commit, force: bool) -> Result { + pub fn create_branch( + &self, + branch_name: &str, + commit: &Commit, + force: bool, + ) -> Result> { if branch_name.starts_with("refs/heads/") { warn!( ?branch_name, @@ -1084,7 +1093,7 @@ impl Repo { oid: NonZeroOid, force: bool, log_message: &str, - ) -> Result { + ) -> Result> { let reference = self .inner .reference(name.as_str(), oid.inner, force, log_message) @@ -1112,7 +1121,7 @@ impl Repo { /// Look up a reference with the given name. Returns `None` if not found. #[instrument] - pub fn find_reference(&self, name: &ReferenceName) -> Result> { + pub fn find_reference(&self, name: &ReferenceName) -> Result>> { match self.inner.find_reference(name.as_str()) { Ok(reference) => Ok(Some(Reference { inner: reference })), Err(err) if err.code() == git2::ErrorCode::NotFound => Ok(None), @@ -1125,7 +1134,7 @@ impl Repo { /// Get all local branches in the repository. #[instrument] - pub fn get_all_local_branches(&self) -> Result> { + pub fn get_all_local_branches(&self) -> Result>> { let mut all_branches = Vec::new(); for branch in self .inner @@ -1143,7 +1152,7 @@ impl Repo { /// Look up the branch with the given name. Returns `None` if not found. #[instrument] - pub fn find_branch(&self, name: &str, branch_type: BranchType) -> Result> { + pub fn find_branch(&self, name: &str, branch_type: BranchType) -> Result>> { match self.inner.find_branch(name, branch_type) { Ok(branch) => Ok(Some(Branch { repo: self, @@ -1159,7 +1168,7 @@ impl Repo { /// Look up a commit with the given OID. Returns `None` if not found. #[instrument] - pub fn find_commit(&self, oid: NonZeroOid) -> Result> { + pub fn find_commit(&self, oid: NonZeroOid) -> Result>> { match self.inner.find_commit(oid.inner) { Ok(commit) => Ok(Some(Commit { inner: commit })), Err(err) if err.code() == git2::ErrorCode::NotFound => Ok(None), @@ -1170,7 +1179,7 @@ impl Repo { /// Like `find_commit`, but raises a generic error if the commit could not /// be found. #[instrument] - pub fn find_commit_or_fail(&self, oid: NonZeroOid) -> Result { + pub fn find_commit_or_fail(&self, oid: NonZeroOid) -> Result> { match self.inner.find_commit(oid.inner) { Ok(commit) => Ok(Commit { inner: commit }), Err(err) => Err(Error::FindCommit { source: err, oid }), @@ -1179,7 +1188,7 @@ impl Repo { /// Look up a blob with the given OID. Returns `None` if not found. #[instrument] - pub fn find_blob(&self, oid: NonZeroOid) -> Result> { + pub fn find_blob(&self, oid: NonZeroOid) -> Result>> { match self.inner.find_blob(oid.inner) { Ok(blob) => Ok(Some(Blob { inner: blob })), Err(err) if err.code() == git2::ErrorCode::NotFound => Ok(None), @@ -1190,7 +1199,7 @@ impl Repo { /// Like `find_blob`, but raises a generic error if the blob could not be /// found. #[instrument] - pub fn find_blob_or_fail(&self, oid: NonZeroOid) -> Result { + pub fn find_blob_or_fail(&self, oid: NonZeroOid) -> Result> { match self.inner.find_blob(oid.inner) { Ok(blob) => Ok(Blob { inner: blob }), Err(err) => Err(Error::FindBlob { source: err, oid }), @@ -1438,7 +1447,7 @@ impl Repo { commit: &Commit, changed_paths: &[&Path], base_on_parent: bool, - ) -> Result { + ) -> Result> { let tree = commit.get_tree()?; let dehydrated_tree_oid = dehydrate_tree(self, &tree, changed_paths).map_err(Error::DehydrateTree)?; @@ -1477,7 +1486,7 @@ impl Repo { /// Look up the tree with the given OID. Returns `None` if not found. #[instrument] - pub fn find_tree(&self, oid: NonZeroOid) -> Result> { + pub fn find_tree(&self, oid: NonZeroOid) -> Result>> { match self.inner.find_tree(oid.inner) { Ok(tree) => Ok(Some(Tree { inner: tree })), Err(err) if err.code() == git2::ErrorCode::NotFound => Ok(None), @@ -1491,7 +1500,7 @@ impl Repo { /// Like `find_tree`, but raises a generic error if the commit could not /// be found. #[instrument] - pub fn find_tree_or_fail(&self, oid: NonZeroOid) -> Result { + pub fn find_tree_or_fail(&self, oid: NonZeroOid) -> Result> { match self.inner.find_tree(oid.inner) { Ok(tree) => Ok(Tree { inner: tree }), Err(err) => Err(Error::FindTree { @@ -1524,7 +1533,7 @@ impl Repo { &self, parent_commit: &Commit, opts: &AmendFastOptions, - ) -> std::result::Result { + ) -> std::result::Result, CreateCommitFastError> { let changed_paths: Vec = { let mut result = self.get_paths_touched_by_commit(parent_commit)?; match opts { diff --git a/git-branchless-lib/src/git/tree.rs b/git-branchless-lib/src/git/tree.rs index 96865bf2c..f56b5fc14 100644 --- a/git-branchless-lib/src/git/tree.rs +++ b/git-branchless-lib/src/git/tree.rs @@ -96,7 +96,7 @@ impl Tree<'_> { /// /// Note that the path isn't just restricted to entries of the current tree, /// i.e. you can use slashes in the provided path. - pub fn get_path(&self, path: &Path) -> Result> { + pub fn get_path(&self, path: &Path) -> Result>> { match self.inner.get_path(path) { Ok(entry) => Ok(Some(TreeEntry { inner: entry })), Err(err) if err.code() == git2::ErrorCode::NotFound => Ok(None), @@ -456,7 +456,7 @@ pub fn hydrate_tree( Ok(make_non_zero_oid(tree_oid)) } -pub fn make_empty_tree(repo: &Repo) -> Result { +pub fn make_empty_tree(repo: &Repo) -> Result> { let tree_oid = hydrate_tree(repo, None, Default::default())?; repo.find_tree_or_fail(tree_oid) .map_err(Box::new) diff --git a/git-branchless-lib/src/lib.rs b/git-branchless-lib/src/lib.rs index dfaeffbea..04edaac69 100644 --- a/git-branchless-lib/src/lib.rs +++ b/git-branchless-lib/src/lib.rs @@ -7,7 +7,7 @@ clippy::clone_on_ref_ptr, clippy::dbg_macro )] -#![allow(clippy::too_many_arguments, clippy::blocks_in_if_conditions)] +#![allow(clippy::too_many_arguments, clippy::blocks_in_conditions)] pub mod core; pub mod git; diff --git a/git-branchless-move/src/lib.rs b/git-branchless-move/src/lib.rs index 4dc6a1b48..eb589c251 100644 --- a/git-branchless-move/src/lib.rs +++ b/git-branchless-move/src/lib.rs @@ -10,7 +10,7 @@ clippy::clone_on_ref_ptr, clippy::dbg_macro )] -#![allow(clippy::too_many_arguments, clippy::blocks_in_if_conditions)] +#![allow(clippy::too_many_arguments, clippy::blocks_in_conditions)] use std::collections::HashMap; use std::fmt::Write; @@ -178,7 +178,7 @@ pub fn r#move( effects, &repo, &mut dag, - &[dest.clone()], + std::slice::from_ref(&dest), resolve_revset_options, ) { Ok(commit_sets) => match dag.commit_set_to_vec(&commit_sets[0])?.as_slice() { diff --git a/git-branchless-navigation/src/lib.rs b/git-branchless-navigation/src/lib.rs index 729a3603d..cd3d2aa47 100644 --- a/git-branchless-navigation/src/lib.rs +++ b/git-branchless-navigation/src/lib.rs @@ -7,7 +7,7 @@ clippy::clone_on_ref_ptr, clippy::dbg_macro )] -#![allow(clippy::too_many_arguments, clippy::blocks_in_if_conditions)] +#![allow(clippy::too_many_arguments, clippy::blocks_in_conditions)] pub mod prompt; @@ -564,7 +564,7 @@ pub fn switch( effects, &repo, &mut dag, - &[target.clone()], + std::slice::from_ref(&target), &ResolveRevsetOptions::default(), )?; diff --git a/git-branchless-navigation/src/prompt.rs b/git-branchless-navigation/src/prompt.rs index 1c7fa529b..a6f7f5385 100644 --- a/git-branchless-navigation/src/prompt.rs +++ b/git-branchless-navigation/src/prompt.rs @@ -50,7 +50,7 @@ mod skim { } impl SkimItem for CommitSkimItem { - fn text(&self) -> Cow { + fn text(&self) -> Cow<'_, str> { AnsiString::parse(&self.styled_summary).into_inner() } diff --git a/git-branchless-opts/src/lib.rs b/git-branchless-opts/src/lib.rs index 702ec1cbc..37d507dfb 100644 --- a/git-branchless-opts/src/lib.rs +++ b/git-branchless-opts/src/lib.rs @@ -7,7 +7,7 @@ clippy::clone_on_ref_ptr, clippy::dbg_macro )] -#![allow(clippy::too_many_arguments, clippy::blocks_in_if_conditions)] +#![allow(clippy::too_many_arguments, clippy::blocks_in_conditions)] // These URLs are printed verbatim in help output, so we don't want to add extraneous Markdown // formatting. #![allow(rustdoc::bare_urls)] diff --git a/git-branchless-record/src/lib.rs b/git-branchless-record/src/lib.rs index 166f6539b..2281f6c3c 100644 --- a/git-branchless-record/src/lib.rs +++ b/git-branchless-record/src/lib.rs @@ -7,7 +7,7 @@ clippy::clone_on_ref_ptr, clippy::dbg_macro )] -#![allow(clippy::too_many_arguments, clippy::blocks_in_if_conditions)] +#![allow(clippy::too_many_arguments, clippy::blocks_in_conditions)] use std::collections::HashSet; use std::ffi::OsString; diff --git a/git-branchless-revset/src/lib.rs b/git-branchless-revset/src/lib.rs index 14efa735a..0284a93a5 100644 --- a/git-branchless-revset/src/lib.rs +++ b/git-branchless-revset/src/lib.rs @@ -8,7 +8,7 @@ clippy::clone_on_ref_ptr, clippy::dbg_macro )] -#![allow(clippy::too_many_arguments, clippy::blocks_in_if_conditions)] +#![allow(clippy::too_many_arguments, clippy::blocks_in_conditions)] mod ast; mod builtins; diff --git a/git-branchless-revset/src/parser.rs b/git-branchless-revset/src/parser.rs index 86b65f0bd..139500942 100644 --- a/git-branchless-revset/src/parser.rs +++ b/git-branchless-revset/src/parser.rs @@ -16,7 +16,7 @@ pub enum ParseError { /// /// To update the grammar, modify `grammar.lalrpop`. #[instrument] -pub fn parse(s: &str) -> Result { +pub fn parse(s: &str) -> Result, ParseError> { ExprParser::new().parse(s).map_err(|err| { let message = err.to_string(); diff --git a/git-branchless-reword/src/lib.rs b/git-branchless-reword/src/lib.rs index ef53ad4d3..4f003381a 100644 --- a/git-branchless-reword/src/lib.rs +++ b/git-branchless-reword/src/lib.rs @@ -7,7 +7,7 @@ clippy::clone_on_ref_ptr, clippy::dbg_macro )] -#![allow(clippy::too_many_arguments, clippy::blocks_in_if_conditions)] +#![allow(clippy::too_many_arguments, clippy::blocks_in_conditions)] pub mod dialoguer_edit; diff --git a/git-branchless-smartlog/src/lib.rs b/git-branchless-smartlog/src/lib.rs index e3b3bdc3f..43ccc2bd0 100644 --- a/git-branchless-smartlog/src/lib.rs +++ b/git-branchless-smartlog/src/lib.rs @@ -10,7 +10,7 @@ clippy::clone_on_ref_ptr, clippy::dbg_macro )] -#![allow(clippy::too_many_arguments, clippy::blocks_in_if_conditions)] +#![allow(clippy::too_many_arguments, clippy::blocks_in_conditions)] use std::cmp::Ordering; use std::fmt::Write; diff --git a/git-branchless-submit/src/lib.rs b/git-branchless-submit/src/lib.rs index 6762b3207..5c5a23df8 100644 --- a/git-branchless-submit/src/lib.rs +++ b/git-branchless-submit/src/lib.rs @@ -7,7 +7,7 @@ clippy::clone_on_ref_ptr, clippy::dbg_macro )] -#![allow(clippy::too_many_arguments, clippy::blocks_in_if_conditions)] +#![allow(clippy::too_many_arguments, clippy::blocks_in_conditions)] mod branch_forge; pub mod github; diff --git a/git-branchless-test/src/lib.rs b/git-branchless-test/src/lib.rs index add7cd898..ec22ff854 100644 --- a/git-branchless-test/src/lib.rs +++ b/git-branchless-test/src/lib.rs @@ -9,7 +9,7 @@ clippy::clone_on_ref_ptr, clippy::dbg_macro )] -#![allow(clippy::too_many_arguments, clippy::blocks_in_if_conditions)] +#![allow(clippy::too_many_arguments, clippy::blocks_in_conditions)] mod worker; @@ -592,7 +592,7 @@ fn subcommand_run( effects, &repo, &mut dag, - &[revset.clone()], + std::slice::from_ref(&revset), resolve_revset_options, ) { Ok(mut commit_sets) => commit_sets.pop().unwrap(), diff --git a/git-branchless-undo/src/lib.rs b/git-branchless-undo/src/lib.rs index 4dc39dcf2..f2090774e 100644 --- a/git-branchless-undo/src/lib.rs +++ b/git-branchless-undo/src/lib.rs @@ -10,7 +10,7 @@ clippy::clone_on_ref_ptr, clippy::dbg_macro )] -#![allow(clippy::too_many_arguments, clippy::blocks_in_if_conditions)] +#![allow(clippy::too_many_arguments, clippy::blocks_in_conditions)] pub mod tui; diff --git a/git-branchless/src/lib.rs b/git-branchless/src/lib.rs index ae1b74d08..7608cabc1 100644 --- a/git-branchless/src/lib.rs +++ b/git-branchless/src/lib.rs @@ -23,6 +23,6 @@ clippy::clone_on_ref_ptr, clippy::dbg_macro )] -#![allow(clippy::too_many_arguments, clippy::blocks_in_if_conditions)] +#![allow(clippy::too_many_arguments, clippy::blocks_in_conditions)] pub mod commands; diff --git a/scm-bisect/src/lib.rs b/scm-bisect/src/lib.rs index 0eb56aa52..2e7df91cf 100644 --- a/scm-bisect/src/lib.rs +++ b/scm-bisect/src/lib.rs @@ -9,7 +9,7 @@ clippy::clone_on_ref_ptr, clippy::dbg_macro )] -#![allow(clippy::too_many_arguments, clippy::blocks_in_if_conditions)] +#![allow(clippy::too_many_arguments, clippy::blocks_in_conditions)] pub mod basic; pub mod search; From cc1e37a939468bf3def35c51cf04a3c49c266c3b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 6 Sep 2025 22:27:09 +0000 Subject: [PATCH 124/146] build: bump serde_json from 1.0.140 to 1.0.143 Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.140 to 1.0.143. - [Release notes](https://github.com/serde-rs/json/releases) - [Commits](https://github.com/serde-rs/json/compare/v1.0.140...v1.0.143) --- updated-dependencies: - dependency-name: serde_json dependency-version: 1.0.143 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 6 +++--- Cargo.toml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e0431cfe5..5e4196512 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3257,9 +3257,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.140" +version = "1.0.143" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" +checksum = "d401abef1d108fbd9cbaebc3e46611f4b1021f714a0597a71f41ee463f5f4a5a" dependencies = [ "itoa", "memchr", @@ -4148,7 +4148,7 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.59.0", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 5a0c9abd2..c81f8a5d3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -90,7 +90,7 @@ scm-bisect = { version = "0.3.0", path = "scm-bisect" } scm-diff-editor = "0.4.0" scm-record = "0.5.0" serde = { version = "1.0.219", features = ["derive"] } -serde_json = "1.0.140" +serde_json = "1.0.143" shell-words = "1.1.0" skim = "0.10.4" tempfile = "3.20.0" From 3a852dfd4218f5f2fd42c3a69620ccf65b74ca36 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 6 Sep 2025 22:27:12 +0000 Subject: [PATCH 125/146] build: bump tempfile from 3.20.0 to 3.21.0 Bumps [tempfile](https://github.com/Stebalien/tempfile) from 3.20.0 to 3.21.0. - [Changelog](https://github.com/Stebalien/tempfile/blob/master/CHANGELOG.md) - [Commits](https://github.com/Stebalien/tempfile/compare/v3.20.0...v3.21.0) --- updated-dependencies: - dependency-name: tempfile dependency-version: 3.21.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5e4196512..e87a90e50 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3578,9 +3578,9 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.20.0" +version = "3.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" +checksum = "15b61f8f20e3a6f7e0649d825294eaf317edce30f82cf6026e7e4cb9222a7d1e" dependencies = [ "fastrand", "getrandom 0.3.1", diff --git a/Cargo.toml b/Cargo.toml index c81f8a5d3..aabd97981 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -93,7 +93,7 @@ serde = { version = "1.0.219", features = ["derive"] } serde_json = "1.0.143" shell-words = "1.1.0" skim = "0.10.4" -tempfile = "3.20.0" +tempfile = "3.21.0" textwrap = "0.16.2" thiserror = "2.0.12" tracing = "0.1.41" From 228d13e6393749d8f7ed4a403329694468243768 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 6 Sep 2025 22:27:13 +0000 Subject: [PATCH 126/146] build: bump async-trait from 0.1.88 to 0.1.89 Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.88 to 0.1.89. - [Release notes](https://github.com/dtolnay/async-trait/releases) - [Commits](https://github.com/dtolnay/async-trait/compare/0.1.88...0.1.89) --- updated-dependencies: - dependency-name: async-trait dependency-version: 0.1.89 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e87a90e50..7243bbd12 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -180,9 +180,9 @@ dependencies = [ [[package]] name = "async-trait" -version = "0.1.88" +version = "0.1.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" +checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index aabd97981..ec9e9157a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -33,7 +33,7 @@ tag = false [workspace.dependencies] anyhow = "1.0.98" -async-trait = "0.1.88" +async-trait = "0.1.89" bstr = "1.12.0" bugreport = "0.5.1" chashmap = "2.2.2" From 2224b4bcb201dd99355ea6b34e9dc2ade2386a43 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 6 Sep 2025 22:27:09 +0000 Subject: [PATCH 127/146] build: bump rayon from 1.10.0 to 1.11.0 Bumps [rayon](https://github.com/rayon-rs/rayon) from 1.10.0 to 1.11.0. - [Changelog](https://github.com/rayon-rs/rayon/blob/main/RELEASES.md) - [Commits](https://github.com/rayon-rs/rayon/compare/rayon-core-v1.10.0...rayon-core-v1.11.0) --- updated-dependencies: - dependency-name: rayon dependency-version: 1.11.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Cargo.lock | 8 ++++---- Cargo.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7243bbd12..cc6b57a07 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2858,9 +2858,9 @@ dependencies = [ [[package]] name = "rayon" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" dependencies = [ "either", "rayon-core", @@ -2868,9 +2868,9 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.12.1" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" dependencies = [ "crossbeam-deque", "crossbeam-utils", diff --git a/Cargo.toml b/Cargo.toml index ec9e9157a..ffad221c2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -83,7 +83,7 @@ num_cpus = "1.17.0" once_cell = "1.21.3" path-slash = "0.2.1" portable-pty = "0.8.1" -rayon = "1.10.0" +rayon = "1.11.0" regex = "1.11.0" rusqlite = { version = "0.29.0", features = ["bundled"] } scm-bisect = { version = "0.3.0", path = "scm-bisect" } From 07cb51933673d5461a1263709c92db0a5c5a7de1 Mon Sep 17 00:00:00 2001 From: Clayton Carter Date: Wed, 27 Aug 2025 21:10:31 -0400 Subject: [PATCH 128/146] refactor(revset): prepare to pass eval hints `make_pattern_matcher_for_set()` was added in 8ca6b5592701cb2a2373d1d4bdc9cc91245712a4 to operate on a given set (instead of all visible commits), so this just adds plumbing so that *all* revset functions are able to receive an `Option` which they may use to optimize (or not) their own evaluation. Having done that, though, no such hints are actually passed around yet. --- git-branchless-revset/src/builtins.rs | 195 +++++++++++++++++++------- git-branchless-revset/src/eval.rs | 27 ++-- 2 files changed, 158 insertions(+), 64 deletions(-) diff --git a/git-branchless-revset/src/builtins.rs b/git-branchless-revset/src/builtins.rs index ccf8bc08a..73a19e076 100644 --- a/git-branchless-revset/src/builtins.rs +++ b/git-branchless-revset/src/builtins.rs @@ -25,7 +25,8 @@ use crate::pattern::{make_pattern_matcher_set, Pattern}; use crate::pattern::{PatternError, PatternMatcher}; use crate::Expr; -type FnType = &'static (dyn Fn(&mut Context, &str, &[Expr]) -> EvalResult + Sync); +type FnType = + &'static (dyn Fn(&mut Context, &str, &[Expr], &Option<&CommitSet>) -> EvalResult + Sync); lazy_static! { pub(super) static ref FUNCTIONS: HashMap<&'static str, FnType> = { let functions: &[(&'static str, FnType)] = &[ @@ -71,7 +72,7 @@ lazy_static! { } #[instrument] -fn fn_all(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { +fn fn_all(ctx: &mut Context, name: &str, args: &[Expr], _: &Option<&CommitSet>) -> EvalResult { eval0(ctx, name, args)?; let visible_heads = ctx .dag @@ -86,43 +87,53 @@ fn fn_all(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { } #[instrument] -fn fn_none(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { +fn fn_none(ctx: &mut Context, name: &str, args: &[Expr], _: &Option<&CommitSet>) -> EvalResult { eval0(ctx, name, args)?; Ok(CommitSet::empty()) } #[instrument] -fn fn_union(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { +fn fn_union(ctx: &mut Context, name: &str, args: &[Expr], _: &Option<&CommitSet>) -> EvalResult { let (lhs, rhs) = eval2(ctx, name, args)?; Ok(lhs.union(&rhs)) } #[instrument] -fn fn_intersection(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { +fn fn_intersection( + ctx: &mut Context, + name: &str, + args: &[Expr], + _: &Option<&CommitSet>, +) -> EvalResult { let (lhs, rhs) = eval2(ctx, name, args)?; Ok(lhs.intersection(&rhs)) } #[instrument] -fn fn_difference(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { +fn fn_difference( + ctx: &mut Context, + name: &str, + args: &[Expr], + _: &Option<&CommitSet>, +) -> EvalResult { let (lhs, rhs) = eval2(ctx, name, args)?; Ok(lhs.difference(&rhs)) } #[instrument] -fn fn_only(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { +fn fn_only(ctx: &mut Context, name: &str, args: &[Expr], _: &Option<&CommitSet>) -> EvalResult { let (lhs, rhs) = eval2(ctx, name, args)?; Ok(ctx.dag.query_only(lhs, rhs)?) } #[instrument] -fn fn_range(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { +fn fn_range(ctx: &mut Context, name: &str, args: &[Expr], _: &Option<&CommitSet>) -> EvalResult { let (lhs, rhs) = eval2(ctx, name, args)?; Ok(ctx.dag.query_range(lhs, rhs)?) } #[instrument] -fn fn_not(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { +fn fn_not(ctx: &mut Context, name: &str, args: &[Expr], _: &Option<&CommitSet>) -> EvalResult { let expr = eval1(ctx, name, args)?; let visible_heads = ctx .dag @@ -133,31 +144,41 @@ fn fn_not(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { } #[instrument] -fn fn_ancestors(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { +fn fn_ancestors( + ctx: &mut Context, + name: &str, + args: &[Expr], + _: &Option<&CommitSet>, +) -> EvalResult { let expr = eval1(ctx, name, args)?; Ok(ctx.dag.query_ancestors(expr)?) } #[instrument] -fn fn_descendants(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { +fn fn_descendants( + ctx: &mut Context, + name: &str, + args: &[Expr], + _: &Option<&CommitSet>, +) -> EvalResult { let expr = eval1(ctx, name, args)?; Ok(ctx.dag.query_descendants(expr)?) } #[instrument] -fn fn_parents(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { +fn fn_parents(ctx: &mut Context, name: &str, args: &[Expr], _: &Option<&CommitSet>) -> EvalResult { let expr = eval1(ctx, name, args)?; Ok(ctx.dag.query_parents(expr)?) } #[instrument] -fn fn_children(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { +fn fn_children(ctx: &mut Context, name: &str, args: &[Expr], _: &Option<&CommitSet>) -> EvalResult { let expr = eval1(ctx, name, args)?; Ok(ctx.dag.query_children(expr)?) } #[instrument] -fn fn_siblings(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { +fn fn_siblings(ctx: &mut Context, name: &str, args: &[Expr], _: &Option<&CommitSet>) -> EvalResult { let expr = eval1(ctx, name, args)?; let parents = ctx.dag.query_parents(expr.clone())?; let children = ctx.dag.query_children(parents)?; @@ -166,19 +187,19 @@ fn fn_siblings(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { } #[instrument] -fn fn_roots(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { +fn fn_roots(ctx: &mut Context, name: &str, args: &[Expr], _: &Option<&CommitSet>) -> EvalResult { let expr = eval1(ctx, name, args)?; Ok(ctx.dag.query_roots(expr)?) } #[instrument] -fn fn_heads(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { +fn fn_heads(ctx: &mut Context, name: &str, args: &[Expr], _: &Option<&CommitSet>) -> EvalResult { let expr = eval1(ctx, name, args)?; Ok(ctx.dag.query_heads(expr)?) } #[instrument] -fn fn_branches(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { +fn fn_branches(ctx: &mut Context, name: &str, args: &[Expr], _: &Option<&CommitSet>) -> EvalResult { let pattern = match eval0_or_1_pattern(ctx, name, args)? { Some(pattern) => pattern, None => return Ok(ctx.dag.branch_commits.clone()), @@ -191,7 +212,7 @@ fn fn_branches(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { .map_err(EvalError::OtherError)? .branch_oid_to_names; - let branch_commits = make_pattern_matcher_for_set( + let branch_commits = make_pattern_matcher( ctx, name, args, @@ -217,14 +238,19 @@ fn fn_branches(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { Ok(result) }), - Some(ctx.dag.branch_commits.clone()), + &Some(&ctx.dag.branch_commits.clone()), )?; Ok(branch_commits) } #[instrument] -fn fn_parents_nth(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { +fn fn_parents_nth( + ctx: &mut Context, + name: &str, + args: &[Expr], + _: &Option<&CommitSet>, +) -> EvalResult { let (lhs, n) = eval_number_rhs(ctx, name, args)?; let commit_oids = ctx .dag @@ -243,7 +269,12 @@ fn fn_parents_nth(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { } #[instrument] -fn fn_nthancestor(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { +fn fn_nthancestor( + ctx: &mut Context, + name: &str, + args: &[Expr], + _: &Option<&CommitSet>, +) -> EvalResult { let (lhs, n) = eval_number_rhs(ctx, name, args)?; let commit_oids = ctx .dag @@ -261,13 +292,13 @@ fn fn_nthancestor(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { } #[instrument] -fn fn_main(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { +fn fn_main(ctx: &mut Context, name: &str, args: &[Expr], _: &Option<&CommitSet>) -> EvalResult { eval0(ctx, name, args)?; Ok(ctx.dag.main_branch_commit.clone()) } #[instrument] -fn fn_public(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { +fn fn_public(ctx: &mut Context, name: &str, args: &[Expr], _: &Option<&CommitSet>) -> EvalResult { eval0(ctx, name, args)?; let public_commits = ctx .dag @@ -277,7 +308,7 @@ fn fn_public(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { } #[instrument] -fn fn_draft(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { +fn fn_draft(ctx: &mut Context, name: &str, args: &[Expr], _: &Option<&CommitSet>) -> EvalResult { eval0(ctx, name, args)?; let draft_commits = ctx .dag @@ -287,7 +318,7 @@ fn fn_draft(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { } #[instrument] -fn fn_stack(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { +fn fn_stack(ctx: &mut Context, name: &str, args: &[Expr], _: &Option<&CommitSet>) -> EvalResult { let arg = eval0_or_1(ctx, name, args)?.unwrap_or_else(|| ctx.dag.head_commit.clone()); ctx.dag .query_stack_commits(arg) @@ -296,24 +327,14 @@ fn fn_stack(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { type MatcherFn = dyn Fn(&Repo, &Commit) -> Result + Sync + Send; -/// Make a pattern matcher that operates on all visible commits. +/// Make a pattern matcher that operates on a specific set of commits, or all +/// visible commits if none is provided. fn make_pattern_matcher( ctx: &mut Context, name: &str, args: &[Expr], f: Box, -) -> Result { - make_pattern_matcher_for_set(ctx, name, args, f, None) -} - -/// Make a pattern matcher that operates only on the given set of commits. -#[instrument(skip(f))] -fn make_pattern_matcher_for_set( - ctx: &mut Context, - name: &str, - args: &[Expr], - f: Box, - commits_to_match: Option, + commits_to_match: &Option<&CommitSet>, ) -> Result { struct Matcher { expr: String, @@ -334,12 +355,18 @@ fn make_pattern_matcher_for_set( expr: Expr::FunctionCall(Cow::Borrowed(name), args.to_vec()).to_string(), f, }; - let matcher = make_pattern_matcher_set(ctx, ctx.repo, Box::new(matcher), commits_to_match)?; + let matcher = + make_pattern_matcher_set(ctx, ctx.repo, Box::new(matcher), commits_to_match.cloned())?; Ok(matcher) } #[instrument] -fn fn_message(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { +fn fn_message( + ctx: &mut Context, + name: &str, + args: &[Expr], + commits_to_match: &Option<&CommitSet>, +) -> EvalResult { let pattern = eval1_pattern(ctx, name, args)?; make_pattern_matcher( ctx, @@ -361,11 +388,17 @@ fn fn_message(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { }; Ok(pattern.matches_text(message)) }), + commits_to_match, ) } #[instrument] -fn fn_path_changed(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { +fn fn_path_changed( + ctx: &mut Context, + name: &str, + args: &[Expr], + commits_to_match: &Option<&CommitSet>, +) -> EvalResult { let pattern = eval1_pattern(ctx, name, args)?; make_pattern_matcher( ctx, @@ -391,11 +424,17 @@ fn fn_path_changed(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { }); Ok(result) }), + commits_to_match, ) } #[instrument] -fn fn_author_name(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { +fn fn_author_name( + ctx: &mut Context, + name: &str, + args: &[Expr], + commits_to_match: &Option<&CommitSet>, +) -> EvalResult { let pattern = eval1_pattern(ctx, name, args)?; make_pattern_matcher( ctx, @@ -407,11 +446,17 @@ fn fn_author_name(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { None => Ok(false), }, ), + commits_to_match, ) } #[instrument] -fn fn_author_email(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { +fn fn_author_email( + ctx: &mut Context, + name: &str, + args: &[Expr], + commits_to_match: &Option<&CommitSet>, +) -> EvalResult { let pattern = eval1_pattern(ctx, name, args)?; make_pattern_matcher( ctx, @@ -423,11 +468,17 @@ fn fn_author_email(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { None => Ok(false), }, ), + commits_to_match, ) } #[instrument] -fn fn_author_date(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { +fn fn_author_date( + ctx: &mut Context, + name: &str, + args: &[Expr], + commits_to_match: &Option<&CommitSet>, +) -> EvalResult { let pattern = eval1_pattern(ctx, name, args)?; make_pattern_matcher( ctx, @@ -437,11 +488,17 @@ fn fn_author_date(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { let time = commit.get_author().get_time(); Ok(pattern.matches_date(&time)) }), + commits_to_match, ) } #[instrument] -fn fn_committer_name(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { +fn fn_committer_name( + ctx: &mut Context, + name: &str, + args: &[Expr], + commits_to_match: &Option<&CommitSet>, +) -> EvalResult { let pattern = eval1_pattern(ctx, name, args)?; make_pattern_matcher( ctx, @@ -453,11 +510,17 @@ fn fn_committer_name(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult None => Ok(false), }, ), + commits_to_match, ) } #[instrument] -fn fn_committer_email(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { +fn fn_committer_email( + ctx: &mut Context, + name: &str, + args: &[Expr], + commits_to_match: &Option<&CommitSet>, +) -> EvalResult { let pattern = eval1_pattern(ctx, name, args)?; make_pattern_matcher( ctx, @@ -469,11 +532,17 @@ fn fn_committer_email(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResul None => Ok(false), }, ), + commits_to_match, ) } #[instrument] -fn fn_committer_date(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { +fn fn_committer_date( + ctx: &mut Context, + name: &str, + args: &[Expr], + commits_to_match: &Option<&CommitSet>, +) -> EvalResult { let pattern = eval1_pattern(ctx, name, args)?; make_pattern_matcher( ctx, @@ -483,11 +552,12 @@ fn fn_committer_date(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult let time = commit.get_committer().get_time(); Ok(pattern.matches_date(&time)) }), + commits_to_match, ) } #[instrument] -fn fn_exactly(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { +fn fn_exactly(ctx: &mut Context, name: &str, args: &[Expr], _: &Option<&CommitSet>) -> EvalResult { let (lhs, expected_len) = eval_number_rhs(ctx, name, args)?; let actual_len: usize = ctx.dag.set_count(&lhs)?; @@ -503,7 +573,7 @@ fn fn_exactly(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { } #[instrument] -fn fn_current(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { +fn fn_current(ctx: &mut Context, name: &str, args: &[Expr], _: &Option<&CommitSet>) -> EvalResult { let mut dag = ctx .dag .clear_obsolete_commits(ctx.repo) @@ -548,7 +618,7 @@ fn fn_current(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { } #[instrument] -fn fn_merges(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { +fn fn_merges(ctx: &mut Context, name: &str, args: &[Expr], _: &Option<&CommitSet>) -> EvalResult { eval0(ctx, name, args)?; // Use a "pattern matcher" that – instead of testing for a pattern – // examines the parent count of each commit to find merges. @@ -557,6 +627,7 @@ fn fn_merges(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { name, args, Box::new(move |_repo, commit| Ok(commit.get_parent_count() > 1)), + &None, ) } @@ -597,7 +668,12 @@ fn eval_test_command_pattern( } #[instrument] -fn fn_tests_passed(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { +fn fn_tests_passed( + ctx: &mut Context, + name: &str, + args: &[Expr], + _: &Option<&CommitSet>, +) -> EvalResult { let pattern = eval_test_command_pattern(ctx, name, args)?; make_pattern_matcher( ctx, @@ -620,11 +696,17 @@ fn fn_tests_passed(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { }); Ok(result) }), + &None, ) } #[instrument] -fn fn_tests_failed(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { +fn fn_tests_failed( + ctx: &mut Context, + name: &str, + args: &[Expr], + _: &Option<&CommitSet>, +) -> EvalResult { let pattern = eval_test_command_pattern(ctx, name, args)?; make_pattern_matcher( ctx, @@ -649,11 +731,17 @@ fn fn_tests_failed(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { }); Ok(result) }), + &None, ) } #[instrument] -fn fn_tests_fixable(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { +fn fn_tests_fixable( + ctx: &mut Context, + name: &str, + args: &[Expr], + _: &Option<&CommitSet>, +) -> EvalResult { let pattern = eval_test_command_pattern(ctx, name, args)?; make_pattern_matcher( ctx, @@ -683,5 +771,6 @@ fn fn_tests_fixable(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult }); Ok(result) }), + &None, ) } diff --git a/git-branchless-revset/src/eval.rs b/git-branchless-revset/src/eval.rs index 7cd88c3c7..9dc401d32 100644 --- a/git-branchless-revset/src/eval.rs +++ b/git-branchless-revset/src/eval.rs @@ -116,16 +116,16 @@ pub fn eval(effects: &Effects, repo: &Repo, dag: &mut Dag, expr: &Expr) -> EvalR repo, dag, }; - let commits = eval_inner(&mut ctx, expr)?; + let commits = eval_inner(&mut ctx, expr, &None)?; Ok(commits) } #[instrument] -fn eval_inner(ctx: &mut Context, expr: &Expr) -> EvalResult { +fn eval_inner(ctx: &mut Context, expr: &Expr, commitset_hint: &Option<&CommitSet>) -> EvalResult { match expr { Expr::Name(name) => eval_name(ctx, name), Expr::FunctionCall(name, args) => { - let result = eval_fn(ctx, name, args)?; + let result = eval_fn(ctx, name, args, commitset_hint)?; let result = ctx .dag .filter_visible_commits(result) @@ -176,9 +176,14 @@ pub(super) fn eval_name(ctx: &mut Context, name: &str) -> EvalResult { } #[instrument] -pub(super) fn eval_fn(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResult { +pub(super) fn eval_fn( + ctx: &mut Context, + name: &str, + args: &[Expr], + commitset_hint: &Option<&CommitSet>, +) -> EvalResult { if let Some(function) = FUNCTIONS.get(name) { - return function(ctx, name, args); + return function(ctx, name, args, commitset_hint); } let alias_key = format!("branchless.revsets.alias.{name}"); @@ -199,7 +204,7 @@ pub(super) fn eval_fn(ctx: &mut Context, name: &str, args: &[Expr]) -> EvalResul .map(|(i, arg)| (format!("${}", i + 1), arg.clone())) .collect(); let alias_expr = alias_expr.replace_names(&arg_map); - let commits = eval_inner(ctx, &alias_expr)?; + let commits = eval_inner(ctx, &alias_expr, commitset_hint)?; return Ok(commits); } @@ -235,7 +240,7 @@ pub(super) fn eval0_or_1( match args { [] => Ok(None), [expr] => { - let arg = eval_inner(ctx, expr)?; + let arg = eval_inner(ctx, expr, &None)?; Ok(Some(arg)) } args => Err(EvalError::ArityMismatch { @@ -250,7 +255,7 @@ pub(super) fn eval0_or_1( pub(super) fn eval1(ctx: &mut Context, function_name: &str, args: &[Expr]) -> EvalResult { match args { [arg] => { - let lhs = eval_inner(ctx, arg)?; + let lhs = eval_inner(ctx, arg, &None)?; Ok(lhs) } @@ -308,8 +313,8 @@ pub(super) fn eval2( ) -> Result<(CommitSet, CommitSet), EvalError> { match args { [lhs, rhs] => { - let lhs = eval_inner(ctx, lhs)?; - let rhs = eval_inner(ctx, rhs)?; + let lhs = eval_inner(ctx, lhs, &None)?; + let rhs = eval_inner(ctx, rhs, &None)?; Ok((lhs, rhs)) } @@ -329,7 +334,7 @@ pub(super) fn eval_number_rhs( ) -> Result<(CommitSet, usize), EvalError> { match args { [lhs, Expr::Name(name)] => { - let lhs = eval_inner(ctx, lhs)?; + let lhs = eval_inner(ctx, lhs, &None)?; let number: usize = { name.parse()? }; Ok((lhs, number)) } From 49447a7bd7a48e31b353a7a81771521fd1d5c72e Mon Sep 17 00:00:00 2001 From: Clayton Carter Date: Sun, 7 Sep 2025 08:38:29 -0400 Subject: [PATCH 129/146] feat(revset): use hints to optimize binary revset evals Now that we can pass revsets around to limit how many commits a rhs examines during it's evaluation, this change actually starts passing such hints, but only for `intersection()` and `difference()`. This is a crude approach, of course, but it gets the job done and it significantly improves performance for `intersection()` and `difference()`. --- git-branchless-revset/src/builtins.rs | 10 ++-- git-branchless-revset/src/eval.rs | 73 ++++++++++++++++++++++++++- 2 files changed, 77 insertions(+), 6 deletions(-) diff --git a/git-branchless-revset/src/builtins.rs b/git-branchless-revset/src/builtins.rs index 73a19e076..00f92136d 100644 --- a/git-branchless-revset/src/builtins.rs +++ b/git-branchless-revset/src/builtins.rs @@ -94,7 +94,7 @@ fn fn_none(ctx: &mut Context, name: &str, args: &[Expr], _: &Option<&CommitSet>) #[instrument] fn fn_union(ctx: &mut Context, name: &str, args: &[Expr], _: &Option<&CommitSet>) -> EvalResult { - let (lhs, rhs) = eval2(ctx, name, args)?; + let (lhs, rhs) = eval2(ctx, name, args, false)?; Ok(lhs.union(&rhs)) } @@ -105,7 +105,7 @@ fn fn_intersection( args: &[Expr], _: &Option<&CommitSet>, ) -> EvalResult { - let (lhs, rhs) = eval2(ctx, name, args)?; + let (lhs, rhs) = eval2(ctx, name, args, true)?; Ok(lhs.intersection(&rhs)) } @@ -116,19 +116,19 @@ fn fn_difference( args: &[Expr], _: &Option<&CommitSet>, ) -> EvalResult { - let (lhs, rhs) = eval2(ctx, name, args)?; + let (lhs, rhs) = eval2(ctx, name, args, true)?; Ok(lhs.difference(&rhs)) } #[instrument] fn fn_only(ctx: &mut Context, name: &str, args: &[Expr], _: &Option<&CommitSet>) -> EvalResult { - let (lhs, rhs) = eval2(ctx, name, args)?; + let (lhs, rhs) = eval2(ctx, name, args, false)?; Ok(ctx.dag.query_only(lhs, rhs)?) } #[instrument] fn fn_range(ctx: &mut Context, name: &str, args: &[Expr], _: &Option<&CommitSet>) -> EvalResult { - let (lhs, rhs) = eval2(ctx, name, args)?; + let (lhs, rhs) = eval2(ctx, name, args, false)?; Ok(ctx.dag.query_range(lhs, rhs)?) } diff --git a/git-branchless-revset/src/eval.rs b/git-branchless-revset/src/eval.rs index 9dc401d32..710b103e3 100644 --- a/git-branchless-revset/src/eval.rs +++ b/git-branchless-revset/src/eval.rs @@ -310,11 +310,12 @@ pub(super) fn eval2( ctx: &mut Context, function_name: &str, args: &[Expr], + limit_rhs: bool, ) -> Result<(CommitSet, CommitSet), EvalError> { match args { [lhs, rhs] => { let lhs = eval_inner(ctx, lhs, &None)?; - let rhs = eval_inner(ctx, rhs, &None)?; + let rhs = eval_inner(ctx, rhs, &limit_rhs.then_some(&lhs))?; Ok((lhs, rhs)) } @@ -507,6 +508,76 @@ mod tests { "###); } + { + let expr = Expr::FunctionCall( + Cow::Borrowed("intersection"), + vec![ + Expr::Name(Cow::Owned(test1_oid.to_string())), + Expr::Name(Cow::Owned(test2_oid.to_string())), + ], + ); + insta::assert_debug_snapshot!(eval_and_sort(&effects, &repo, &mut dag, &expr), @r###" + Ok( + [], + ) + "###); + + let expr = Expr::FunctionCall( + Cow::Borrowed("intersection"), + vec![ + Expr::Name(Cow::Owned(test1_oid.to_string())), + Expr::Name(Cow::Owned(test1_oid.to_string())), + ], + ); + insta::assert_debug_snapshot!(eval_and_sort(&effects, &repo, &mut dag, &expr), @r###" + Ok( + [ + Commit { + inner: Commit { + id: 62fc20d2a290daea0d52bdc2ed2ad4be6491010e, + summary: "create test1.txt", + }, + }, + ], + ) + "###); + } + + { + let expr = Expr::FunctionCall( + Cow::Borrowed("difference"), + vec![ + Expr::Name(Cow::Owned(test1_oid.to_string())), + Expr::Name(Cow::Owned(test2_oid.to_string())), + ], + ); + insta::assert_debug_snapshot!(eval_and_sort(&effects, &repo, &mut dag, &expr), @r###" + Ok( + [ + Commit { + inner: Commit { + id: 62fc20d2a290daea0d52bdc2ed2ad4be6491010e, + summary: "create test1.txt", + }, + }, + ], + ) + "###); + + let expr = Expr::FunctionCall( + Cow::Borrowed("difference"), + vec![ + Expr::Name(Cow::Owned(test1_oid.to_string())), + Expr::Name(Cow::Owned(test1_oid.to_string())), + ], + ); + insta::assert_debug_snapshot!(eval_and_sort(&effects, &repo, &mut dag, &expr), @r###" + Ok( + [], + ) + "###); + } + { let expr = Expr::FunctionCall( Cow::Borrowed("siblings"), From 86064828f4d0981fcc6a6e918e7f5c85d046ed2a Mon Sep 17 00:00:00 2001 From: Clayton Carter Date: Tue, 29 Apr 2025 18:22:36 -0500 Subject: [PATCH 130/146] refactor: add force_detach checkout option This will be used to circumvent the "autocheckout" setting in `git split` (in the next commit), so that we can preserve the current detached/attached state. FIXME is this really needed? Maybe we don't need to force-re-checkout? --- git-branchless-lib/src/core/check_out.rs | 7 ++++++- git-branchless-lib/tests/test_rewrite_plan.rs | 1 + git-branchless-navigation/src/lib.rs | 1 + git-branchless-record/src/lib.rs | 2 ++ git-branchless-reword/src/lib.rs | 1 + git-branchless-undo/src/lib.rs | 3 +++ git-branchless/src/commands/amend.rs | 2 ++ git-branchless/src/commands/restack.rs | 1 + git-branchless/src/commands/sync.rs | 1 + 9 files changed, 18 insertions(+), 1 deletion(-) diff --git a/git-branchless-lib/src/core/check_out.rs b/git-branchless-lib/src/core/check_out.rs index 546a09828..6445424fd 100644 --- a/git-branchless-lib/src/core/check_out.rs +++ b/git-branchless-lib/src/core/check_out.rs @@ -44,6 +44,9 @@ pub struct CheckOutCommitOptions { /// Additional arguments to pass to `git checkout`. pub additional_args: Vec, + /// Ignore the `autoSwitchBranches` setting? + pub force_detach: bool, + /// Use `git reset` rather than `git checkout`; that is, leave the index and /// working copy unchanged, and just adjust the `HEAD` pointer. pub reset: bool, @@ -56,6 +59,7 @@ impl Default for CheckOutCommitOptions { fn default() -> Self { Self { additional_args: Default::default(), + force_detach: false, reset: false, render_smartlog: true, } @@ -116,6 +120,7 @@ pub fn check_out_commit( ) -> EyreExitOr<()> { let CheckOutCommitOptions { additional_args, + force_detach, reset, render_smartlog, } = options; @@ -134,7 +139,7 @@ pub fn check_out_commit( create_snapshot(effects, git_run_info, repo, event_log_db, event_tx_id)?; } - let target = if get_auto_switch_branches(repo)? && !reset { + let target = if get_auto_switch_branches(repo)? && !reset && !force_detach { maybe_get_branch_name(target, oid, repo)? } else { target diff --git a/git-branchless-lib/tests/test_rewrite_plan.rs b/git-branchless-lib/tests/test_rewrite_plan.rs index 8adc2c335..200349087 100644 --- a/git-branchless-lib/tests/test_rewrite_plan.rs +++ b/git-branchless-lib/tests/test_rewrite_plan.rs @@ -762,6 +762,7 @@ fn create_and_execute_plan( resolve_merge_conflicts: true, check_out_commit_options: CheckOutCommitOptions { additional_args: Default::default(), + force_detach: false, reset: false, render_smartlog: false, }, diff --git a/git-branchless-navigation/src/lib.rs b/git-branchless-navigation/src/lib.rs index cd3d2aa47..33a75fb27 100644 --- a/git-branchless-navigation/src/lib.rs +++ b/git-branchless-navigation/src/lib.rs @@ -617,6 +617,7 @@ pub fn switch( target, &CheckOutCommitOptions { additional_args, + force_detach: false, reset: false, render_smartlog: true, }, diff --git a/git-branchless-record/src/lib.rs b/git-branchless-record/src/lib.rs index 2281f6c3c..8c560cd35 100644 --- a/git-branchless-record/src/lib.rs +++ b/git-branchless-record/src/lib.rs @@ -129,6 +129,7 @@ fn record( None, &CheckOutCommitOptions { additional_args: vec![OsString::from("-b"), OsString::from(branch_name)], + force_detach: false, reset: false, render_smartlog: false, }, @@ -227,6 +228,7 @@ fn record( checkout_target, &CheckOutCommitOptions { additional_args: vec![], + force_detach: false, reset: false, render_smartlog: false, }, diff --git a/git-branchless-reword/src/lib.rs b/git-branchless-reword/src/lib.rs index 4f003381a..45419ce09 100644 --- a/git-branchless-reword/src/lib.rs +++ b/git-branchless-reword/src/lib.rs @@ -292,6 +292,7 @@ pub fn reword( resolve_merge_conflicts: false, check_out_commit_options: CheckOutCommitOptions { additional_args: Default::default(), + force_detach: false, reset: false, render_smartlog: false, }, diff --git a/git-branchless-undo/src/lib.rs b/git-branchless-undo/src/lib.rs index f2090774e..5ac13f24d 100644 --- a/git-branchless-undo/src/lib.rs +++ b/git-branchless-undo/src/lib.rs @@ -743,6 +743,7 @@ fn extract_checkout_target( target: CheckoutTarget::Oid(*new_oid), options: CheckOutCommitOptions { additional_args: vec!["--detach".into()], + force_detach: false, reset: false, render_smartlog: true, }, @@ -766,6 +767,7 @@ fn extract_checkout_target( } None => Default::default(), }, + force_detach: false, reset: false, render_smartlog: true, }, @@ -1077,6 +1079,7 @@ mod tests { additional_args: [ "--detach", ], + force_detach: false, reset: false, render_smartlog: true, }, diff --git a/git-branchless/src/commands/amend.rs b/git-branchless/src/commands/amend.rs index f20fa1251..8e55e95f1 100644 --- a/git-branchless/src/commands/amend.rs +++ b/git-branchless/src/commands/amend.rs @@ -203,6 +203,7 @@ pub fn amend( Some(target), &CheckOutCommitOptions { additional_args: Default::default(), + force_detach: false, reset: true, render_smartlog: false, }, @@ -297,6 +298,7 @@ pub fn amend( resolve_merge_conflicts: move_options.resolve_merge_conflicts, check_out_commit_options: CheckOutCommitOptions { additional_args: Default::default(), + force_detach: false, reset: false, render_smartlog: false, }, diff --git a/git-branchless/src/commands/restack.rs b/git-branchless/src/commands/restack.rs index 0b6c72839..16231b2ea 100644 --- a/git-branchless/src/commands/restack.rs +++ b/git-branchless/src/commands/restack.rs @@ -328,6 +328,7 @@ pub fn restack( resolve_merge_conflicts, check_out_commit_options: CheckOutCommitOptions { additional_args: Default::default(), + force_detach: false, reset: false, render_smartlog: false, }, diff --git a/git-branchless/src/commands/sync.rs b/git-branchless/src/commands/sync.rs index 5106c1841..b6276bbf7 100644 --- a/git-branchless/src/commands/sync.rs +++ b/git-branchless/src/commands/sync.rs @@ -94,6 +94,7 @@ pub fn sync( resolve_merge_conflicts, check_out_commit_options: CheckOutCommitOptions { additional_args: Default::default(), + force_detach: false, reset: false, render_smartlog: false, }, From 8b27f9997f37411df47708a7a8521198cfde257f Mon Sep 17 00:00:00 2001 From: Clayton Carter Date: Sun, 7 Sep 2025 08:06:34 -0500 Subject: [PATCH 131/146] feat: implement basic split command --- git-branchless-init/src/lib.rs | 1 + git-branchless-lib/src/git/mod.rs | 4 +- git-branchless-lib/src/git/status.rs | 14 + git-branchless-lib/src/git/tree.rs | 27 + git-branchless-lib/src/testing.rs | 11 +- git-branchless-opts/src/lib.rs | 19 + git-branchless/Cargo.toml | 3 + git-branchless/src/commands/mod.rs | 15 + git-branchless/src/commands/split.rs | 451 ++++++++++++++++ git-branchless/tests/test_init.rs | 3 + git-branchless/tests/test_split.rs | 745 +++++++++++++++++++++++++++ 11 files changed, 1291 insertions(+), 2 deletions(-) create mode 100644 git-branchless/src/commands/split.rs create mode 100644 git-branchless/tests/test_split.rs diff --git a/git-branchless-init/src/lib.rs b/git-branchless-init/src/lib.rs index 4d65af814..37d274cb2 100644 --- a/git-branchless-init/src/lib.rs +++ b/git-branchless-init/src/lib.rs @@ -95,6 +95,7 @@ const ALL_ALIASES: &[(&str, &str)] = &[ ("restack", "restack"), ("reword", "reword"), ("sl", "smartlog"), + ("split", "split"), ("smartlog", "smartlog"), ("submit", "submit"), ("sw", "switch"), diff --git a/git-branchless-lib/src/git/mod.rs b/git-branchless-lib/src/git/mod.rs index 8b6a09754..3119d1ce6 100644 --- a/git-branchless-lib/src/git/mod.rs +++ b/git-branchless-lib/src/git/mod.rs @@ -34,4 +34,6 @@ pub use test::{ make_test_command_slug, SerializedNonZeroOid, SerializedTestResult, TestCommand, TEST_ABORT_EXIT_CODE, TEST_INDETERMINATE_EXIT_CODE, TEST_SUCCESS_EXIT_CODE, }; -pub use tree::{dehydrate_tree, get_changed_paths_between_trees, hydrate_tree, Tree}; +pub use tree::{ + dehydrate_tree, get_changed_paths_between_trees, hydrate_tree, make_empty_tree, Tree, +}; diff --git a/git-branchless-lib/src/git/status.rs b/git-branchless-lib/src/git/status.rs index 72ba3368b..193736d51 100644 --- a/git-branchless-lib/src/git/status.rs +++ b/git-branchless-lib/src/git/status.rs @@ -88,6 +88,20 @@ impl From for FileMode { } } +impl From for git2::FileMode { + fn from(file_mode: FileMode) -> Self { + match file_mode { + FileMode::Blob => git2::FileMode::Blob, + FileMode::BlobExecutable => git2::FileMode::BlobExecutable, + FileMode::BlobGroupWritable => git2::FileMode::BlobGroupWritable, + FileMode::Commit => git2::FileMode::Commit, + FileMode::Link => git2::FileMode::Link, + FileMode::Tree => git2::FileMode::Tree, + FileMode::Unreadable => git2::FileMode::Unreadable, + } + } +} + impl From for FileMode { fn from(file_mode: i32) -> Self { if file_mode == i32::from(git2::FileMode::Blob) { diff --git a/git-branchless-lib/src/git/tree.rs b/git-branchless-lib/src/git/tree.rs index f56b5fc14..89f45acdb 100644 --- a/git-branchless-lib/src/git/tree.rs +++ b/git-branchless-lib/src/git/tree.rs @@ -3,6 +3,7 @@ use std::fmt::Debug; use std::path::{Path, PathBuf}; use bstr::ByteVec; +use git2::build::TreeUpdateBuilder; use itertools::Itertools; use thiserror::Error; use tracing::{instrument, warn}; @@ -116,6 +117,31 @@ impl Tree<'_> { .map(|maybe_entry| maybe_entry.map(|entry| entry.inner.id().into())) } + /// Remove the given path from the Tree, creating a new Tree in the given repo. + pub fn remove(&self, repo: &Repo, path: &Path) -> Result { + let mut builder = TreeUpdateBuilder::new(); + let tree_oid = builder + .remove(path) + .create_updated(&repo.inner, &self.inner) + .map_err(Error::BuildTree)?; + Ok(make_non_zero_oid(tree_oid)) + } + + /// Add or replace the given path/entry from the Tree, creating a new Tree in the given repo. + pub fn add_or_replace( + &self, + repo: &Repo, + path: &Path, + entry: &TreeEntry, + ) -> Result { + let mut builder = TreeUpdateBuilder::new(); + let tree_oid = builder + .upsert(path, entry.get_oid().into(), entry.get_filemode().into()) + .create_updated(&repo.inner, &self.inner) + .map_err(Error::BuildTree)?; + Ok(make_non_zero_oid(tree_oid)) + } + /// Get the (top-level) list of paths in this tree, for testing. pub fn get_entry_paths_for_testing(&self) -> impl Debug { self.inner @@ -456,6 +482,7 @@ pub fn hydrate_tree( Ok(make_non_zero_oid(tree_oid)) } +/// Create a new, empty Tree in the given Repo. pub fn make_empty_tree(repo: &Repo) -> Result> { let tree_oid = hydrate_tree(repo, None, Default::default())?; repo.find_tree_or_fail(tree_oid) diff --git a/git-branchless-lib/src/testing.rs b/git-branchless-lib/src/testing.rs index cae3432d7..f4531c3bd 100644 --- a/git-branchless-lib/src/testing.rs +++ b/git-branchless-lib/src/testing.rs @@ -81,6 +81,9 @@ pub struct GitRunOptions { /// Additional environment variables to start the process with. pub env: HashMap, + + /// Subdirectory of repo to use as working directory. + pub subdir: Option, } impl Git { @@ -217,8 +220,14 @@ impl Git { expected_exit_code, input, env, + subdir, } = options; + let current_dir = subdir.as_ref().map_or(self.repo_path.clone(), |subdir| { + let mut p = self.repo_path.clone(); + p.push(subdir); + p + }); let env: BTreeMap<_, _> = self .get_base_env(*time) .into_iter() @@ -229,7 +238,7 @@ impl Git { .collect(); let mut command = Command::new(&self.path_to_git); command - .current_dir(&self.repo_path) + .current_dir(¤t_dir) .args(args) .env_clear() .envs(&env); diff --git a/git-branchless-opts/src/lib.rs b/git-branchless-opts/src/lib.rs index 37d507dfb..2796d7b9b 100644 --- a/git-branchless-opts/src/lib.rs +++ b/git-branchless-opts/src/lib.rs @@ -652,6 +652,25 @@ pub enum Command { subcommand: SnapshotSubcommand, }, + /// Split commits. + Split { + /// Commit to split. If a revset is given, it must resolve to a single commit. + #[clap(value_parser)] + revset: Revset, + + /// Files to extract from the commit. + #[clap(value_parser, required = true)] + files: Vec, + + /// Options for resolving revset expressions. + #[clap(flatten)] + resolve_revset_options: ResolveRevsetOptions, + + /// Options for moving commits. + #[clap(flatten)] + move_options: MoveOptions, + }, + /// Push commits to a remote. Submit(SubmitArgs), diff --git a/git-branchless/Cargo.toml b/git-branchless/Cargo.toml index 8e78ace34..2aa7c661a 100644 --- a/git-branchless/Cargo.toml +++ b/git-branchless/Cargo.toml @@ -111,6 +111,9 @@ name = "test_reword" [[test]] name = "test_snapshot" +[[test]] +name = "test_split" + [[test]] name = "test_sync" diff --git a/git-branchless/src/commands/mod.rs b/git-branchless/src/commands/mod.rs index d0ff79eaa..5b16879d4 100644 --- a/git-branchless/src/commands/mod.rs +++ b/git-branchless/src/commands/mod.rs @@ -6,6 +6,7 @@ mod hide; mod repair; mod restack; mod snapshot; +mod split; mod sync; mod wrap; @@ -179,6 +180,20 @@ fn command_main(ctx: CommandContext, opts: Opts) -> EyreExitOr<()> { } }, + Command::Split { + files, + resolve_revset_options, + revset, + move_options, + } => split::split( + &effects, + revset, + &resolve_revset_options, + files, + &move_options, + &git_run_info, + )?, + Command::Submit(args) => git_branchless_submit::command_main(ctx, args)?, Command::Sync { diff --git a/git-branchless/src/commands/split.rs b/git-branchless/src/commands/split.rs new file mode 100644 index 000000000..19341833c --- /dev/null +++ b/git-branchless/src/commands/split.rs @@ -0,0 +1,451 @@ +//! Split commits, extracting changes from a single commit into separate commits. + +use eyre::Context; +use rayon::ThreadPoolBuilder; +use std::{ + fmt::Write, + path::{Path, PathBuf}, + time::{SystemTime, UNIX_EPOCH}, +}; + +use git_branchless_opts::{MoveOptions, ResolveRevsetOptions, Revset}; +use git_branchless_revset::resolve_commits; +use lib::{ + core::{ + check_out::{check_out_commit, CheckOutCommitOptions, CheckoutTarget}, + config::get_restack_preserve_timestamps, + dag::{CommitSet, Dag}, + effects::Effects, + eventlog::{Event, EventLogDb, EventReplayer}, + gc::mark_commit_reachable, + repo_ext::RepoExt, + rewrite::{ + execute_rebase_plan, move_branches, BuildRebasePlanOptions, ExecuteRebasePlanOptions, + ExecuteRebasePlanResult, MergeConflictRemediation, RebasePlanBuilder, + RebasePlanPermissions, RepoResource, + }, + }, + git::{ + make_empty_tree, CherryPickFastOptions, GitRunInfo, MaybeZeroOid, NonZeroOid, Repo, + ResolvedReferenceInfo, + }, + try_exit_code, + util::{ExitCode, EyreExitOr}, +}; +use tracing::instrument; + +/// Split a commit and restack its descendants. +#[instrument] +pub fn split( + effects: &Effects, + revset: Revset, + resolve_revset_options: &ResolveRevsetOptions, + files_to_extract: Vec, + move_options: &MoveOptions, + git_run_info: &GitRunInfo, +) -> EyreExitOr<()> { + let repo = Repo::from_current_dir()?; + let references_snapshot = repo.get_references_snapshot()?; + let conn = repo.get_db_conn()?; + let event_log_db = EventLogDb::new(&conn)?; + let event_replayer = EventReplayer::from_event_log_db(effects, &repo, &event_log_db)?; + let event_cursor = event_replayer.make_default_cursor(); + let mut dag = Dag::open_and_sync( + effects, + &repo, + &event_replayer, + event_cursor, + &references_snapshot, + )?; + let now = SystemTime::now(); + let event_tx_id = event_log_db.make_transaction_id(now, "split")?; + let pool = ThreadPoolBuilder::new().build()?; + let repo_pool = RepoResource::new_pool(&repo)?; + + let MoveOptions { + force_rewrite_public_commits, + force_in_memory, + force_on_disk, + detect_duplicate_commits_via_patch_id, + resolve_merge_conflicts, + dump_rebase_constraints, + dump_rebase_plan, + } = *move_options; + + let target_oid: NonZeroOid = match resolve_commits( + effects, + &repo, + &mut dag, + &[revset.clone()], + resolve_revset_options, + ) { + Ok(commit_sets) => match dag.commit_set_to_vec(&commit_sets[0])?.as_slice() { + [only_commit_oid] => *only_commit_oid, + other => { + let Revset(expr) = revset; + writeln!( + effects.get_error_stream(), + "Expected revset to expand to exactly 1 commit (got {count}): {expr}", + count = other.len(), + )?; + return Ok(Err(ExitCode(1))); + } + }, + Err(err) => { + err.describe(effects)?; + return Ok(Err(ExitCode(1))); + } + }; + + let permissions = match RebasePlanPermissions::verify_rewrite_set( + &dag, + BuildRebasePlanOptions { + force_rewrite_public_commits, + dump_rebase_constraints, + dump_rebase_plan, + detect_duplicate_commits_via_patch_id, + }, + &vec![target_oid].into_iter().collect(), + )? { + Ok(permissions) => permissions, + Err(err) => { + err.describe(effects, &repo, &dag)?; + return Ok(Err(ExitCode(1))); + } + }; + + let target_commit = repo.find_commit_or_fail(target_oid)?; + let target_tree = target_commit.get_tree()?; + let parent_commits = target_commit.get_parents(); + let (parent_tree, mut remainder_tree) = match parent_commits.as_slice() { + // split the commit by removing the changes from the target, and then + // cherry picking the orignal target as the "extracted" commit + [only_parent] => (only_parent.get_tree()?, target_commit.get_tree()?), + + // no parent: use an empty tree for comparison + [] => (make_empty_tree(&repo)?, target_commit.get_tree()?), + + [..] => { + writeln!( + effects.get_error_stream(), + "Cannot split merge commit {}.", + target_oid + )?; + return Ok(Err(ExitCode(1))); + } + }; + + let mut message = match files_to_extract.as_slice() { + [] => unreachable!("Clap should have required at least 1 file"), + [_] => None, + other => Some(format!("{} files", other.len())), + }; + + let cwd = std::env::current_dir()?; + // tuple: (input_file, resolved_path) + let resolved_paths_to_extract: eyre::Result> = files_to_extract + .into_iter() + .map(|file| { + let path = Path::new(&file).to_path_buf(); + let working_copy_path = match repo.get_working_copy_path() { + Some(working_copy_path) => working_copy_path, + None => { + eyre::bail!("Aborting. Split is not supported in bare root repositories.",) + } + }; + + let path = if cwd != working_copy_path && path.exists() { + let mut repo_relative_path = match cwd.strip_prefix(working_copy_path) { + Ok(working_copy_path) => working_copy_path.to_path_buf(), + Err(_) => { + eyre::bail!( + "Error: current working directory is not in the working copy.\n\ + This may be a bug, please report it.", + ); + } + }; + repo_relative_path.push(path); + repo_relative_path + } else if let Some(stripped_filename) = file.strip_prefix(":/") { + // https://git-scm.com/docs/gitrevisions#Documentation/gitrevisions.txt-emltngtltpathgtemegem0READMEememREADMEem + Path::new(stripped_filename).to_path_buf() + } else { + path + }; + + Ok((file, path)) + }) + .collect(); + + let resolved_paths_to_extract = match resolved_paths_to_extract { + Ok(resolved_paths_to_extract) => resolved_paths_to_extract, + Err(err) => { + writeln!(effects.get_error_stream(), "{err}")?; + return Ok(Err(ExitCode(1))); + } + }; + + for (file, path) in resolved_paths_to_extract.iter() { + let path = path.as_path(); + message = message.or(Some(path.to_string_lossy().to_string())); + + if let Ok(Some(false)) = target_commit.contains_touched_path(path) { + writeln!( + effects.get_error_stream(), + "Aborting: file '{filename}' was not changed in commit {oid}.", + filename = path.to_string_lossy(), + oid = target_commit.get_short_oid()? + )?; + return Ok(Err(ExitCode(1))); + } + + let parent_entry = match parent_tree.get_path(path) { + Ok(entry) => entry, + Err(err) => { + writeln!( + effects.get_error_stream(), + "uh oh error reading tree entry: {err}.", + )?; + return Ok(Err(ExitCode(1))); + } + }; + + let target_entry = target_tree.get_path(path)?; + let temp_tree_oid = match (parent_entry, target_entry) { + // added => remove from remainder commit + (None, Some(_)) => remainder_tree.remove(&repo, path)?, + + // deleted or modified => replace w/ parent content in split commit + (Some(parent_entry), _) => remainder_tree.add_or_replace(&repo, path, &parent_entry)?, + + (None, _) => { + if path.exists() { + writeln!( + effects.get_error_stream(), + "Aborting: the file '{file}' could not be found in this repo.\nPerhaps it's not under version control?", + )?; + } else { + writeln!( + effects.get_error_stream(), + "Aborting: the file '{file}' does not exist.", + )?; + } + return Ok(Err(ExitCode(1))); + } + }; + + remainder_tree = repo + .find_tree(temp_tree_oid)? + .expect("should have been found"); + } + let message = message.expect("at least 1 file should have been given"); + + let remainder_commit_oid = + target_commit.amend_commit(None, None, None, None, Some(&remainder_tree))?; + let remainder_commit = repo.find_commit_or_fail(remainder_commit_oid)?; + + if remainder_commit.is_empty() { + writeln!( + effects.get_error_stream(), + "Aborting: refusing to split all changes out of commit {oid}.", + oid = target_commit.get_short_oid()?, + )?; + return Ok(Err(ExitCode(1))); + }; + + event_log_db.add_events(vec![Event::RewriteEvent { + timestamp: now.duration_since(UNIX_EPOCH)?.as_secs_f64(), + event_tx_id, + old_commit_oid: MaybeZeroOid::NonZero(target_oid), + new_commit_oid: MaybeZeroOid::NonZero(remainder_commit_oid), + }])?; + + let extracted_commit_oid = { + let extracted_tree = repo.cherry_pick_fast( + &target_commit, + &remainder_commit, + &CherryPickFastOptions { + reuse_parent_tree_if_possible: true, + }, + )?; + let extracted_commit_oid = repo.create_commit( + None, + &target_commit.get_author(), + &target_commit.get_committer(), + format!("temp(split): {message}").as_str(), + &extracted_tree, + vec![&remainder_commit], + )?; + + // see git-branchless/src/commands/amend.rs:172 + // TODO maybe this should happen after we've confirmed the rebase has succeeded + mark_commit_reachable(&repo, extracted_commit_oid) + .wrap_err("Marking commit as reachable for GC purposes.")?; + + event_log_db.add_events(vec![Event::CommitEvent { + timestamp: now.duration_since(UNIX_EPOCH)?.as_secs_f64(), + event_tx_id, + commit_oid: extracted_commit_oid, + }])?; + + Some(extracted_commit_oid) + }; + + // push the new commits into the dag for the rebase planner + dag.sync_from_oids( + effects, + &repo, + CommitSet::empty(), + match extracted_commit_oid { + None => CommitSet::from(remainder_commit_oid), + Some(extracted_commit_oid) => vec![remainder_commit_oid, extracted_commit_oid] + .into_iter() + .collect(), + }, + )?; + + enum TargetState { + /// A checked out, detached HEAD + DetachedHead, + /// A checked out branch + CurrentBranch, + /// Any other non-checked out commit + Other, + } + + let head_info = repo.get_head_info()?; + let target_state = match head_info { + ResolvedReferenceInfo { + oid: Some(oid), + reference_name: Some(_), + } if oid == target_oid => TargetState::CurrentBranch, + ResolvedReferenceInfo { + oid: Some(oid), + reference_name: None, + } if oid == target_oid => TargetState::DetachedHead, + ResolvedReferenceInfo { + oid: _, + reference_name: _, + } => TargetState::Other, + }; + + #[derive(Debug)] + struct CleanUp { + checkout_target: Option, + rewritten_oids: Vec<(NonZeroOid, MaybeZeroOid)>, + } + + let cleanup = match (target_state, extracted_commit_oid) { + // branch @ split commit checked out: extend branch to include extracted + // commit; branch will stay checked out w/o any explicit checkout + (TargetState::CurrentBranch, Some(extracted_commit_oid)) => CleanUp { + checkout_target: None, + rewritten_oids: vec![(target_oid, MaybeZeroOid::NonZero(extracted_commit_oid))], + }, + + // commit to split checked out as detached HEAD, don't extend any + // branches, but explicitly check out the newly split commit + (TargetState::DetachedHead, _) => CleanUp { + checkout_target: Some(CheckoutTarget::Oid(remainder_commit_oid)), + rewritten_oids: vec![(target_oid, MaybeZeroOid::NonZero(remainder_commit_oid))], + }, + + // some other commit or branch was checked out, default behavior is fine + (TargetState::CurrentBranch, _) | (TargetState::Other, _) => CleanUp { + checkout_target: None, + rewritten_oids: vec![(target_oid, MaybeZeroOid::NonZero(remainder_commit_oid))], + }, + }; + + let CleanUp { + checkout_target, + rewritten_oids, + } = cleanup; + + move_branches( + effects, + git_run_info, + &repo, + event_tx_id, + &(rewritten_oids.into_iter().collect()), + )?; + + if checkout_target.is_some() { + try_exit_code!(check_out_commit( + effects, + git_run_info, + &repo, + &event_log_db, + event_tx_id, + checkout_target, + &CheckOutCommitOptions { + additional_args: Default::default(), + force_detach: true, + reset: false, + render_smartlog: false, + }, + )?); + } + + let mut builder = RebasePlanBuilder::new(&dag, permissions); + let children = dag.query_children(CommitSet::from(target_oid))?; + for child in dag.commit_set_to_vec(&children)? { + match extracted_commit_oid { + None => builder.move_subtree(child, vec![remainder_commit_oid])?, + Some(extracted_commit_oid) => { + builder.move_subtree(child, vec![extracted_commit_oid])? + } + } + } + let rebase_plan = builder.build(effects, &pool, &repo_pool)?; + + let result = match rebase_plan { + Ok(None) => { + writeln!(effects.get_output_stream(), "Nothing to restack.")?; + None + } + Ok(Some(rebase_plan)) => { + let options = ExecuteRebasePlanOptions { + now, + event_tx_id, + preserve_timestamps: get_restack_preserve_timestamps(&repo)?, + force_in_memory, + force_on_disk, + resolve_merge_conflicts, + check_out_commit_options: CheckOutCommitOptions { + additional_args: Default::default(), + force_detach: false, + reset: false, + render_smartlog: false, + }, + }; + Some(execute_rebase_plan( + effects, + git_run_info, + &repo, + &event_log_db, + &rebase_plan, + &options, + )?) + } + Err(err) => { + err.describe(effects, &repo, &dag)?; + return Ok(Err(ExitCode(1))); + } + }; + + match result { + None | Some(ExecuteRebasePlanResult::Succeeded { rewritten_oids: _ }) => { + try_exit_code!(git_run_info + .run_direct_no_wrapping(Some(event_tx_id), &["branchless", "smartlog"])?); + Ok(Ok(())) + } + + Some(ExecuteRebasePlanResult::DeclinedToMerge { failed_merge_info }) => { + failed_merge_info.describe(effects, &repo, MergeConflictRemediation::Retry)?; + Ok(Err(ExitCode(1))) + } + + Some(ExecuteRebasePlanResult::Failed { exit_code }) => Ok(Err(exit_code)), + } +} diff --git a/git-branchless/tests/test_init.rs b/git-branchless/tests/test_init.rs index 82be1b2d1..950245e5b 100644 --- a/git-branchless/tests/test_init.rs +++ b/git-branchless/tests/test_init.rs @@ -737,6 +737,9 @@ fn test_install_man_pages() -> eyre::Result<()> { git\-branchless\-smartlog(1) `smartlog` command .TP + git\-branchless\-split(1) + Split commits + .TP git\-branchless\-submit(1) Push commits to a remote .TP diff --git a/git-branchless/tests/test_split.rs b/git-branchless/tests/test_split.rs new file mode 100644 index 000000000..2bd85e6cc --- /dev/null +++ b/git-branchless/tests/test_split.rs @@ -0,0 +1,745 @@ +use std::path::PathBuf; + +use lib::testing::{make_git, GitRunOptions}; + +#[test] +fn test_split_detached_head() -> eyre::Result<()> { + let git = make_git()?; + git.init_repo()?; + git.detach_head()?; + + git.write_file_txt("test1", "contents1")?; + git.write_file_txt("test2", "contents2")?; + git.write_file_txt("test3", "contents3")?; + git.run(&["add", "."])?; + git.run(&["commit", "-m", "first commit"])?; + + { + let (stdout, _stderr) = git.branchless("smartlog", &[])?; + insta::assert_snapshot!(stdout, @r###" + O f777ecc (master) create initial.txt + | + @ e48cdc5 first commit + "###); + } + + { + let (stdout, _stderr) = git.branchless("split", &["HEAD", "test2.txt"])?; + insta::assert_snapshot!(&stdout, @r###" + branchless: running command: checkout 2932db7d1099237d79cbd43e29707d70e545d471 + Nothing to restack. + O f777ecc (master) create initial.txt + | + @ 2932db7 first commit + | + o c159d6a temp(split): test2.txt + "###); + } + + { + git.branchless("next", &[])?; + + let (stdout, _stderr) = git.run(&["show", "--pretty=format:", "--stat", "HEAD~"])?; + insta::assert_snapshot!(&stdout, @" + test1.txt | 1 + + test3.txt | 1 + + 2 files changed, 2 insertions(+) + "); + + let (stdout, _stderr) = git.run(&["show", "--pretty=format:", "--stat", "HEAD"])?; + insta::assert_snapshot!(&stdout, @" + test2.txt | 1 + + 1 file changed, 1 insertion(+) + "); + } + + Ok(()) +} + +#[test] +fn test_split_added_file() -> eyre::Result<()> { + let git = make_git()?; + git.init_repo()?; + git.detach_head()?; + + git.commit_file("test1", 1)?; + + git.write_file_txt("test1", "updated contents")?; + git.write_file_txt("test2", "new contents")?; + git.run(&["add", "."])?; + git.run(&["commit", "-m", "first commit"])?; + + { + let (stdout, _stderr) = git.branchless("smartlog", &[])?; + insta::assert_snapshot!(stdout, @r###" + O f777ecc (master) create initial.txt + | + o 62fc20d create test1.txt + | + @ 0f6059d first commit + "###); + } + + { + let (stdout, _stderr) = git.branchless("split", &["HEAD", "test2.txt"])?; + insta::assert_snapshot!(&stdout, @r###" + branchless: running command: checkout 2f9e232b389b1bc8035f4e5bde79f262c0af020c + Nothing to restack. + O f777ecc (master) create initial.txt + | + o 62fc20d create test1.txt + | + @ 2f9e232 first commit + | + o 067feb9 temp(split): test2.txt + "###); + } + + { + git.branchless("next", &[])?; + + let (stdout, _stderr) = git.run(&["show", "--pretty=format:", "--stat", "HEAD~"])?; + insta::assert_snapshot!(&stdout, @" + test1.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + "); + + let (stdout, _stderr) = git.run(&["show", "--pretty=format:", "--stat", "HEAD"])?; + insta::assert_snapshot!(&stdout, @" + test2.txt | 1 + + 1 file changed, 1 insertion(+) + "); + } + + Ok(()) +} + +#[test] +fn test_split_modified_file() -> eyre::Result<()> { + let git = make_git()?; + git.init_repo()?; + git.detach_head()?; + + git.commit_file("test1", 1)?; + git.write_file_txt("test1", "updated contents")?; + git.write_file_txt("test2", "new contents")?; + git.run(&["add", "."])?; + git.run(&["commit", "-m", "first commit"])?; + + { + let (stdout, _stderr) = git.branchless("smartlog", &[])?; + insta::assert_snapshot!(stdout, @r###" + O f777ecc (master) create initial.txt + | + o 62fc20d create test1.txt + | + @ 0f6059d first commit + "###); + } + + { + let (stdout, _stderr) = git.branchless("split", &["HEAD", "test1.txt"])?; + insta::assert_snapshot!(&stdout, @r###" + branchless: running command: checkout 495b4c09b4cc1755847ba0fd42c903f9c7eecc00 + Nothing to restack. + O f777ecc (master) create initial.txt + | + o 62fc20d create test1.txt + | + @ 495b4c0 first commit + | + o 590b05e temp(split): test1.txt + "###); + } + + { + git.branchless("next", &[])?; + + let (stdout, _stderr) = git.run(&["show", "--pretty=format:", "--stat", "HEAD~"])?; + insta::assert_snapshot!(&stdout, @" + test2.txt | 1 + + 1 file changed, 1 insertion(+) + "); + + let (stdout, _stderr) = git.run(&["show", "--pretty=format:", "--stat", "HEAD"])?; + insta::assert_snapshot!(&stdout, @" + test1.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + "); + } + + Ok(()) +} + +#[test] +fn test_split_deleted_file() -> eyre::Result<()> { + let git = make_git()?; + git.init_repo()?; + git.detach_head()?; + + git.commit_file("test1", 1)?; + + git.delete_file("test1")?; + git.write_file_txt("test2", "new contents")?; + git.run(&["add", "."])?; + git.run(&["commit", "-m", "first commit"])?; + + { + let (stdout, _stderr) = git.branchless("smartlog", &[])?; + insta::assert_snapshot!(stdout, @r###" + O f777ecc (master) create initial.txt + | + o 62fc20d create test1.txt + | + @ 94e9c28 first commit + "###); + } + + { + let (stdout, _stderr) = git.run(&["show", "--pretty=format:", "--stat", "HEAD"])?; + insta::assert_snapshot!(&stdout, @" + test1.txt | 1 - + test2.txt | 1 + + 2 files changed, 1 insertion(+), 1 deletion(-) + "); + } + + { + let (stdout, _stderr) = git.branchless("split", &["HEAD", "test1.txt"])?; + insta::assert_snapshot!(&stdout, @r###" + branchless: running command: checkout 495b4c09b4cc1755847ba0fd42c903f9c7eecc00 + Nothing to restack. + O f777ecc (master) create initial.txt + | + o 62fc20d create test1.txt + | + @ 495b4c0 first commit + | + o bfc063a temp(split): test1.txt + "###); + } + + { + git.branchless("next", &[])?; + + let (stdout, _stderr) = git.run(&["show", "--pretty=format:", "--stat", "HEAD~"])?; + insta::assert_snapshot!(&stdout, @" + test2.txt | 1 + + 1 file changed, 1 insertion(+) + "); + + let (stdout, _stderr) = git.run(&["show", "--pretty=format:", "--stat", "HEAD"])?; + insta::assert_snapshot!(&stdout, @" + test1.txt | 1 - + 1 file changed, 1 deletion(-) + "); + } + + Ok(()) +} + +#[test] +fn test_split_multiple_files() -> eyre::Result<()> { + let git = make_git()?; + git.init_repo()?; + git.detach_head()?; + + git.write_file_txt("test1", "contents1")?; + git.write_file_txt("test2", "contents2")?; + git.write_file_txt("test3", "contents3")?; + git.run(&["add", "."])?; + git.run(&["commit", "-m", "first commit"])?; + + { + let (stdout, _stderr) = git.branchless("smartlog", &[])?; + insta::assert_snapshot!(stdout, @r###" + O f777ecc (master) create initial.txt + | + @ e48cdc5 first commit + "###); + } + + { + let (stdout, _stderr) = git.branchless("split", &["HEAD", "test2.txt", "test3.txt"])?; + insta::assert_snapshot!(&stdout, @r###" + branchless: running command: checkout 8e5c74b7a1f09fc7ee1754763c810e3f00fe9b05 + Nothing to restack. + O f777ecc (master) create initial.txt + | + @ 8e5c74b first commit + | + o 0b1f3c6 temp(split): 2 files + "###); + } + + { + git.branchless("next", &[])?; + + let (stdout, _stderr) = git.run(&["show", "--pretty=format:", "--stat", "HEAD~"])?; + insta::assert_snapshot!(&stdout, @" + test1.txt | 1 + + 1 file changed, 1 insertion(+) + "); + + let (stdout, _stderr) = git.run(&["show", "--pretty=format:", "--stat", "HEAD"])?; + insta::assert_snapshot!(&stdout, @" + test2.txt | 1 + + test3.txt | 1 + + 2 files changed, 2 insertions(+) + "); + } + + Ok(()) +} + +#[test] +fn test_split_detached_branch() -> eyre::Result<()> { + let git = make_git()?; + git.init_repo()?; + git.detach_head()?; + + git.write_file_txt("test1", "contents1")?; + git.write_file_txt("test2", "contents2")?; + git.write_file_txt("test3", "contents3")?; + git.run(&["add", "."])?; + git.run(&["commit", "-m", "first commit"])?; + git.run(&["branch", "branch-name"])?; + + { + let (stdout, _stderr) = git.branchless("smartlog", &[])?; + insta::assert_snapshot!(stdout, @r###" + O f777ecc (master) create initial.txt + | + @ e48cdc5 (branch-name) first commit + "###); + } + + { + let (stdout, _stderr) = git.branchless("split", &["HEAD", "test2.txt"])?; + insta::assert_snapshot!(&stdout, @r###" + branchless: processing 1 update: branch branch-name + branchless: running command: checkout 2932db7d1099237d79cbd43e29707d70e545d471 + Nothing to restack. + O f777ecc (master) create initial.txt + | + @ 2932db7 (branch-name) first commit + | + o c159d6a temp(split): test2.txt + "###); + } + + Ok(()) +} + +#[test] +fn test_split_attached_branch() -> eyre::Result<()> { + let git = make_git()?; + git.init_repo()?; + git.detach_head()?; + + git.write_file_txt("test1", "contents1")?; + git.write_file_txt("test2", "contents2")?; + git.write_file_txt("test3", "contents3")?; + git.run(&["add", "."])?; + git.run(&["commit", "-m", "first commit"])?; + git.run(&["switch", "-c", "branch-name"])?; + + { + let (stdout, _stderr) = git.branchless("smartlog", &[])?; + insta::assert_snapshot!(stdout, @r###" + O f777ecc (master) create initial.txt + | + @ e48cdc5 (> branch-name) first commit + "###); + + let (stdout, _stderr) = git.run(&["status"])?; + insta::assert_snapshot!(&stdout, @" + On branch branch-name + nothing to commit, working tree clean + "); + } + + { + let (stdout, _stderr) = git.branchless("split", &["HEAD", "test2.txt"])?; + insta::assert_snapshot!(&stdout, @r###" + branchless: processing 1 update: branch branch-name + Nothing to restack. + O f777ecc (master) create initial.txt + | + o 2932db7 first commit + | + @ c159d6a (> branch-name) temp(split): test2.txt + "###); + + let (stdout, _stderr) = git.run(&["status", "--short"])?; + insta::assert_snapshot!(&stdout, @r#""#); + } + + Ok(()) +} + +#[test] +fn test_split_restacks_descendents() -> eyre::Result<()> { + let git = make_git()?; + git.init_repo()?; + git.detach_head()?; + + git.write_file_txt("test1", "contents1")?; + git.write_file_txt("test2", "contents2")?; + git.write_file_txt("test3", "contents3")?; + git.run(&["add", "."])?; + git.run(&["commit", "-m", "first commit"])?; + + git.commit_file("test3", 1)?; + + { + let (stdout, _stderr) = git.branchless("smartlog", &[])?; + insta::assert_snapshot!(stdout, @r###" + O f777ecc (master) create initial.txt + | + o e48cdc5 first commit + | + @ 3d220e0 create test3.txt + "###); + } + + { + let (stdout, _stderr) = git.branchless("split", &["HEAD~", "test2.txt"])?; + insta::assert_snapshot!(&stdout, @r###" + Attempting rebase in-memory... + [1/1] Committed as: 71d03a3 create test3.txt + branchless: processing 1 rewritten commit + branchless: running command: checkout 71d03a33c534eda4253fc8772a4c0d5e9515127c + In-memory rebase succeeded. + O f777ecc (master) create initial.txt + | + o 2932db7 first commit + | + o c159d6a temp(split): test2.txt + | + @ 71d03a3 create test3.txt + "###); + } + + { + let (stdout, _stderr) = git.run(&["show", "--pretty=format:", "--stat", "HEAD~2"])?; + insta::assert_snapshot!(&stdout, @" + test1.txt | 1 + + test3.txt | 1 + + 2 files changed, 2 insertions(+) + "); + + let (stdout, _stderr) = git.run(&["show", "--pretty=format:", "--stat", "HEAD~"])?; + insta::assert_snapshot!(&stdout, @" + test2.txt | 1 + + 1 file changed, 1 insertion(+) + "); + } + + Ok(()) +} + +#[test] +fn test_split_undo_works() -> eyre::Result<()> { + let git = make_git()?; + git.init_repo()?; + git.detach_head()?; + + git.write_file_txt("test1", "contents1")?; + git.write_file_txt("test2", "contents2")?; + git.write_file_txt("test3", "contents3")?; + git.run(&["add", "."])?; + git.run(&["commit", "-m", "first commit"])?; + + git.commit_file("test3", 1)?; + + { + let (stdout, _stderr) = git.branchless("smartlog", &[])?; + insta::assert_snapshot!(stdout, @r###" + O f777ecc (master) create initial.txt + | + o e48cdc5 first commit + | + @ 3d220e0 create test3.txt + "###); + } + + { + let (stdout, _stderr) = git.branchless("split", &["HEAD~", "test2.txt"])?; + insta::assert_snapshot!(&stdout, @r###" + Attempting rebase in-memory... + [1/1] Committed as: 71d03a3 create test3.txt + branchless: processing 1 rewritten commit + branchless: running command: checkout 71d03a33c534eda4253fc8772a4c0d5e9515127c + In-memory rebase succeeded. + O f777ecc (master) create initial.txt + | + o 2932db7 first commit + | + o c159d6a temp(split): test2.txt + | + @ 71d03a3 create test3.txt + "###); + } + + { + let (stdout, _stderr) = git.run(&["show", "--pretty=format:", "--stat", "HEAD~2"])?; + insta::assert_snapshot!(&stdout, @" + test1.txt | 1 + + test3.txt | 1 + + 2 files changed, 2 insertions(+) + "); + + let (stdout, _stderr) = git.run(&["show", "--pretty=format:", "--stat", "HEAD~"])?; + insta::assert_snapshot!(&stdout, @" + test2.txt | 1 + + 1 file changed, 1 insertion(+) + "); + } + + { + let (_stdout, _stderr) = git.branchless("undo", &["--yes"])?; + + let (stdout, _stderr) = git.branchless("smartlog", &[])?; + insta::assert_snapshot!(stdout, @r###" + O f777ecc (master) create initial.txt + | + o e48cdc5 first commit + | + @ 3d220e0 create test3.txt + "###); + + let (stdout, _stderr) = git.run(&["show", "--pretty=format:", "--stat", "HEAD~"])?; + insta::assert_snapshot!(&stdout, @" + test1.txt | 1 + + test2.txt | 1 + + test3.txt | 1 + + 3 files changed, 3 insertions(+) + "); + } + + Ok(()) +} + +#[test] +fn test_split_supports_absolute_relative_and_repo_relative_paths() -> eyre::Result<()> { + let git = make_git()?; + git.init_repo()?; + git.detach_head()?; + + git.write_file_txt("test1", "root contents1")?; + git.write_file_txt("test2", "root contents2")?; + git.write_file_txt("subdir/test1", "subdir contents1")?; + git.write_file_txt("subdir/test3", "subdir contents3")?; + git.run(&["add", "."])?; + git.run(&["commit", "-m", "first commit"])?; + + { + let (stdout, _stderr) = git.branchless("smartlog", &[])?; + insta::assert_snapshot!(stdout, @r###" + O f777ecc (master) create initial.txt + | + @ 2998051 first commit + "###); + } + + { + // test3.txt only exists in subdir + + let (stdout, _stderr) = git.branchless_with_options( + "split", + &["HEAD", "test3.txt"], + &GitRunOptions { + subdir: Some(PathBuf::from("subdir")), + ..Default::default() + }, + )?; + insta::assert_snapshot!(&stdout, @r###" + branchless: running command: checkout d9d41a308e25a71884831c865c356da43cc5294e + Nothing to restack. + O f777ecc (master) create initial.txt + | + @ d9d41a3 first commit + | + o fc76a91 temp(split): subdir/test3.txt + "###); + + let (stdout, _stderr) = git.run(&["show", "--pretty=format:", "--stat", "HEAD"])?; + insta::assert_snapshot!(&stdout, @" + subdir/test1.txt | 1 + + test1.txt | 1 + + test2.txt | 1 + + 3 files changed, 3 insertions(+) + "); + } + + { + // test1.txt exists in root and subdir; try to resolve relative to cwd + + git.branchless("undo", &["--yes"])?; + + let (stdout, _stderr) = git.branchless_with_options( + "split", + &["HEAD", "test1.txt"], + &GitRunOptions { + subdir: Some(PathBuf::from("subdir")), + ..Default::default() + }, + )?; + insta::assert_snapshot!(&stdout, @r###" + branchless: running command: checkout 0cb81546d386a2064603c05ce7dc9759591f5a93 + Nothing to restack. + O f777ecc (master) create initial.txt + | + @ 0cb8154 first commit + | + o 5d2c1d0 temp(split): subdir/test1.txt + "###); + + let (stdout, _stderr) = git.run(&["show", "--pretty=format:", "--stat", "HEAD"])?; + insta::assert_snapshot!(&stdout, @" + subdir/test3.txt | 1 + + test1.txt | 1 + + test2.txt | 1 + + 3 files changed, 3 insertions(+) + "); + } + + { + // test2.txt only exists in root; resolve it relative to root + + git.branchless("undo", &["--yes"])?; + + let (stdout, _stderr) = git.branchless_with_options( + "split", + &["HEAD", "test2.txt"], + &GitRunOptions { + subdir: Some(PathBuf::from("subdir")), + ..Default::default() + }, + )?; + insta::assert_snapshot!(&stdout, @r###" + branchless: running command: checkout 912204674dfda3ab5fe089dddd1c9bf17b3c2965 + Nothing to restack. + O f777ecc (master) create initial.txt + | + @ 9122046 first commit + | + o ba3abaf temp(split): test2.txt + "###); + + let (stdout, _stderr) = git.run(&["show", "--pretty=format:", "--stat", "HEAD"])?; + insta::assert_snapshot!(&stdout, @" + subdir/test1.txt | 1 + + subdir/test3.txt | 1 + + test1.txt | 1 + + 3 files changed, 3 insertions(+) + "); + } + + { + // test1.txt exists in root and subdir; support : to resolve relative to root + + git.branchless("undo", &["--yes"])?; + + let (stdout, _stderr) = git.branchless_with_options( + "split", + &["HEAD", ":/test1.txt"], + &GitRunOptions { + subdir: Some(PathBuf::from("subdir")), + ..Default::default() + }, + )?; + insta::assert_snapshot!(&stdout, @r###" + branchless: running command: checkout 6d0cd9b8fb1938e50250f30427a0d4865b351f2f + Nothing to restack. + O f777ecc (master) create initial.txt + | + @ 6d0cd9b first commit + | + o 2f03a38 temp(split): test1.txt + "###); + + let (stdout, _stderr) = git.run(&["show", "--pretty=format:", "--stat", "HEAD"])?; + insta::assert_snapshot!(&stdout, @" + subdir/test1.txt | 1 + + subdir/test3.txt | 1 + + test2.txt | 1 + + 3 files changed, 3 insertions(+) + "); + } + + Ok(()) +} + +#[test] +fn test_split_unchanged_file() -> eyre::Result<()> { + let git = make_git()?; + git.init_repo()?; + git.detach_head()?; + + git.write_file_txt("test1", "contents1")?; + git.run(&["add", "."])?; + git.run(&["commit", "-m", "first commit"])?; + + { + let (stdout, _stderr) = git.branchless("smartlog", &[])?; + insta::assert_snapshot!(stdout, @r###" + O f777ecc (master) create initial.txt + | + @ 8e5c74b first commit + "###); + } + + { + let (_stdout, stderr) = git.branchless_with_options( + "split", + &["HEAD", "initial.txt"], + &GitRunOptions { + expected_exit_code: 1, + ..Default::default() + }, + )?; + insta::assert_snapshot!(&stderr, @r###" + Aborting: file 'initial.txt' was not changed in commit 8e5c74b. + "###); + } + + Ok(()) +} + +#[test] +fn test_split_will_not_split_to_empty_commit() -> eyre::Result<()> { + let git = make_git()?; + git.init_repo()?; + git.detach_head()?; + + git.write_file_txt("test1", "contents1")?; + git.run(&["add", "."])?; + git.run(&["commit", "-m", "first commit"])?; + + { + let (stdout, _stderr) = git.branchless("smartlog", &[])?; + insta::assert_snapshot!(stdout, @r###" + O f777ecc (master) create initial.txt + | + @ 8e5c74b first commit + "###); + } + + { + let (_stdout, stderr) = git.branchless_with_options( + "split", + &["HEAD", "test1.txt"], + &GitRunOptions { + expected_exit_code: 1, + ..Default::default() + }, + )?; + insta::assert_snapshot!(&stderr, @r###" + Aborting: refusing to split all changes out of commit 8e5c74b. + "###); + } + + Ok(()) +} From 299db5acdec9377b3381d57e406de432ea608661 Mon Sep 17 00:00:00 2001 From: Clayton Carter Date: Mon, 26 May 2025 21:14:46 -0400 Subject: [PATCH 132/146] temp(split): try out new commit message format See #1462 --- git-branchless-lib/src/git/diff.rs | 66 +++++++++++++++++++++++++++- git-branchless-lib/src/git/mod.rs | 2 +- git-branchless/src/commands/split.rs | 23 +++++----- git-branchless/tests/test_split.rs | 38 ++++++++-------- 4 files changed, 98 insertions(+), 31 deletions(-) diff --git a/git-branchless-lib/src/git/diff.rs b/git-branchless-lib/src/git/diff.rs index c4d4a2d3d..612ab6dd0 100644 --- a/git-branchless-lib/src/git/diff.rs +++ b/git-branchless-lib/src/git/diff.rs @@ -3,7 +3,7 @@ use std::collections::HashMap; use std::path::PathBuf; use std::sync::{Arc, Mutex}; -use eyre::Context; +use eyre::{Context, OptionExt}; use itertools::Itertools; use scm_record::helpers::make_binary_description; use scm_record::{ChangeType, File, FileMode, Section, SectionChangedLine}; @@ -15,6 +15,17 @@ pub struct Diff<'repo> { pub(super) inner: git2::Diff<'repo>, } +impl Diff<'_> { + /// Summarize this diff into a single line "short" format. + pub fn short_stats(&self) -> eyre::Result { + let stats = self.inner.stats()?; + let buf = stats.to_buf(git2::DiffStatsFormat::SHORT, usize::MAX)?; + buf.as_str() + .ok_or_eyre("converting buf to str") + .map(|s| s.trim().to_string()) + } +} + #[derive(Clone, Debug, PartialEq, Eq, Hash)] struct GitHunk { old_start: usize, @@ -23,6 +34,59 @@ struct GitHunk { new_lines: usize, } +/// Summarize a diff for use as part of a temporary commit message. +pub fn summarize_diff_for_temporary_commit(diff: &Diff) -> eyre::Result { + // this returns something like `1 file changed, 1 deletion(-)` + // diff.short_stats() + + // this returns something like `test2.txt (-1)` or `2 files (+1/-2)` + let stats = diff.inner.stats()?; + let prefix = if stats.files_changed() == 1 { + let mut prefix = None; + // returning false terminates iteration, but that also returns Err, so + // catch and ignore it + let _ = diff.inner.foreach( + &mut |delta: git2::DiffDelta, _| { + if let Some(path) = delta.old_file().path() { + // prefix = Some(format!("{}", path.file_name().unwrap().to_string_lossy())); + prefix = Some(format!("{}", path.display())); + } else if let Some(path) = delta.new_file().path() { + prefix = Some(format!("{}", path.display())); + } + + false + }, + None, + None, + None, + ); + prefix + } else { + Some(format!("{} files", stats.files_changed())) + }; + + let i = stats.insertions(); + let d = stats.deletions(); + Ok(format!( + "{prefix} ({i}{slash}{d})", + prefix = prefix.unwrap(), + i = if i > 0 { + format!("+{i}") + } else { + String::new() + }, + slash = if i > 0 && d > 0 { "/" } else { "" }, + d = if d > 0 { + format!("-{d}") + } else { + String::new() + } + )) + // stats.files_changed() + // stats.insertions() + // stats.deletions() +} + /// Calculate the diff between the index and the working copy. pub fn process_diff_for_record(repo: &Repo, diff: &Diff) -> eyre::Result>> { let Diff { inner: diff } = diff; diff --git a/git-branchless-lib/src/git/mod.rs b/git-branchless-lib/src/git/mod.rs index 3119d1ce6..fc0b8cf4e 100644 --- a/git-branchless-lib/src/git/mod.rs +++ b/git-branchless-lib/src/git/mod.rs @@ -14,7 +14,7 @@ mod test; mod tree; pub use config::{Config, ConfigRead, ConfigValue, ConfigWrite}; -pub use diff::{process_diff_for_record, Diff}; +pub use diff::{process_diff_for_record, summarize_diff_for_temporary_commit, Diff}; pub use index::{update_index, Index, IndexEntry, Stage, UpdateIndexCommand}; pub use object::Commit; pub use oid::{MaybeZeroOid, NonZeroOid}; diff --git a/git-branchless/src/commands/split.rs b/git-branchless/src/commands/split.rs index 19341833c..7410d5119 100644 --- a/git-branchless/src/commands/split.rs +++ b/git-branchless/src/commands/split.rs @@ -26,8 +26,8 @@ use lib::{ }, }, git::{ - make_empty_tree, CherryPickFastOptions, GitRunInfo, MaybeZeroOid, NonZeroOid, Repo, - ResolvedReferenceInfo, + make_empty_tree, summarize_diff_for_temporary_commit, CherryPickFastOptions, GitRunInfo, + MaybeZeroOid, NonZeroOid, Repo, ResolvedReferenceInfo, }, try_exit_code, util::{ExitCode, EyreExitOr}, @@ -135,12 +135,6 @@ pub fn split( } }; - let mut message = match files_to_extract.as_slice() { - [] => unreachable!("Clap should have required at least 1 file"), - [_] => None, - other => Some(format!("{} files", other.len())), - }; - let cwd = std::env::current_dir()?; // tuple: (input_file, resolved_path) let resolved_paths_to_extract: eyre::Result> = files_to_extract @@ -187,7 +181,6 @@ pub fn split( for (file, path) in resolved_paths_to_extract.iter() { let path = path.as_path(); - message = message.or(Some(path.to_string_lossy().to_string())); if let Ok(Some(false)) = target_commit.contains_touched_path(path) { writeln!( @@ -238,7 +231,17 @@ pub fn split( .find_tree(temp_tree_oid)? .expect("should have been found"); } - let message = message.expect("at least 1 file should have been given"); + let message = { + let (old_tree, new_tree) = (&remainder_tree, &target_tree); + let diff = repo.get_diff_between_trees( + effects, + Some(old_tree), + new_tree, + 0, // we don't care about the context here + )?; + + summarize_diff_for_temporary_commit(&diff)? + }; let remainder_commit_oid = target_commit.amend_commit(None, None, None, None, Some(&remainder_tree))?; diff --git a/git-branchless/tests/test_split.rs b/git-branchless/tests/test_split.rs index 2bd85e6cc..c07b4b45c 100644 --- a/git-branchless/tests/test_split.rs +++ b/git-branchless/tests/test_split.rs @@ -32,7 +32,7 @@ fn test_split_detached_head() -> eyre::Result<()> { | @ 2932db7 first commit | - o c159d6a temp(split): test2.txt + o 01523cc temp(split): test2.txt (+1) "###); } @@ -91,7 +91,7 @@ fn test_split_added_file() -> eyre::Result<()> { | @ 2f9e232 first commit | - o 067feb9 temp(split): test2.txt + o c4b067e temp(split): test2.txt (+1) "###); } @@ -148,7 +148,7 @@ fn test_split_modified_file() -> eyre::Result<()> { | @ 495b4c0 first commit | - o 590b05e temp(split): test1.txt + o 5375cb6 temp(split): test1.txt (+1/-1) "###); } @@ -215,7 +215,7 @@ fn test_split_deleted_file() -> eyre::Result<()> { | @ 495b4c0 first commit | - o bfc063a temp(split): test1.txt + o de6e4df temp(split): test1.txt (-1) "###); } @@ -268,7 +268,7 @@ fn test_split_multiple_files() -> eyre::Result<()> { | @ 8e5c74b first commit | - o 0b1f3c6 temp(split): 2 files + o 57020b0 temp(split): 2 files (+2) "###); } @@ -324,7 +324,7 @@ fn test_split_detached_branch() -> eyre::Result<()> { | @ 2932db7 (branch-name) first commit | - o c159d6a temp(split): test2.txt + o 01523cc temp(split): test2.txt (+1) "###); } @@ -368,7 +368,7 @@ fn test_split_attached_branch() -> eyre::Result<()> { | o 2932db7 first commit | - @ c159d6a (> branch-name) temp(split): test2.txt + @ 01523cc (> branch-name) temp(split): test2.txt (+1) "###); let (stdout, _stderr) = git.run(&["status", "--short"])?; @@ -407,17 +407,17 @@ fn test_split_restacks_descendents() -> eyre::Result<()> { let (stdout, _stderr) = git.branchless("split", &["HEAD~", "test2.txt"])?; insta::assert_snapshot!(&stdout, @r###" Attempting rebase in-memory... - [1/1] Committed as: 71d03a3 create test3.txt + [1/1] Committed as: a629a22 create test3.txt branchless: processing 1 rewritten commit - branchless: running command: checkout 71d03a33c534eda4253fc8772a4c0d5e9515127c + branchless: running command: checkout a629a22974b9232523701e66e6e2bcdf8ffc8ad1 In-memory rebase succeeded. O f777ecc (master) create initial.txt | o 2932db7 first commit | - o c159d6a temp(split): test2.txt + o 01523cc temp(split): test2.txt (+1) | - @ 71d03a3 create test3.txt + @ a629a22 create test3.txt "###); } @@ -468,17 +468,17 @@ fn test_split_undo_works() -> eyre::Result<()> { let (stdout, _stderr) = git.branchless("split", &["HEAD~", "test2.txt"])?; insta::assert_snapshot!(&stdout, @r###" Attempting rebase in-memory... - [1/1] Committed as: 71d03a3 create test3.txt + [1/1] Committed as: a629a22 create test3.txt branchless: processing 1 rewritten commit - branchless: running command: checkout 71d03a33c534eda4253fc8772a4c0d5e9515127c + branchless: running command: checkout a629a22974b9232523701e66e6e2bcdf8ffc8ad1 In-memory rebase succeeded. O f777ecc (master) create initial.txt | o 2932db7 first commit | - o c159d6a temp(split): test2.txt + o 01523cc temp(split): test2.txt (+1) | - @ 71d03a3 create test3.txt + @ a629a22 create test3.txt "###); } @@ -561,7 +561,7 @@ fn test_split_supports_absolute_relative_and_repo_relative_paths() -> eyre::Resu | @ d9d41a3 first commit | - o fc76a91 temp(split): subdir/test3.txt + o 98da165 temp(split): subdir/test3.txt (+1) "###); let (stdout, _stderr) = git.run(&["show", "--pretty=format:", "--stat", "HEAD"])?; @@ -593,7 +593,7 @@ fn test_split_supports_absolute_relative_and_repo_relative_paths() -> eyre::Resu | @ 0cb8154 first commit | - o 5d2c1d0 temp(split): subdir/test1.txt + o 89564a0 temp(split): subdir/test1.txt (+1) "###); let (stdout, _stderr) = git.run(&["show", "--pretty=format:", "--stat", "HEAD"])?; @@ -625,7 +625,7 @@ fn test_split_supports_absolute_relative_and_repo_relative_paths() -> eyre::Resu | @ 9122046 first commit | - o ba3abaf temp(split): test2.txt + o c3d37e6 temp(split): test2.txt (+1) "###); let (stdout, _stderr) = git.run(&["show", "--pretty=format:", "--stat", "HEAD"])?; @@ -657,7 +657,7 @@ fn test_split_supports_absolute_relative_and_repo_relative_paths() -> eyre::Resu | @ 6d0cd9b first commit | - o 2f03a38 temp(split): test1.txt + o 9eeb11b temp(split): test1.txt (+1) "###); let (stdout, _stderr) = git.run(&["show", "--pretty=format:", "--stat", "HEAD"])?; From ecdc6d1ced9bec49e0013b07b4a1b3b9babf300e Mon Sep 17 00:00:00 2001 From: Clayton Carter Date: Sun, 4 May 2025 22:30:23 -0500 Subject: [PATCH 133/146] feat(split): add --detach flag --- git-branchless-opts/src/lib.rs | 4 + git-branchless/src/commands/mod.rs | 25 ++++-- git-branchless/src/commands/split.rs | 117 +++++++++++++++++---------- git-branchless/tests/test_split.rs | 63 +++++++++++++++ 4 files changed, 157 insertions(+), 52 deletions(-) diff --git a/git-branchless-opts/src/lib.rs b/git-branchless-opts/src/lib.rs index 2796d7b9b..d12b0bd6a 100644 --- a/git-branchless-opts/src/lib.rs +++ b/git-branchless-opts/src/lib.rs @@ -662,6 +662,10 @@ pub enum Command { #[clap(value_parser, required = true)] files: Vec, + /// Restack any descendents onto the split commit, not the extracted commit. + #[clap(action, short = 'd', long = "detach")] + detach: bool, + /// Options for resolving revset expressions. #[clap(flatten)] resolve_revset_options: ResolveRevsetOptions, diff --git a/git-branchless/src/commands/mod.rs b/git-branchless/src/commands/mod.rs index 5b16879d4..a97baec17 100644 --- a/git-branchless/src/commands/mod.rs +++ b/git-branchless/src/commands/mod.rs @@ -181,18 +181,27 @@ fn command_main(ctx: CommandContext, opts: Opts) -> EyreExitOr<()> { }, Command::Split { + detach, files, resolve_revset_options, revset, move_options, - } => split::split( - &effects, - revset, - &resolve_revset_options, - files, - &move_options, - &git_run_info, - )?, + } => { + let split_mode = match detach { + true => split::SplitMode::DetachAfter, + false => split::SplitMode::InsertAfter, + }; + + split::split( + &effects, + revset, + &resolve_revset_options, + files, + split_mode, + &move_options, + &git_run_info, + )? + } Command::Submit(args) => git_branchless_submit::command_main(ctx, args)?, diff --git a/git-branchless/src/commands/split.rs b/git-branchless/src/commands/split.rs index 7410d5119..388684c9f 100644 --- a/git-branchless/src/commands/split.rs +++ b/git-branchless/src/commands/split.rs @@ -34,6 +34,13 @@ use lib::{ }; use tracing::instrument; +#[derive(Debug, PartialEq)] +/// What should `split` do with the extracted changes? +pub enum SplitMode { + DetachAfter, + InsertAfter, +} + /// Split a commit and restack its descendants. #[instrument] pub fn split( @@ -41,6 +48,7 @@ pub fn split( revset: Revset, resolve_revset_options: &ResolveRevsetOptions, files_to_extract: Vec, + split_mode: SplitMode, move_options: &MoveOptions, git_run_info: &GitRunInfo, ) -> EyreExitOr<()> { @@ -117,15 +125,19 @@ pub fn split( let target_commit = repo.find_commit_or_fail(target_oid)?; let target_tree = target_commit.get_tree()?; let parent_commits = target_commit.get_parents(); - let (parent_tree, mut remainder_tree) = match parent_commits.as_slice() { + let (parent_tree, mut remainder_tree) = match (&split_mode, parent_commits.as_slice()) { // split the commit by removing the changes from the target, and then // cherry picking the orignal target as the "extracted" commit - [only_parent] => (only_parent.get_tree()?, target_commit.get_tree()?), + (SplitMode::InsertAfter, [only_parent]) | (SplitMode::DetachAfter, [only_parent]) => { + (only_parent.get_tree()?, target_commit.get_tree()?) + } // no parent: use an empty tree for comparison - [] => (make_empty_tree(&repo)?, target_commit.get_tree()?), + (SplitMode::InsertAfter, []) | (SplitMode::DetachAfter, []) => { + (make_empty_tree(&repo)?, target_commit.get_tree()?) + } - [..] => { + (_, [..]) => { writeln!( effects.get_error_stream(), "Cannot split merge commit {}.", @@ -204,14 +216,18 @@ pub fn split( }; let target_entry = target_tree.get_path(path)?; - let temp_tree_oid = match (parent_entry, target_entry) { + let temp_tree_oid = match (parent_entry, target_entry, &split_mode) { // added => remove from remainder commit - (None, Some(_)) => remainder_tree.remove(&repo, path)?, + (None, Some(_), SplitMode::InsertAfter) | (None, Some(_), SplitMode::DetachAfter) => { + remainder_tree.remove(&repo, path)? + } // deleted or modified => replace w/ parent content in split commit - (Some(parent_entry), _) => remainder_tree.add_or_replace(&repo, path, &parent_entry)?, + (Some(parent_entry), _, _) => { + remainder_tree.add_or_replace(&repo, path, &parent_entry)? + } - (None, _) => { + (None, _, _) => { if path.exists() { writeln!( effects.get_error_stream(), @@ -263,35 +279,37 @@ pub fn split( new_commit_oid: MaybeZeroOid::NonZero(remainder_commit_oid), }])?; - let extracted_commit_oid = { - let extracted_tree = repo.cherry_pick_fast( - &target_commit, - &remainder_commit, - &CherryPickFastOptions { - reuse_parent_tree_if_possible: true, - }, - )?; - let extracted_commit_oid = repo.create_commit( - None, - &target_commit.get_author(), - &target_commit.get_committer(), - format!("temp(split): {message}").as_str(), - &extracted_tree, - vec![&remainder_commit], - )?; + let extracted_commit_oid = match split_mode { + SplitMode::InsertAfter | SplitMode::DetachAfter => { + let extracted_tree = repo.cherry_pick_fast( + &target_commit, + &remainder_commit, + &CherryPickFastOptions { + reuse_parent_tree_if_possible: true, + }, + )?; + let extracted_commit_oid = repo.create_commit( + None, + &target_commit.get_author(), + &target_commit.get_committer(), + format!("temp(split): {message}").as_str(), + &extracted_tree, + vec![&remainder_commit], + )?; - // see git-branchless/src/commands/amend.rs:172 - // TODO maybe this should happen after we've confirmed the rebase has succeeded - mark_commit_reachable(&repo, extracted_commit_oid) - .wrap_err("Marking commit as reachable for GC purposes.")?; + // see git-branchless/src/commands/amend.rs:172 + // TODO maybe this should happen after we've confirmed the rebase has succeeded? + mark_commit_reachable(&repo, extracted_commit_oid) + .wrap_err("Marking commit as reachable for GC purposes.")?; - event_log_db.add_events(vec![Event::CommitEvent { - timestamp: now.duration_since(UNIX_EPOCH)?.as_secs_f64(), - event_tx_id, - commit_oid: extracted_commit_oid, - }])?; + event_log_db.add_events(vec![Event::CommitEvent { + timestamp: now.duration_since(UNIX_EPOCH)?.as_secs_f64(), + event_tx_id, + commit_oid: extracted_commit_oid, + }])?; - Some(extracted_commit_oid) + Some(extracted_commit_oid) + } }; // push the new commits into the dag for the rebase planner @@ -338,23 +356,25 @@ pub fn split( rewritten_oids: Vec<(NonZeroOid, MaybeZeroOid)>, } - let cleanup = match (target_state, extracted_commit_oid) { + let cleanup = match (target_state, &split_mode, extracted_commit_oid) { // branch @ split commit checked out: extend branch to include extracted // commit; branch will stay checked out w/o any explicit checkout - (TargetState::CurrentBranch, Some(extracted_commit_oid)) => CleanUp { - checkout_target: None, - rewritten_oids: vec![(target_oid, MaybeZeroOid::NonZero(extracted_commit_oid))], - }, + (TargetState::CurrentBranch, SplitMode::InsertAfter, Some(extracted_commit_oid)) => { + CleanUp { + checkout_target: None, + rewritten_oids: vec![(target_oid, MaybeZeroOid::NonZero(extracted_commit_oid))], + } + } // commit to split checked out as detached HEAD, don't extend any // branches, but explicitly check out the newly split commit - (TargetState::DetachedHead, _) => CleanUp { + (TargetState::DetachedHead, _, _) => CleanUp { checkout_target: Some(CheckoutTarget::Oid(remainder_commit_oid)), rewritten_oids: vec![(target_oid, MaybeZeroOid::NonZero(remainder_commit_oid))], }, // some other commit or branch was checked out, default behavior is fine - (TargetState::CurrentBranch, _) | (TargetState::Other, _) => CleanUp { + (TargetState::CurrentBranch, _, _) | (TargetState::Other, _, _) => CleanUp { checkout_target: None, rewritten_oids: vec![(target_oid, MaybeZeroOid::NonZero(remainder_commit_oid))], }, @@ -393,9 +413,18 @@ pub fn split( let mut builder = RebasePlanBuilder::new(&dag, permissions); let children = dag.query_children(CommitSet::from(target_oid))?; for child in dag.commit_set_to_vec(&children)? { - match extracted_commit_oid { - None => builder.move_subtree(child, vec![remainder_commit_oid])?, - Some(extracted_commit_oid) => { + match (&split_mode, extracted_commit_oid) { + (_, None) => builder.move_subtree(child, vec![remainder_commit_oid])?, + (_, Some(extracted_commit_oid)) => { + builder.move_subtree(child, vec![extracted_commit_oid])? + } + } + + match (&split_mode, extracted_commit_oid) { + (_, None) | (SplitMode::DetachAfter, Some(_)) => { + builder.move_subtree(child, vec![remainder_commit_oid])? + } + (_, Some(extracted_commit_oid)) => { builder.move_subtree(child, vec![extracted_commit_oid])? } } diff --git a/git-branchless/tests/test_split.rs b/git-branchless/tests/test_split.rs index c07b4b45c..fb612eefe 100644 --- a/git-branchless/tests/test_split.rs +++ b/git-branchless/tests/test_split.rs @@ -439,6 +439,69 @@ fn test_split_restacks_descendents() -> eyre::Result<()> { Ok(()) } +#[test] +fn test_split_detach() -> eyre::Result<()> { + let git = make_git()?; + git.init_repo()?; + git.detach_head()?; + + git.write_file_txt("test1", "contents1")?; + git.write_file_txt("test2", "contents2")?; + git.write_file_txt("test3", "contents3")?; + git.run(&["add", "."])?; + git.run(&["commit", "-m", "first commit"])?; + + git.commit_file("test3", 1)?; + + { + let (stdout, _stderr) = git.branchless("smartlog", &[])?; + insta::assert_snapshot!(stdout, @r###" + O f777ecc (master) create initial.txt + | + o e48cdc5 first commit + | + @ 3d220e0 create test3.txt + "###); + } + + { + let (stdout, _stderr) = git.branchless("split", &["HEAD~", "test2.txt", "--detach"])?; + insta::assert_snapshot!(&stdout, @r###" + Attempting rebase in-memory... + [1/1] Committed as: f88fbe5 create test3.txt + branchless: processing 1 rewritten commit + branchless: running command: checkout f88fbe5901493ffe1c669cdb8aa5f056dc0bb605 + In-memory rebase succeeded. + O f777ecc (master) create initial.txt + | + o 2932db7 first commit + |\ + | o 01523cc temp(split): test2.txt (+1) + | + @ f88fbe5 create test3.txt + "###); + } + + { + let (stdout, _stderr) = git.run(&["show", "--pretty=format:", "--stat", "HEAD~"])?; + insta::assert_snapshot!(&stdout, @" + test1.txt | 1 + + test3.txt | 1 + + 2 files changed, 2 insertions(+) + "); + + let (split_commit, _stderr) = git.run(&["query", "--raw", "exactly(siblings(HEAD), 1)"])?; + let (stdout, _stderr) = + git.run(&["show", "--pretty=format:", "--stat", split_commit.trim()])?; + insta::assert_snapshot!(&stdout, @" + test2.txt | 1 + + 1 file changed, 1 insertion(+) + "); + } + + Ok(()) +} + #[test] fn test_split_undo_works() -> eyre::Result<()> { let git = make_git()?; From 2df933932a227b055679a1e53100f9c61763c74b Mon Sep 17 00:00:00 2001 From: Clayton Carter Date: Mon, 5 May 2025 10:24:09 -0500 Subject: [PATCH 134/146] feat(split): add --discard flag --- git-branchless-lib/src/git/index.rs | 8 +- git-branchless-opts/src/lib.rs | 6 +- git-branchless/src/commands/mod.rs | 11 +- git-branchless/src/commands/split.rs | 32 +++- git-branchless/tests/test_split.rs | 236 +++++++++++++++++++++++++++ 5 files changed, 282 insertions(+), 11 deletions(-) diff --git a/git-branchless-lib/src/git/index.rs b/git-branchless-lib/src/git/index.rs index f83c3dd20..a6663051b 100644 --- a/git-branchless-lib/src/git/index.rs +++ b/git-branchless-lib/src/git/index.rs @@ -5,7 +5,7 @@ use tracing::instrument; use crate::core::eventlog::EventTransactionId; -use super::{FileMode, GitRunInfo, GitRunOpts, GitRunResult, MaybeZeroOid, NonZeroOid, Repo}; +use super::{FileMode, GitRunInfo, GitRunOpts, GitRunResult, MaybeZeroOid, NonZeroOid, Repo, Tree}; /// The possible stages for items in the index. #[derive(Copy, Clone, Debug)] @@ -88,6 +88,12 @@ impl Index { }, }) } + + /// Update the index from the given tree and write it to disk. + pub fn update_from_tree(&mut self, tree: &Tree) -> eyre::Result<()> { + self.inner.read_tree(&tree.inner)?; + self.inner.write().wrap_err("writing index") + } } /// The command to update the index, as defined by `git update-index`. diff --git a/git-branchless-opts/src/lib.rs b/git-branchless-opts/src/lib.rs index d12b0bd6a..dc34b0a7a 100644 --- a/git-branchless-opts/src/lib.rs +++ b/git-branchless-opts/src/lib.rs @@ -663,9 +663,13 @@ pub enum Command { files: Vec, /// Restack any descendents onto the split commit, not the extracted commit. - #[clap(action, short = 'd', long = "detach")] + #[clap(action, short = 'd', long)] detach: bool, + /// After extracting the changes, don't recommit them. + #[clap(action, short = 'D', long = "discard", conflicts_with("detach"))] + discard: bool, + /// Options for resolving revset expressions. #[clap(flatten)] resolve_revset_options: ResolveRevsetOptions, diff --git a/git-branchless/src/commands/mod.rs b/git-branchless/src/commands/mod.rs index a97baec17..0ff55db63 100644 --- a/git-branchless/src/commands/mod.rs +++ b/git-branchless/src/commands/mod.rs @@ -182,14 +182,19 @@ fn command_main(ctx: CommandContext, opts: Opts) -> EyreExitOr<()> { Command::Split { detach, + discard, files, resolve_revset_options, revset, move_options, } => { - let split_mode = match detach { - true => split::SplitMode::DetachAfter, - false => split::SplitMode::InsertAfter, + let split_mode = match (detach, discard) { + (true, false) => split::SplitMode::DetachAfter, + (false, true) => split::SplitMode::Discard, + (false, false) => split::SplitMode::InsertAfter, + (true, true) => { + unreachable!("clap should prevent this") + } }; split::split( diff --git a/git-branchless/src/commands/split.rs b/git-branchless/src/commands/split.rs index 388684c9f..ff7dc0a32 100644 --- a/git-branchless/src/commands/split.rs +++ b/git-branchless/src/commands/split.rs @@ -38,6 +38,7 @@ use tracing::instrument; /// What should `split` do with the extracted changes? pub enum SplitMode { DetachAfter, + Discard, InsertAfter, } @@ -128,12 +129,14 @@ pub fn split( let (parent_tree, mut remainder_tree) = match (&split_mode, parent_commits.as_slice()) { // split the commit by removing the changes from the target, and then // cherry picking the orignal target as the "extracted" commit - (SplitMode::InsertAfter, [only_parent]) | (SplitMode::DetachAfter, [only_parent]) => { + (SplitMode::InsertAfter, [only_parent]) + | (SplitMode::Discard, [only_parent]) + | (SplitMode::DetachAfter, [only_parent]) => { (only_parent.get_tree()?, target_commit.get_tree()?) } // no parent: use an empty tree for comparison - (SplitMode::InsertAfter, []) | (SplitMode::DetachAfter, []) => { + (SplitMode::InsertAfter, []) | (SplitMode::Discard, []) | (SplitMode::DetachAfter, []) => { (make_empty_tree(&repo)?, target_commit.get_tree()?) } @@ -218,9 +221,9 @@ pub fn split( let target_entry = target_tree.get_path(path)?; let temp_tree_oid = match (parent_entry, target_entry, &split_mode) { // added => remove from remainder commit - (None, Some(_), SplitMode::InsertAfter) | (None, Some(_), SplitMode::DetachAfter) => { - remainder_tree.remove(&repo, path)? - } + (None, Some(_), SplitMode::InsertAfter) + | (None, Some(_), SplitMode::DetachAfter) + | (None, Some(_), SplitMode::Discard) => remainder_tree.remove(&repo, path)?, // deleted or modified => replace w/ parent content in split commit (Some(parent_entry), _, _) => { @@ -280,6 +283,7 @@ pub fn split( }])?; let extracted_commit_oid = match split_mode { + SplitMode::Discard => None, SplitMode::InsertAfter | SplitMode::DetachAfter => { let extracted_tree = repo.cherry_pick_fast( &target_commit, @@ -354,6 +358,7 @@ pub fn split( struct CleanUp { checkout_target: Option, rewritten_oids: Vec<(NonZeroOid, MaybeZeroOid)>, + reset_index: bool, } let cleanup = match (target_state, &split_mode, extracted_commit_oid) { @@ -363,26 +368,36 @@ pub fn split( CleanUp { checkout_target: None, rewritten_oids: vec![(target_oid, MaybeZeroOid::NonZero(extracted_commit_oid))], + reset_index: false, } } + (TargetState::CurrentBranch, SplitMode::Discard, None) => CleanUp { + checkout_target: None, + rewritten_oids: vec![(target_oid, MaybeZeroOid::NonZero(remainder_commit_oid))], + reset_index: true, + }, + // commit to split checked out as detached HEAD, don't extend any // branches, but explicitly check out the newly split commit (TargetState::DetachedHead, _, _) => CleanUp { checkout_target: Some(CheckoutTarget::Oid(remainder_commit_oid)), rewritten_oids: vec![(target_oid, MaybeZeroOid::NonZero(remainder_commit_oid))], + reset_index: false, }, // some other commit or branch was checked out, default behavior is fine - (TargetState::CurrentBranch, _, _) | (TargetState::Other, _, _) => CleanUp { + (TargetState::CurrentBranch | TargetState::Other, _, _) => CleanUp { checkout_target: None, rewritten_oids: vec![(target_oid, MaybeZeroOid::NonZero(remainder_commit_oid))], + reset_index: false, }, }; let CleanUp { checkout_target, rewritten_oids, + reset_index, } = cleanup; move_branches( @@ -410,6 +425,11 @@ pub fn split( )?); } + if reset_index { + let mut index = repo.get_index()?; + index.update_from_tree(&remainder_tree)?; + } + let mut builder = RebasePlanBuilder::new(&dag, permissions); let children = dag.query_children(CommitSet::from(target_oid))?; for child in dag.commit_set_to_vec(&children)? { diff --git a/git-branchless/tests/test_split.rs b/git-branchless/tests/test_split.rs index fb612eefe..f0058b157 100644 --- a/git-branchless/tests/test_split.rs +++ b/git-branchless/tests/test_split.rs @@ -502,6 +502,242 @@ fn test_split_detach() -> eyre::Result<()> { Ok(()) } +#[test] +fn test_split_discard() -> eyre::Result<()> { + let git = make_git()?; + git.init_repo()?; + git.detach_head()?; + + git.write_file_txt("test1", "contents1")?; + git.write_file_txt("test2", "contents2")?; + git.write_file_txt("test3", "contents3")?; + git.run(&["add", "."])?; + git.run(&["commit", "-m", "first commit"])?; + + git.write_file_txt("test3", "updated contents3")?; + git.write_file_txt("test4", "contents4")?; + git.write_file_txt("test5", "contents5")?; + git.run(&["add", "."])?; + git.run(&["commit", "-m", "second commit"])?; + + { + let (stdout, _stderr) = git.branchless("smartlog", &[])?; + insta::assert_snapshot!(stdout, @r###" + O f777ecc (master) create initial.txt + | + o e48cdc5 first commit + | + @ 8c3edf7 second commit + "###); + + let (stdout, _stderr) = git.run(&["show", "--pretty=format:", "--stat", "HEAD~"])?; + insta::assert_snapshot!(&stdout, @" + test1.txt | 1 + + test2.txt | 1 + + test3.txt | 1 + + 3 files changed, 3 insertions(+) + "); + + let (stdout, _stderr) = git.run(&["show", "--pretty=format:", "--stat", "HEAD"])?; + insta::assert_snapshot!(&stdout, @" + test3.txt | 2 +- + test4.txt | 1 + + test5.txt | 1 + + 3 files changed, 3 insertions(+), 1 deletion(-) + "); + } + + { + let (stdout, _stderr) = git.branchless("split", &["HEAD~", "test2.txt", "--discard"])?; + insta::assert_snapshot!(&stdout, @r###" + Attempting rebase in-memory... + [1/1] Committed as: 6e23d3d second commit + branchless: processing 1 rewritten commit + branchless: running command: checkout 6e23d3dfe1baeb366ebc31a61c32a19ca6a4ab63 + In-memory rebase succeeded. + O f777ecc (master) create initial.txt + | + o 2932db7 first commit + | + @ 6e23d3d second commit + "###); + + let (stdout, _stderr) = git.run(&["show", "--pretty=format:", "--stat", "HEAD~"])?; + insta::assert_snapshot!(&stdout, @" + test1.txt | 1 + + test3.txt | 1 + + 2 files changed, 2 insertions(+) + "); + + let (stdout, _stderr) = git.run(&["ls-files"])?; + insta::assert_snapshot!(&stdout, @" + initial.txt + test1.txt + test3.txt + test4.txt + test5.txt + "); + } + + { + let (stdout, _stderr) = + git.branchless("split", &["HEAD", "test3.txt", "test4.txt", "--discard"])?; + insta::assert_snapshot!(&stdout, @r###" + branchless: running command: checkout 6128a569e64c77d8a847293b81ae8c96357b751c + Nothing to restack. + O f777ecc (master) create initial.txt + | + o 2932db7 first commit + | + @ 6128a56 second commit + "###); + + let (stdout, _stderr) = git.run(&["show", "--pretty=format:", "--stat", "HEAD"])?; + insta::assert_snapshot!(&stdout, @" + test5.txt | 1 + + 1 file changed, 1 insertion(+) + "); + + let (stdout, _stderr) = git.run(&["ls-files"])?; + insta::assert_snapshot!(&stdout, @" + initial.txt + test1.txt + test3.txt + test5.txt + "); + + let (stdout, _stderr) = git.run(&["show", ":test3.txt"])?; + insta::assert_snapshot!(&stdout, @" + contents3 + "); + } + + Ok(()) +} + +#[test] +fn test_split_discard_bug_checked_out_branch() -> eyre::Result<()> { + let git = make_git()?; + git.init_repo()?; + git.detach_head()?; + + git.write_file_txt("test1", "contents1")?; + git.write_file_txt("test2", "contents2")?; + git.write_file_txt("test3", "contents3")?; + git.run(&["add", "."])?; + git.run(&["commit", "-m", "first commit"])?; + + git.write_file_txt("test3", "updated contents3")?; + git.write_file_txt("test4", "contents4")?; + git.write_file_txt("test5", "contents5")?; + git.run(&["add", "."])?; + git.run(&["commit", "-m", "second commit"])?; + git.run(&["switch", "--create", "my-branch"])?; + + { + // initial state: + // HEAD~ contains new test1-3 + // HEAD contains update test3 and new test4&5 + let (stdout, _stderr) = git.branchless("smartlog", &[])?; + insta::assert_snapshot!(stdout, @r###" + O f777ecc (master) create initial.txt + | + o e48cdc5 first commit + | + @ 8c3edf7 (> my-branch) second commit + "###); + + let (stdout, _stderr) = git.run(&["show", "--pretty=format:", "--stat", "HEAD~"])?; + insta::assert_snapshot!(&stdout, @" + test1.txt | 1 + + test2.txt | 1 + + test3.txt | 1 + + 3 files changed, 3 insertions(+) + "); + + let (stdout, _stderr) = git.run(&["show", "--pretty=format:", "--stat", "HEAD"])?; + insta::assert_snapshot!(&stdout, @" + test3.txt | 2 +- + test4.txt | 1 + + test5.txt | 1 + + 3 files changed, 3 insertions(+), 1 deletion(-) + "); + } + + { + // discard test2 from HEAD~: should be removed from commit and disk + + let (stdout, _stderr) = git.branchless("split", &["HEAD~", "test2.txt", "--discard"])?; + insta::assert_snapshot!(&stdout, @r###" + Attempting rebase in-memory... + [1/1] Committed as: 6e23d3d second commit + branchless: processing 1 update: branch my-branch + branchless: processing 1 rewritten commit + branchless: running command: checkout my-branch + In-memory rebase succeeded. + O f777ecc (master) create initial.txt + | + o 2932db7 first commit + | + @ 6e23d3d (> my-branch) second commit + "###); + + let (stdout, _stderr) = git.run(&["show", "--pretty=format:", "--stat", "HEAD~"])?; + insta::assert_snapshot!(&stdout, @" + test1.txt | 1 + + test3.txt | 1 + + 2 files changed, 2 insertions(+) + "); + + let (stdout, _stderr) = git.run(&["ls-files"])?; + insta::assert_snapshot!(&stdout, @" + initial.txt + test1.txt + test3.txt + test4.txt + test5.txt + "); + } + + { + // discard test3 and test4 from HEAD: both should be removed from commit + // but test3 should still exist on disk, with contents from HEAD~ + + let (stdout, _stderr) = + git.branchless("split", &["HEAD", "test3.txt", "test4.txt", "--discard"])?; + insta::assert_snapshot!(&stdout, @r###" + branchless: processing 1 update: branch my-branch + Nothing to restack. + O f777ecc (master) create initial.txt + | + o 2932db7 first commit + | + @ 6128a56 (> my-branch) second commit + "###); + + let (stdout, _stderr) = git.run(&["show", "--pretty=format:", "--stat", "HEAD"])?; + insta::assert_snapshot!(&stdout, @" + test5.txt | 1 + + 1 file changed, 1 insertion(+) + "); + + let (stdout, _stderr) = git.run(&["ls-files"])?; + insta::assert_snapshot!(&stdout, @" + initial.txt + test1.txt + test3.txt + test5.txt + "); + + let (stdout, _stderr) = git.run(&["show", ":test3.txt"])?; + insta::assert_snapshot!(&stdout, @" + contents3 + ") + } + + Ok(()) +} + #[test] fn test_split_undo_works() -> eyre::Result<()> { let git = make_git()?; From 3f83e56b9c01e04e72fe54fa816865a0bd8194f5 Mon Sep 17 00:00:00 2001 From: Clayton Carter Date: Sun, 7 Sep 2025 08:10:38 -0500 Subject: [PATCH 135/146] feat(split): add --before flag to insert extracted changes before split commit --- git-branchless-opts/src/lib.rs | 4 + git-branchless/src/commands/mod.rs | 15 +- git-branchless/src/commands/split.rs | 144 +++++++++-- git-branchless/tests/test_split.rs | 352 +++++++++++++++++++++++++++ 4 files changed, 484 insertions(+), 31 deletions(-) diff --git a/git-branchless-opts/src/lib.rs b/git-branchless-opts/src/lib.rs index dc34b0a7a..e5a43f83a 100644 --- a/git-branchless-opts/src/lib.rs +++ b/git-branchless-opts/src/lib.rs @@ -662,6 +662,10 @@ pub enum Command { #[clap(value_parser, required = true)] files: Vec, + /// Insert the extracted commit before (as a parent of) the split commit. + #[clap(action, short = 'b', long)] + before: bool, + /// Restack any descendents onto the split commit, not the extracted commit. #[clap(action, short = 'd', long)] detach: bool, diff --git a/git-branchless/src/commands/mod.rs b/git-branchless/src/commands/mod.rs index 0ff55db63..d1fb585e1 100644 --- a/git-branchless/src/commands/mod.rs +++ b/git-branchless/src/commands/mod.rs @@ -181,6 +181,7 @@ fn command_main(ctx: CommandContext, opts: Opts) -> EyreExitOr<()> { }, Command::Split { + before, detach, discard, files, @@ -188,11 +189,15 @@ fn command_main(ctx: CommandContext, opts: Opts) -> EyreExitOr<()> { revset, move_options, } => { - let split_mode = match (detach, discard) { - (true, false) => split::SplitMode::DetachAfter, - (false, true) => split::SplitMode::Discard, - (false, false) => split::SplitMode::InsertAfter, - (true, true) => { + let split_mode = match (before, detach, discard) { + (false, true, false) => split::SplitMode::DetachAfter, + (false, false, true) => split::SplitMode::Discard, + (false, false, false) => split::SplitMode::InsertAfter, + (true, false, false) => split::SplitMode::InsertBefore, + (true, true, false) + | (true, false, true) + | (false, true, true) + | (true, true, true) => { unreachable!("clap should prevent this") } }; diff --git a/git-branchless/src/commands/split.rs b/git-branchless/src/commands/split.rs index ff7dc0a32..aff6045a2 100644 --- a/git-branchless/src/commands/split.rs +++ b/git-branchless/src/commands/split.rs @@ -40,6 +40,7 @@ pub enum SplitMode { DetachAfter, Discard, InsertAfter, + InsertBefore, } /// Split a commit and restack its descendants. @@ -123,6 +124,26 @@ pub fn split( } }; + // + // a-t-b + // + // a-r-x-b (default) + // a-x-r-b (before) + // a-r-b (detach) + // \-x + // a-r-b (discard) + // + // default: x == t tree, x is t with changes removed + // before: r == t tree, e is a with changes added + // detach: (same as default, different rebase) + // discard: (same as default, w/o any rebase) + // + // below: + // a => parent + // t => target + // r => remainder + // x => extracted + let target_commit = repo.find_commit_or_fail(target_oid)?; let target_tree = target_commit.get_tree()?; let parent_commits = target_commit.get_parents(); @@ -135,11 +156,20 @@ pub fn split( (only_parent.get_tree()?, target_commit.get_tree()?) } + // split the commit by adding the changed to a copy of the parent tree, + // then rebasing the orignal target onto the extracted commit + (SplitMode::InsertBefore, [only_parent]) => { + (only_parent.get_tree()?, only_parent.get_tree()?) + } + // no parent: use an empty tree for comparison (SplitMode::InsertAfter, []) | (SplitMode::Discard, []) | (SplitMode::DetachAfter, []) => { (make_empty_tree(&repo)?, target_commit.get_tree()?) } + // no parent: add extracted changes to an empty tree + (SplitMode::InsertBefore, []) => (make_empty_tree(&repo)?, make_empty_tree(&repo)?), + (_, [..]) => { writeln!( effects.get_error_stream(), @@ -220,6 +250,15 @@ pub fn split( let target_entry = target_tree.get_path(path)?; let temp_tree_oid = match (parent_entry, target_entry, &split_mode) { + // added or modified & InsertBefore => add to extracted commit + (None, Some(commit_entry), SplitMode::InsertBefore) + | (Some(_), Some(commit_entry), SplitMode::InsertBefore) => { + remainder_tree.add_or_replace(&repo, path, &commit_entry)? + } + + // removed & InsertBefore => remove from remainder commit + (Some(_), None, SplitMode::InsertBefore) => remainder_tree.remove(&repo, path)?, + // added => remove from remainder commit (None, Some(_), SplitMode::InsertAfter) | (None, Some(_), SplitMode::DetachAfter) @@ -251,7 +290,11 @@ pub fn split( .expect("should have been found"); } let message = { - let (old_tree, new_tree) = (&remainder_tree, &target_tree); + let (old_tree, new_tree) = if let SplitMode::InsertBefore = &split_mode { + (&parent_tree, &remainder_tree) + } else { + (&remainder_tree, &target_tree) + }; let diff = repo.get_diff_between_trees( effects, Some(old_tree), @@ -262,8 +305,25 @@ pub fn split( summarize_diff_for_temporary_commit(&diff)? }; - let remainder_commit_oid = - target_commit.amend_commit(None, None, None, None, Some(&remainder_tree))?; + // before => split commit is created on parent as "extracted", target is + // rebased onto split + // after => target is amended as "split", split is cherry picked onto split + // as "extracted" + + // FIXME terminology is wrong here: "remainder" is correct for `After` mode, + // but this is actually the "extracted" commit for `InsertBefore` mode + let remainder_commit_oid = if let SplitMode::InsertBefore = split_mode { + repo.create_commit( + None, + &target_commit.get_author(), + &target_commit.get_committer(), + format!("temp(split): {message}").as_str(), + &remainder_tree, + parent_commits.iter().collect(), + )? + } else { + target_commit.amend_commit(None, None, None, None, Some(&remainder_tree))? + }; let remainder_commit = repo.find_commit_or_fail(remainder_commit_oid)?; if remainder_commit.is_empty() { @@ -282,8 +342,11 @@ pub fn split( new_commit_oid: MaybeZeroOid::NonZero(remainder_commit_oid), }])?; + // FIXME terminology is also wrong here: "extracted" is correct for `After` + // and `Discard` modes, but the extracted commit is not actually None for + // `InsertBefore`; it's just handled in a different way let extracted_commit_oid = match split_mode { - SplitMode::Discard => None, + SplitMode::InsertBefore | SplitMode::Discard => None, SplitMode::InsertAfter | SplitMode::DetachAfter => { let extracted_tree = repo.cherry_pick_fast( &target_commit, @@ -298,7 +361,11 @@ pub fn split( &target_commit.get_committer(), format!("temp(split): {message}").as_str(), &extracted_tree, - vec![&remainder_commit], + if let SplitMode::InsertBefore = &split_mode { + parent_commits.iter().collect() + } else { + vec![&remainder_commit] + }, )?; // see git-branchless/src/commands/amend.rs:172 @@ -358,31 +425,57 @@ pub fn split( struct CleanUp { checkout_target: Option, rewritten_oids: Vec<(NonZeroOid, MaybeZeroOid)>, + rebase_force_detach: bool, reset_index: bool, } let cleanup = match (target_state, &split_mode, extracted_commit_oid) { - // branch @ split commit checked out: extend branch to include extracted - // commit; branch will stay checked out w/o any explicit checkout + // branch @ target commit checked out: extend branch to include + // extracted commit; branch will stay checked out w/o any explicit + // checkout (TargetState::CurrentBranch, SplitMode::InsertAfter, Some(extracted_commit_oid)) => { CleanUp { checkout_target: None, rewritten_oids: vec![(target_oid, MaybeZeroOid::NonZero(extracted_commit_oid))], + rebase_force_detach: false, reset_index: false, } } + // same as above, but Discard; don't move branches, but do force reset (TargetState::CurrentBranch, SplitMode::Discard, None) => CleanUp { checkout_target: None, rewritten_oids: vec![(target_oid, MaybeZeroOid::NonZero(remainder_commit_oid))], + rebase_force_detach: false, reset_index: true, }, - // commit to split checked out as detached HEAD, don't extend any - // branches, but explicitly check out the newly split commit - (TargetState::DetachedHead, _, _) => CleanUp { + // same as above, but InsertBefore; do not move branches + (TargetState::CurrentBranch, SplitMode::InsertBefore, _) => CleanUp { + checkout_target: None, + rewritten_oids: vec![], + rebase_force_detach: false, + reset_index: false, + }, + + // target checked out as detached HEAD, don't extend any branches, but + // explicitly check out the newly split commit + ( + TargetState::DetachedHead, + SplitMode::InsertAfter | SplitMode::Discard | SplitMode::DetachAfter, + _, + ) => CleanUp { checkout_target: Some(CheckoutTarget::Oid(remainder_commit_oid)), rewritten_oids: vec![(target_oid, MaybeZeroOid::NonZero(remainder_commit_oid))], + rebase_force_detach: false, + reset_index: false, + }, + + // same as above, but InsertBefore; do not move branches + (TargetState::DetachedHead, SplitMode::InsertBefore, _) => CleanUp { + checkout_target: None, + rewritten_oids: vec![], + rebase_force_detach: true, reset_index: false, }, @@ -390,6 +483,7 @@ pub fn split( (TargetState::CurrentBranch | TargetState::Other, _, _) => CleanUp { checkout_target: None, rewritten_oids: vec![(target_oid, MaybeZeroOid::NonZero(remainder_commit_oid))], + rebase_force_detach: false, reset_index: false, }, }; @@ -397,6 +491,7 @@ pub fn split( let CleanUp { checkout_target, rewritten_oids, + rebase_force_detach, reset_index, } = cleanup; @@ -431,21 +526,18 @@ pub fn split( } let mut builder = RebasePlanBuilder::new(&dag, permissions); - let children = dag.query_children(CommitSet::from(target_oid))?; - for child in dag.commit_set_to_vec(&children)? { - match (&split_mode, extracted_commit_oid) { - (_, None) => builder.move_subtree(child, vec![remainder_commit_oid])?, - (_, Some(extracted_commit_oid)) => { - builder.move_subtree(child, vec![extracted_commit_oid])? - } - } - - match (&split_mode, extracted_commit_oid) { - (_, None) | (SplitMode::DetachAfter, Some(_)) => { - builder.move_subtree(child, vec![remainder_commit_oid])? - } - (_, Some(extracted_commit_oid)) => { - builder.move_subtree(child, vec![extracted_commit_oid])? + if let SplitMode::InsertBefore = &split_mode { + builder.move_subtree(target_oid, vec![remainder_commit_oid])? + } else { + let children = dag.query_children(CommitSet::from(target_oid))?; + for child in dag.commit_set_to_vec(&children)? { + match (&split_mode, extracted_commit_oid) { + (_, None) | (SplitMode::DetachAfter, Some(_)) => { + builder.move_subtree(child, vec![remainder_commit_oid])? + } + (_, Some(extracted_commit_oid)) => { + builder.move_subtree(child, vec![extracted_commit_oid])? + } } } } @@ -466,7 +558,7 @@ pub fn split( resolve_merge_conflicts, check_out_commit_options: CheckOutCommitOptions { additional_args: Default::default(), - force_detach: false, + force_detach: rebase_force_detach, reset: false, render_smartlog: false, }, diff --git a/git-branchless/tests/test_split.rs b/git-branchless/tests/test_split.rs index f0058b157..f4ee4a32e 100644 --- a/git-branchless/tests/test_split.rs +++ b/git-branchless/tests/test_split.rs @@ -738,6 +738,358 @@ fn test_split_discard_bug_checked_out_branch() -> eyre::Result<()> { Ok(()) } +#[test] +fn test_split_insert_before_added_file() -> eyre::Result<()> { + let git = make_git()?; + git.init_repo()?; + git.detach_head()?; + + // new files + git.write_file_txt("test1", "contents1")?; + git.write_file_txt("test2", "contents2")?; + git.write_file_txt("test3", "contents3")?; + git.run(&["add", "."])?; + git.run(&["commit", "-m", "first commit"])?; + + // modified file + git.commit_file("test3", 1)?; + + { + let (stdout, _stderr) = git.branchless("smartlog", &[])?; + insta::assert_snapshot!(stdout, @r###" + O f777ecc (master) create initial.txt + | + o e48cdc5 first commit + | + @ 3d220e0 create test3.txt + "###); + + let (stdout, _stderr) = git.run(&["show", "--pretty=format:", "--stat", "HEAD~"])?; + insta::assert_snapshot!(&stdout, @" + test1.txt | 1 + + test2.txt | 1 + + test3.txt | 1 + + 3 files changed, 3 insertions(+) + "); + + let (stdout, _stderr) = git.run(&["show", "--pretty=format:", "--stat", "HEAD"])?; + insta::assert_snapshot!(&stdout, @" + test3.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + "); + } + + { + let (stdout, _stderr) = git.branchless("split", &["HEAD~", "test2.txt", "--before"])?; + insta::assert_snapshot!(&stdout, @r###" + Attempting rebase in-memory... + [1/2] Committed as: 7014c04 first commit + [2/2] Committed as: 22bd240 create test3.txt + branchless: processing 2 rewritten commits + branchless: running command: checkout 22bd2405a4660938b88615fb2b1283bfa2a52f8e + In-memory rebase succeeded. + O f777ecc (master) create initial.txt + | + o d02e8c5 temp(split): test2.txt (+1) + | + o 7014c04 first commit + | + @ 22bd240 create test3.txt + "###); + + let (stdout, _stderr) = git.run(&["show", "--pretty=format:", "--stat", "HEAD~2"])?; + insta::assert_snapshot!(&stdout, @" + test2.txt | 1 + + 1 file changed, 1 insertion(+) + "); + + let (stdout, _stderr) = git.run(&["show", "--pretty=format:", "--stat", "HEAD~"])?; + insta::assert_snapshot!(&stdout, @" + test1.txt | 1 + + test3.txt | 1 + + 2 files changed, 2 insertions(+) + "); + } + + Ok(()) +} + +#[test] +fn test_split_insert_before_modified_file() -> eyre::Result<()> { + let git = make_git()?; + git.init_repo()?; + git.detach_head()?; + + // new files + git.write_file_txt("test1", "contents1")?; + git.write_file_txt("test2", "contents2")?; + git.write_file_txt("test3", "contents3")?; + git.run(&["add", "."])?; + git.run(&["commit", "-m", "first commit"])?; + + // modified files + git.write_file_txt("test2", "contents2 again")?; + git.write_file_txt("test3", "contents3 again")?; + git.run(&["add", "."])?; + git.run(&["commit", "-m", "second commit"])?; + + { + let (stdout, _stderr) = git.branchless("smartlog", &[])?; + insta::assert_snapshot!(stdout, @r###" + O f777ecc (master) create initial.txt + | + o e48cdc5 first commit + | + @ 7249f22 second commit + "###); + + let (stdout, _stderr) = git.run(&["show", "--pretty=format:", "--stat", "HEAD~"])?; + insta::assert_snapshot!(&stdout, @" + test1.txt | 1 + + test2.txt | 1 + + test3.txt | 1 + + 3 files changed, 3 insertions(+) + "); + + let (stdout, _stderr) = git.run(&["show", "--pretty=format:", "--stat", "HEAD"])?; + insta::assert_snapshot!(&stdout, @" + test2.txt | 2 +- + test3.txt | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + "); + } + + { + let (stdout, _stderr) = git.branchless("split", &["HEAD", "test2.txt", "--before"])?; + insta::assert_snapshot!(&stdout, @r###" + Attempting rebase in-memory... + [1/1] Committed as: 38fe8b7 second commit + branchless: processing 1 rewritten commit + branchless: running command: checkout 38fe8b76f889772efd0dd5cc1acb6ac02c85f9fb + In-memory rebase succeeded. + O f777ecc (master) create initial.txt + | + o e48cdc5 first commit + | + o 188b0a1 temp(split): test2.txt (+1/-1) + | + @ 38fe8b7 second commit + "###); + + let (stdout, _stderr) = git.run(&["show", "--pretty=format:", "--stat", "HEAD~"])?; + insta::assert_snapshot!(&stdout, @" + test2.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + "); + + let (stdout, _stderr) = git.run(&["show", "--pretty=format:", "--stat", "HEAD"])?; + insta::assert_snapshot!(&stdout, @" + test3.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + "); + } + + Ok(()) +} + +#[test] +fn test_split_insert_before_deleted_file() -> eyre::Result<()> { + let git = make_git()?; + git.init_repo()?; + git.detach_head()?; + + // new files + git.write_file_txt("test1", "contents1")?; + git.write_file_txt("test2", "contents2")?; + git.write_file_txt("test3", "contents3")?; + git.run(&["add", "."])?; + git.run(&["commit", "-m", "first commit"])?; + + // modified files + git.delete_file("test2")?; + git.write_file_txt("test3", "contents3 again")?; + git.run(&["add", "."])?; + git.run(&["commit", "-m", "second commit"])?; + + { + let (stdout, _stderr) = git.branchless("smartlog", &[])?; + insta::assert_snapshot!(stdout, @r###" + O f777ecc (master) create initial.txt + | + o e48cdc5 first commit + | + @ 98ebe2f second commit + "###); + + let (stdout, _stderr) = git.run(&["show", "--pretty=format:", "--stat", "HEAD~"])?; + insta::assert_snapshot!(&stdout, @" + test1.txt | 1 + + test2.txt | 1 + + test3.txt | 1 + + 3 files changed, 3 insertions(+) + "); + + let (stdout, _stderr) = git.run(&["show", "--pretty=format:", "--stat", "HEAD"])?; + insta::assert_snapshot!(&stdout, @" + test2.txt | 1 - + test3.txt | 2 +- + 2 files changed, 1 insertion(+), 2 deletions(-) + "); + } + + { + let (stdout, _stderr) = git.branchless("split", &["HEAD", "test2.txt", "--before"])?; + insta::assert_snapshot!(&stdout, @r###" + Attempting rebase in-memory... + [1/1] Committed as: f8502a2 second commit + branchless: processing 1 rewritten commit + branchless: running command: checkout f8502a26000b8f90597f6861d7f3c0330fdf4351 + In-memory rebase succeeded. + O f777ecc (master) create initial.txt + | + o e48cdc5 first commit + | + o e5b771d temp(split): test2.txt (-1) + | + @ f8502a2 second commit + "###); + + let (stdout, _stderr) = git.run(&["show", "--pretty=format:", "--stat", "HEAD~"])?; + insta::assert_snapshot!(&stdout, @" + test2.txt | 1 - + 1 file changed, 1 deletion(-) + "); + + let (stdout, _stderr) = git.run(&["show", "--pretty=format:", "--stat", "HEAD"])?; + insta::assert_snapshot!(&stdout, @" + test3.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + "); + } + + Ok(()) +} + +#[test] +fn test_split_insert_before_attached_branch() -> eyre::Result<()> { + let git = make_git()?; + git.init_repo()?; + git.detach_head()?; + + git.write_file_txt("test1", "contents1")?; + git.write_file_txt("test2", "contents2")?; + git.run(&["add", "."])?; + git.run(&["commit", "-m", "first commit"])?; + git.run(&["switch", "-c", "branch-name"])?; + + { + let (stdout, _stderr) = git.branchless("smartlog", &[])?; + insta::assert_snapshot!(stdout, @r###" + O f777ecc (master) create initial.txt + | + @ 4d11d02 (> branch-name) first commit + "###); + + let (stdout, _stderr) = git.run(&["show", "--pretty=format:", "--stat", "HEAD"])?; + insta::assert_snapshot!(&stdout, @" + test1.txt | 1 + + test2.txt | 1 + + 2 files changed, 2 insertions(+) + "); + } + + { + let (stdout, _stderr) = git.branchless("split", &["HEAD", "test2.txt", "--before"])?; + insta::assert_snapshot!(&stdout, @r###" + Attempting rebase in-memory... + [1/1] Committed as: c678b65 first commit + branchless: processing 1 update: branch branch-name + branchless: processing 1 rewritten commit + branchless: running command: checkout branch-name + In-memory rebase succeeded. + O f777ecc (master) create initial.txt + | + o d02e8c5 temp(split): test2.txt (+1) + | + @ c678b65 (> branch-name) first commit + "###); + + let (stdout, _stderr) = git.run(&["show", "--pretty=format:", "--stat", "HEAD~"])?; + insta::assert_snapshot!(&stdout, @" + test2.txt | 1 + + 1 file changed, 1 insertion(+) + "); + + let (stdout, _stderr) = git.run(&["show", "--pretty=format:", "--stat", "HEAD"])?; + insta::assert_snapshot!(&stdout, @" + test1.txt | 1 + + 1 file changed, 1 insertion(+) + "); + } + + Ok(()) +} + +#[test] +fn test_split_insert_before_detached_branch() -> eyre::Result<()> { + let git = make_git()?; + git.init_repo()?; + git.detach_head()?; + + git.write_file_txt("test1", "contents1")?; + git.write_file_txt("test2", "contents2")?; + git.run(&["add", "."])?; + git.run(&["commit", "-m", "first commit"])?; + git.run(&["branch", "branch-name"])?; + + { + let (stdout, _stderr) = git.branchless("smartlog", &[])?; + insta::assert_snapshot!(stdout, @r###" + O f777ecc (master) create initial.txt + | + @ 4d11d02 (branch-name) first commit + "###); + + let (stdout, _stderr) = git.run(&["show", "--pretty=format:", "--stat", "HEAD"])?; + insta::assert_snapshot!(&stdout, @" + test1.txt | 1 + + test2.txt | 1 + + 2 files changed, 2 insertions(+) + "); + } + + { + let (stdout, _stderr) = git.branchless("split", &["HEAD", "test2.txt", "--before"])?; + insta::assert_snapshot!(&stdout, @r###" + Attempting rebase in-memory... + [1/1] Committed as: c678b65 first commit + branchless: processing 1 update: branch branch-name + branchless: processing 1 rewritten commit + branchless: running command: checkout c678b6529d8f33a6903e25f70327464bd77f1ca1 + In-memory rebase succeeded. + O f777ecc (master) create initial.txt + | + o d02e8c5 temp(split): test2.txt (+1) + | + @ c678b65 (branch-name) first commit + "###); + + let (stdout, _stderr) = git.run(&["show", "--pretty=format:", "--stat", "HEAD~"])?; + insta::assert_snapshot!(&stdout, @" + test2.txt | 1 + + 1 file changed, 1 insertion(+) + "); + + let (stdout, _stderr) = git.run(&["show", "--pretty=format:", "--stat", "HEAD"])?; + insta::assert_snapshot!(&stdout, @" + test1.txt | 1 + + 1 file changed, 1 insertion(+) + "); + } + + Ok(()) +} + #[test] fn test_split_undo_works() -> eyre::Result<()> { let git = make_git()?; From 1eb0f7e8e6f1c17b8c92449a506df271b97e47a1 Mon Sep 17 00:00:00 2001 From: Nikolaus Wittenstein Date: Wed, 6 Mar 2024 16:56:35 -0800 Subject: [PATCH 136/146] Use arcs for the smartlog --- git-branchless-lib/src/core/formatting.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/git-branchless-lib/src/core/formatting.rs b/git-branchless-lib/src/core/formatting.rs index a228a0975..ac8a1f0e0 100644 --- a/git-branchless-lib/src/core/formatting.rs +++ b/git-branchless-lib/src/core/formatting.rs @@ -193,11 +193,11 @@ impl Glyphs { pub fn pretty() -> Self { Glyphs { should_write_ansi_escape_codes: true, - line: "┃", - line_with_offshoot: "┣", + line: "│", + line_with_offshoot: "├", vertical_ellipsis: "⋮", - split: "━┓", - merge: "━┛", + split: "─╮", + merge: "─╯", commit_visible: "◯", commit_visible_head: "●", commit_obsolete: "✕", From 260d5a6c7dd9ab151557b4ac8e41e89718e69256 Mon Sep 17 00:00:00 2001 From: Clayton Carter Date: Thu, 11 Sep 2025 21:37:49 -0400 Subject: [PATCH 137/146] refactor(diff): clean up summarize_diff_for_temporary_commit() --- git-branchless-lib/src/git/diff.rs | 57 ++++++++++++------------------ 1 file changed, 23 insertions(+), 34 deletions(-) diff --git a/git-branchless-lib/src/git/diff.rs b/git-branchless-lib/src/git/diff.rs index 612ab6dd0..70cd45119 100644 --- a/git-branchless-lib/src/git/diff.rs +++ b/git-branchless-lib/src/git/diff.rs @@ -39,52 +39,41 @@ pub fn summarize_diff_for_temporary_commit(diff: &Diff) -> eyre::Result // this returns something like `1 file changed, 1 deletion(-)` // diff.short_stats() - // this returns something like `test2.txt (-1)` or `2 files (+1/-2)` + // this builds something like `test2.txt (-1)` or `2 files (+1/-2)` let stats = diff.inner.stats()?; - let prefix = if stats.files_changed() == 1 { - let mut prefix = None; - // returning false terminates iteration, but that also returns Err, so - // catch and ignore it + let filename_or_count = if stats.files_changed() == 1 { + let mut filename = None; + + // returning false in the closure terminates iteration, but that also + // returns an Err, so catch and ignore it let _ = diff.inner.foreach( &mut |delta: git2::DiffDelta, _| { - if let Some(path) = delta.old_file().path() { - // prefix = Some(format!("{}", path.file_name().unwrap().to_string_lossy())); - prefix = Some(format!("{}", path.display())); - } else if let Some(path) = delta.new_file().path() { - prefix = Some(format!("{}", path.display())); - } - + let relevant_path = delta + .old_file() + .path() + .or(delta.new_file().path()) + .unwrap_or_else(|| unreachable!("diff should have contained at least 1 file")); + filename = Some(format!("{}", relevant_path.display())); false }, None, None, None, ); - prefix + + filename.unwrap_or_else(|| unreachable!("file name should have been initialized")) } else { - Some(format!("{} files", stats.files_changed())) + format!("{} files", stats.files_changed()) }; - let i = stats.insertions(); - let d = stats.deletions(); - Ok(format!( - "{prefix} ({i}{slash}{d})", - prefix = prefix.unwrap(), - i = if i > 0 { - format!("+{i}") - } else { - String::new() - }, - slash = if i > 0 && d > 0 { "/" } else { "" }, - d = if d > 0 { - format!("-{d}") - } else { - String::new() - } - )) - // stats.files_changed() - // stats.insertions() - // stats.deletions() + let ins_del = match (stats.insertions(), stats.deletions()) { + (0, 0) => unreachable!("empty diff"), + (i, 0) => format!("+{i}"), + (0, d) => format!("-{d}"), + (i, d) => format!("+{i}/-{d}"), + }; + + Ok(format!("{filename_or_count} ({ins_del})")) } /// Calculate the diff between the index and the working copy. From e18b9e6e279f65f2fe59d389b402c3cc541d6862 Mon Sep 17 00:00:00 2001 From: Clayton Carter Date: Thu, 11 Sep 2025 21:37:49 -0400 Subject: [PATCH 138/146] feat(record)!: use default commit message for --stash But only when no message is explicitly supplied. This is a breaking change. Previously, the user would be prompted for a message if none was supplied. --- git-branchless-record/src/lib.rs | 51 ++++++++++++++++++++-- git-branchless-record/tests/test_record.rs | 36 +++++++++++++++ 2 files changed, 84 insertions(+), 3 deletions(-) diff --git a/git-branchless-record/src/lib.rs b/git-branchless-record/src/lib.rs index 8c560cd35..17911beee 100644 --- a/git-branchless-record/src/lib.rs +++ b/git-branchless-record/src/lib.rs @@ -31,9 +31,9 @@ use lib::core::rewrite::{ RepoResource, }; use lib::git::{ - process_diff_for_record, update_index, CategorizedReferenceName, FileMode, GitRunInfo, - MaybeZeroOid, NonZeroOid, Repo, ResolvedReferenceInfo, Stage, UpdateIndexCommand, - WorkingCopyChangesType, WorkingCopySnapshot, + process_diff_for_record, summarize_diff_for_temporary_commit, update_index, + CategorizedReferenceName, FileMode, GitRunInfo, MaybeZeroOid, NonZeroOid, Repo, + ResolvedReferenceInfo, Stage, UpdateIndexCommand, WorkingCopyChangesType, WorkingCopySnapshot, }; use lib::try_exit_code; use lib::util::{ExitCode, EyreExitOr}; @@ -158,6 +158,12 @@ fn record( )?); } } else { + let messages = if messages.is_empty() && stash { + get_default_stash_message(&repo, effects, &snapshot, &working_copy_changes_type) + .map(|message| vec![message])? + } else { + messages + }; let args = { let mut args = vec!["commit"]; args.extend(messages.iter().flat_map(|message| ["--message", message])); @@ -568,3 +574,42 @@ To proceed anyways, run: git move -f -s 'siblings(.)", ExecuteRebasePlanResult::Failed { exit_code } => Ok(Err(exit_code)), } } + +#[instrument] +fn get_default_stash_message( + repo: &Repo, + effects: &Effects, + snapshot: &WorkingCopySnapshot, + working_copy_changes_type: &WorkingCopyChangesType, +) -> eyre::Result { + let (old_tree, new_tree) = match working_copy_changes_type { + WorkingCopyChangesType::Unstaged => { + let old_tree = snapshot.commit_stage0.get_tree()?; + let new_tree = snapshot.commit_unstaged.get_tree()?; + (Some(old_tree), new_tree) + } + WorkingCopyChangesType::Staged => { + let old_tree = match snapshot.head_commit { + None => None, + Some(ref commit) => Some(commit.get_tree()?), + }; + let new_tree = snapshot.commit_stage0.get_tree()?; + (old_tree, new_tree) + } + WorkingCopyChangesType::None | WorkingCopyChangesType::Conflicts => { + unreachable!("already handled via early exit") + } + }; + + let diff = repo.get_diff_between_trees( + effects, + old_tree.as_ref(), + &new_tree, + 0, // we don't care about the context here + )?; + + Ok(format!( + "stash: {}", + summarize_diff_for_temporary_commit(&diff)? + )) +} diff --git a/git-branchless-record/tests/test_record.rs b/git-branchless-record/tests/test_record.rs index bfb73c00c..9cfbf6bd8 100644 --- a/git-branchless-record/tests/test_record.rs +++ b/git-branchless-record/tests/test_record.rs @@ -342,6 +342,42 @@ fn test_record_stash() -> eyre::Result<()> { Ok(()) } +#[test] +fn test_record_stash_default_message() -> eyre::Result<()> { + let git = make_git()?; + + if !git.supports_reference_transactions()? { + return Ok(()); + } + git.init_repo()?; + + git.commit_file("test1", 1)?; + + { + git.write_file_txt("test1", "new test1 contents\n")?; + + let (stdout, _stderr) = git.branchless("record", &["--stash"])?; + insta::assert_snapshot!(stdout, @r###" + [master fd2ffa4] stash: test1.txt (+1/-1) + 1 file changed, 1 insertion(+), 1 deletion(-) + branchless: running command: branch -f master 62fc20d2a290daea0d52bdc2ed2ad4be6491010e + branchless: running command: checkout master + "###); + } + + { + let stdout = git.smartlog()?; + insta::assert_snapshot!(stdout, @r###" + : + @ 62fc20d (> master) create test1.txt + | + o fd2ffa4 stash: test1.txt (+1/-1) + "###); + } + + Ok(()) +} + #[test] fn test_record_create_branch() -> eyre::Result<()> { let git = make_git()?; From 7d7221977838c1a94c20d71b1f634180712d3c6c Mon Sep 17 00:00:00 2001 From: Duc Nghiem-Xuan Date: Thu, 7 Mar 2024 17:01:55 +0900 Subject: [PATCH 139/146] =?UTF-8?q?feat(smartlog):=20switch=20from=20?= =?UTF-8?q?=E2=97=AF=20to=20=E2=97=8B=20for=20visible=20commit=20nodes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit U+25EF is unicode LARGE CIRCLE thus would be rendered visibly larger than other node. I believe U+25CB WHITE CIRCLE should be used instead. --- git-branchless-lib/src/core/formatting.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/git-branchless-lib/src/core/formatting.rs b/git-branchless-lib/src/core/formatting.rs index ac8a1f0e0..9ca31fe8f 100644 --- a/git-branchless-lib/src/core/formatting.rs +++ b/git-branchless-lib/src/core/formatting.rs @@ -198,7 +198,7 @@ impl Glyphs { vertical_ellipsis: "⋮", split: "─╮", merge: "─╯", - commit_visible: "◯", + commit_visible: "○", commit_visible_head: "●", commit_obsolete: "✕", commit_obsolete_head: "⦻", From fd9d2d33cc0c754c82da1f713305e61838b24080 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Sep 2025 18:17:00 +0000 Subject: [PATCH 140/146] build: bump cc from 1.2.34 to 1.2.37 Bumps [cc](https://github.com/rust-lang/cc-rs) from 1.2.34 to 1.2.37. - [Release notes](https://github.com/rust-lang/cc-rs/releases) - [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md) - [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.34...cc-v1.2.37) --- updated-dependencies: - dependency-name: cc dependency-version: 1.2.37 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 11 +++++++++-- Cargo.toml | 2 +- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index cc6b57a07..3a267e990 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -347,10 +347,11 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.34" +version = "1.2.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42bc4aea80032b7bf409b0bc7ccad88853858911b7713a8062fdc0623867bedc" +checksum = "65193589c6404eb80b450d618eaf9a2cafaaafd57ecce47370519ef674a7bd44" dependencies = [ + "find-msvc-tools", "jobserver", "libc", "shlex", @@ -1158,6 +1159,12 @@ dependencies = [ "winapi", ] +[[package]] +name = "find-msvc-tools" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fd99930f64d146689264c637b5af2f0233a933bef0d8570e2526bf9e083192d" + [[package]] name = "fixedbitset" version = "0.4.2" diff --git a/Cargo.toml b/Cargo.toml index ffad221c2..a434bf050 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -104,7 +104,7 @@ vt100 = "0.15.2" # dev-dependencies assert_cmd = "2.0.17" -cc = "1.2.34" +cc = "1.2.37" criterion = { version = "0.5.1", features = ["html_reports"] } insta = "1.43.1" maplit = "1.0.2" From a6bc0204936142d187ca2dab8e77cb7872e3356f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Sep 2025 18:28:58 +0000 Subject: [PATCH 141/146] build: bump anyhow from 1.0.98 to 1.0.99 Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.98 to 1.0.99. - [Release notes](https://github.com/dtolnay/anyhow/releases) - [Commits](https://github.com/dtolnay/anyhow/compare/1.0.98...1.0.99) --- updated-dependencies: - dependency-name: anyhow dependency-version: 1.0.99 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3a267e990..419f332f1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -137,9 +137,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.98" +version = "1.0.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" +checksum = "b0674a1ddeecb70197781e945de4b3b8ffb61fa939a5597bcf48503737663100" [[package]] name = "arbitrary" diff --git a/Cargo.toml b/Cargo.toml index a434bf050..4ca531739 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -32,7 +32,7 @@ push = false tag = false [workspace.dependencies] -anyhow = "1.0.98" +anyhow = "1.0.99" async-trait = "0.1.89" bstr = "1.12.0" bugreport = "0.5.1" From 8238d0bc0b257e25d7dfb07c518cff60a280c66c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Sep 2025 18:27:58 +0000 Subject: [PATCH 142/146] build: bump glob from 0.3.2 to 0.3.3 Bumps [glob](https://github.com/rust-lang/glob) from 0.3.2 to 0.3.3. - [Release notes](https://github.com/rust-lang/glob/releases) - [Changelog](https://github.com/rust-lang/glob/blob/master/CHANGELOG.md) - [Commits](https://github.com/rust-lang/glob/compare/v0.3.2...v0.3.3) --- updated-dependencies: - dependency-name: glob dependency-version: 0.3.3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 419f332f1..a71c47baf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1749,9 +1749,9 @@ dependencies = [ [[package]] name = "glob" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" +checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "half" diff --git a/Cargo.toml b/Cargo.toml index 4ca531739..0b8d99dd0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -70,7 +70,7 @@ git-branchless-submit = { version = "0.10.0", path = "git-branchless-submit" } git-branchless-test = { version = "0.10.0", path = "git-branchless-test" } git-branchless-undo = { version = "0.10.0", path = "git-branchless-undo" } git2 = { version = "0.20.0", default-features = false } -glob = "0.3.2" +glob = "0.3.3" indexmap = "2.11.0" indicatif = { version = "0.17.11", features = ["improved_unicode"] } itertools = "0.14.0" From d707b11fc3fc1124417bcca3e31248cb4160ba40 Mon Sep 17 00:00:00 2001 From: chf2117 Date: Wed, 17 Sep 2025 18:47:34 -0700 Subject: [PATCH 143/146] fix(hooks): post-rewrite hook does not track intermediate commits from an interactive rebase ((#1088, #1419) * (#1088) post-rewrite hook does not track intermediate commits from a rebase * Remove additions to testing API --------- Co-authored-by: cshinaver Co-authored-by: Caleb Fujimori --- git-branchless-hook/tests/test_hook.rs | 3 -- .../src/core/rewrite/rewrite_hooks.rs | 32 +-------------- git-branchless/tests/test_hooks.rs | 41 +++++++++++++++++++ 3 files changed, 43 insertions(+), 33 deletions(-) diff --git a/git-branchless-hook/tests/test_hook.rs b/git-branchless-hook/tests/test_hook.rs index 379cedb64..41c11c924 100644 --- a/git-branchless-hook/tests/test_hook.rs +++ b/git-branchless-hook/tests/test_hook.rs @@ -105,7 +105,6 @@ fn test_rebase_no_process_new_commits_until_conclusion() -> eyre::Result<()> { insta::assert_snapshot!(stdout, @""); } - git.commit_file("test4", 4)?; { let (stdout, stderr) = git.run(&["rebase", "--continue"])?; insta::assert_snapshot!(stderr, @r###" @@ -133,8 +132,6 @@ fn test_rebase_no_process_new_commits_until_conclusion() -> eyre::Result<()> { O f777ecc (master) create initial.txt |\ | o 047b7ad create test1.txt - | | - | o ecab41f create test4.txt | x 62fc20d (rewritten as 047b7ad7) create test1.txt | diff --git a/git-branchless-lib/src/core/rewrite/rewrite_hooks.rs b/git-branchless-lib/src/core/rewrite/rewrite_hooks.rs index 956693068..6651538ef 100644 --- a/git-branchless-lib/src/core/rewrite/rewrite_hooks.rs +++ b/git-branchless-lib/src/core/rewrite/rewrite_hooks.rs @@ -3,10 +3,9 @@ use std::collections::{HashMap, HashSet}; use std::fmt::Write; -use std::fs::{self, File}; -use std::io::{self, stdin, BufRead, BufReader, Read, Write as WriteIo}; +use std::fs::File; +use std::io::{stdin, BufRead, BufReader, Read, Write as WriteIo}; use std::path::{Path, PathBuf}; -use std::str::FromStr; use std::time::SystemTime; use console::style; @@ -44,20 +43,6 @@ pub fn get_deferred_commits_path(repo: &Repo) -> PathBuf { repo.get_rebase_state_dir_path().join("deferred-commits") } -fn read_deferred_commits(repo: &Repo) -> eyre::Result> { - let deferred_commits_path = get_deferred_commits_path(repo); - let contents = match fs::read_to_string(&deferred_commits_path) { - Ok(contents) => contents, - Err(err) if err.kind() == io::ErrorKind::NotFound => Default::default(), - Err(err) => { - return Err(err) - .with_context(|| format!("Reading deferred commits at {deferred_commits_path:?}")) - } - }; - let commit_oids = contents.lines().map(NonZeroOid::from_str).try_collect()?; - Ok(commit_oids) -} - #[instrument(skip(stream))] fn read_rewritten_list_entries( stream: &mut impl Read, @@ -148,19 +133,6 @@ pub fn hook_post_rewrite( let event_log_db = EventLogDb::new(&conn)?; let event_tx_id = event_log_db.make_transaction_id(now, "hook-post-rewrite")?; - { - let deferred_commit_oids = read_deferred_commits(&repo)?; - let commit_events = deferred_commit_oids - .into_iter() - .map(|commit_oid| Event::CommitEvent { - timestamp, - event_tx_id, - commit_oid, - }) - .collect_vec(); - event_log_db.add_events(commit_events)?; - } - let (rewritten_oids, rewrite_events) = { let rewritten_oids = read_rewritten_list_entries(&mut stdin().lock())?; let events = rewritten_oids diff --git a/git-branchless/tests/test_hooks.rs b/git-branchless/tests/test_hooks.rs index 09b98059f..f142d789a 100644 --- a/git-branchless/tests/test_hooks.rs +++ b/git-branchless/tests/test_hooks.rs @@ -411,5 +411,46 @@ fn test_symbolic_transaction_ref() -> eyre::Result<()> { branchless: processing checkout "###); } + + Ok(()) +} + +#[cfg(unix)] +#[test] +fn test_git_rebase_multiple_fixup_does_not_strand_commits() -> eyre::Result<()> { + let git = make_git()?; + git.init_repo()?; + + git.detach_head()?; + + git.write_file("test1.txt", "bleh")?; + git.run(&["add", "."])?; + git.run(&["commit", "-m", "create test1.txt"])?; + git.write_file("test2.txt", "bleh")?; + git.run(&["add", "."])?; + git.run(&["commit", "-m", "fixup! create test1.txt"])?; + git.write_file("test3.txt", "bleh")?; + git.run(&["add", "."])?; + git.run(&["commit", "-m", "fixup! create test1.txt"])?; + git.write_file("test3.txt", "bleh")?; + + git.run(&[ + "-c", + "sequence.editor=:", + "rebase", + "-i", + "--autosquash", + "master", + ])?; + + { + let stdout = git.smartlog()?; + insta::assert_snapshot!(stdout, @r###" + O f777ecc (master) create initial.txt + | + @ 8777bab create test1.txt + "###); + } + Ok(()) } From 39009421912f96a782de3eea1ddd668d481d0c85 Mon Sep 17 00:00:00 2001 From: Clayton Carter Date: Thu, 11 Sep 2025 22:16:53 -0400 Subject: [PATCH 144/146] feat(move): add --dry-run to support testing in-memory rebases This is useful to finding the exact commit that created a conflict for an out of date stack: ``` TEST_COMMAND='git move -s "current($OLD_COMMIT)" -d $BRANCHLESS_TEST_COMMIT --in-memory --dry-run' git test run \ $MERGE_BASE..main \ --exec "$TEST_COMMAND" --jobs 8 \ --strategy worktree --search binary ``` This was able to search through 372 commits in only 40 iterations, finding the exact commit where the conflict was created. --- .../src/core/rewrite/execute.rs | 22 ++++- git-branchless-lib/tests/test_rewrite_plan.rs | 1 + git-branchless-move/src/lib.rs | 11 +++ git-branchless-opts/src/lib.rs | 4 + git-branchless-record/src/lib.rs | 4 +- git-branchless-reword/src/lib.rs | 4 +- git-branchless-submit/src/phabricator.rs | 5 +- git-branchless-test/src/lib.rs | 6 +- git-branchless/src/commands/amend.rs | 4 +- git-branchless/src/commands/mod.rs | 2 + git-branchless/src/commands/restack.rs | 3 + git-branchless/src/commands/split.rs | 5 +- git-branchless/src/commands/sync.rs | 4 + git-branchless/tests/test_move.rs | 99 +++++++++++++++++++ 14 files changed, 167 insertions(+), 7 deletions(-) diff --git a/git-branchless-lib/src/core/rewrite/execute.rs b/git-branchless-lib/src/core/rewrite/execute.rs index 876a6dd1f..c44783508 100644 --- a/git-branchless-lib/src/core/rewrite/execute.rs +++ b/git-branchless-lib/src/core/rewrite/execute.rs @@ -498,6 +498,7 @@ mod in_memory { preserve_timestamps, force_in_memory: _, force_on_disk: _, + dry_run: _, resolve_merge_conflicts: _, // May be needed once we can resolve merge conflicts in memory. check_out_commit_options: _, // Caller is responsible for checking out to new HEAD. } = options; @@ -909,6 +910,7 @@ mod in_memory { preserve_timestamps: _, force_in_memory: _, force_on_disk: _, + dry_run: _, resolve_merge_conflicts: _, check_out_commit_options, } = options; @@ -994,6 +996,7 @@ mod on_disk { preserve_timestamps, force_in_memory: _, force_on_disk: _, + dry_run: _, resolve_merge_conflicts: _, check_out_commit_options: _, // Checkout happens after rebase has concluded. } = options; @@ -1170,6 +1173,7 @@ mod on_disk { preserve_timestamps: _, force_in_memory: _, force_on_disk: _, + dry_run: _, resolve_merge_conflicts: _, check_out_commit_options: _, // Checkout happens after rebase has concluded. } = options; @@ -1210,6 +1214,10 @@ pub struct ExecuteRebasePlanOptions { /// Force an on-disk rebase (as opposed to an in-memory rebase). pub force_on_disk: bool, + /// When attempting an in-memory rebase, only report success or failure, + /// discarding the resulting changes. + pub dry_run: bool, + /// Whether or not an attempt should be made to resolve merge conflicts, /// rather than failing-fast. pub resolve_merge_conflicts: bool, @@ -1228,7 +1236,10 @@ pub enum ExecuteRebasePlanResult { rewritten_oids: Option>, }, - /// The rebase operation encounter a failure to merge, and it was not + /// The rebase operation is viable, but was not executed to completion. + WouldSucceed, + + /// The rebase operation encountered a failure to merge, and it was not /// requested to try to resolve it. DeclinedToMerge { /// Information about the merge failure that occurred. @@ -1259,6 +1270,7 @@ pub fn execute_rebase_plan( preserve_timestamps: _, force_in_memory, force_on_disk, + dry_run, resolve_merge_conflicts, check_out_commit_options: _, } = options; @@ -1277,6 +1289,14 @@ pub fn execute_rebase_plan( rewritten_oids, new_head_oid, } => { + if *dry_run { + writeln!( + effects.get_output_stream(), + "In-memory rebase would succeed." + )?; + return Ok(ExecuteRebasePlanResult::WouldSucceed); + } + // Ignore the return code, as it probably indicates that the // checkout failed (which might happen if the user has changes // which don't merge cleanly). The user can resolve that diff --git a/git-branchless-lib/tests/test_rewrite_plan.rs b/git-branchless-lib/tests/test_rewrite_plan.rs index 200349087..713f4f842 100644 --- a/git-branchless-lib/tests/test_rewrite_plan.rs +++ b/git-branchless-lib/tests/test_rewrite_plan.rs @@ -759,6 +759,7 @@ fn create_and_execute_plan( preserve_timestamps: false, force_in_memory: false, force_on_disk: false, + dry_run: false, resolve_merge_conflicts: true, check_out_commit_options: CheckOutCommitOptions { additional_args: Default::default(), diff --git a/git-branchless-move/src/lib.rs b/git-branchless-move/src/lib.rs index eb589c251..62253b15e 100644 --- a/git-branchless-move/src/lib.rs +++ b/git-branchless-move/src/lib.rs @@ -74,6 +74,7 @@ pub fn r#move( move_options: &MoveOptions, fixup: bool, insert: bool, + dry_run: bool, ) -> EyreExitOr<()> { let sources_provided = !sources.is_empty(); let bases_provided = !bases.is_empty(); @@ -484,6 +485,7 @@ pub fn r#move( preserve_timestamps: get_restack_preserve_timestamps(&repo)?, force_in_memory, force_on_disk, + dry_run, resolve_merge_conflicts, check_out_commit_options: Default::default(), }; @@ -505,6 +507,15 @@ pub fn r#move( match result { ExecuteRebasePlanResult::Succeeded { rewritten_oids: _ } => Ok(Ok(())), + ExecuteRebasePlanResult::WouldSucceed if dry_run => { + writeln!(effects.get_output_stream(), "(This was a dry-run; no commits were moved. Re-run without --dry-run to actually move commits.)")?; + Ok(Ok(())) + } + + ExecuteRebasePlanResult::WouldSucceed => { + unreachable!("WouldSucceed should only apply to dry runs") + } + ExecuteRebasePlanResult::DeclinedToMerge { failed_merge_info } => { failed_merge_info.describe(effects, &repo, MergeConflictRemediation::Retry)?; Ok(Err(ExitCode(1))) diff --git a/git-branchless-opts/src/lib.rs b/git-branchless-opts/src/lib.rs index e5a43f83a..8c39220e8 100644 --- a/git-branchless-opts/src/lib.rs +++ b/git-branchless-opts/src/lib.rs @@ -550,6 +550,10 @@ pub enum Command { /// Only supported if the moved subtree has a single head. #[clap(action, short = 'I', long = "insert")] insert: bool, + + /// Test whether an in-memory rebase would succeed. + #[clap(action, long = "dry-run", conflicts_with = "force_on_disk")] + dry_run: bool, }, /// Move to a later commit in the current stack. diff --git a/git-branchless-record/src/lib.rs b/git-branchless-record/src/lib.rs index 17911beee..9cb072bfd 100644 --- a/git-branchless-record/src/lib.rs +++ b/git-branchless-record/src/lib.rs @@ -554,6 +554,7 @@ To proceed anyways, run: git move -f -s 'siblings(.)", preserve_timestamps: get_restack_preserve_timestamps(&repo)?, force_in_memory: true, force_on_disk: false, + dry_run: false, resolve_merge_conflicts: false, check_out_commit_options: Default::default(), }; @@ -566,7 +567,8 @@ To proceed anyways, run: git move -f -s 'siblings(.)", &execute_options, )?; match result { - ExecuteRebasePlanResult::Succeeded { rewritten_oids: _ } => Ok(Ok(())), + ExecuteRebasePlanResult::Succeeded { rewritten_oids: _ } + | ExecuteRebasePlanResult::WouldSucceed => Ok(Ok(())), ExecuteRebasePlanResult::DeclinedToMerge { failed_merge_info } => { failed_merge_info.describe(effects, &repo, MergeConflictRemediation::Insert)?; Ok(Ok(())) diff --git a/git-branchless-reword/src/lib.rs b/git-branchless-reword/src/lib.rs index 45419ce09..cd4468c4d 100644 --- a/git-branchless-reword/src/lib.rs +++ b/git-branchless-reword/src/lib.rs @@ -289,6 +289,7 @@ pub fn reword( preserve_timestamps: get_restack_preserve_timestamps(&repo)?, force_in_memory: true, force_on_disk: false, + dry_run: false, resolve_merge_conflicts: false, check_out_commit_options: CheckOutCommitOptions { additional_args: Default::default(), @@ -315,7 +316,8 @@ pub fn reword( } ExecuteRebasePlanResult::Succeeded { rewritten_oids: None, - } => Ok(Ok(())), + } + | ExecuteRebasePlanResult::WouldSucceed => Ok(Ok(())), ExecuteRebasePlanResult::DeclinedToMerge { failed_merge_info: _, } => { diff --git a/git-branchless-submit/src/phabricator.rs b/git-branchless-submit/src/phabricator.rs index b21fb3c89..ebbb185e4 100644 --- a/git-branchless-submit/src/phabricator.rs +++ b/git-branchless-submit/src/phabricator.rs @@ -354,6 +354,7 @@ impl Forge for PhabricatorForge<'_> { preserve_timestamps: true, force_in_memory: true, force_on_disk: false, + dry_run: false, resolve_merge_conflicts: false, check_out_commit_options: CheckOutCommitOptions { render_smartlog: false, @@ -485,7 +486,8 @@ Differential Revision: https://phabricator.example.com/D000$(git rev-list --coun } => rewritten_oids, ExecuteRebasePlanResult::Succeeded { rewritten_oids: None, - } => { + } + | ExecuteRebasePlanResult::WouldSucceed => { warn!("No rewritten commit OIDs were produced by rebase plan execution"); Default::default() } @@ -602,6 +604,7 @@ Differential Revision: https://phabricator.example.com/D000$(git rev-list --coun preserve_timestamps: true, force_in_memory: true, force_on_disk: false, + dry_run: false, resolve_merge_conflicts: false, check_out_commit_options: CheckOutCommitOptions { render_smartlog: false, diff --git a/git-branchless-test/src/lib.rs b/git-branchless-test/src/lib.rs index ec22ff854..f65f1af66 100644 --- a/git-branchless-test/src/lib.rs +++ b/git-branchless-test/src/lib.rs @@ -411,6 +411,7 @@ BUG: Expected resolved_interactive ({resolved_interactive:?}) to match interacti preserve_timestamps: get_restack_preserve_timestamps(repo)?, force_in_memory, force_on_disk: *force_on_disk, + dry_run: false, resolve_merge_conflicts: *resolve_merge_conflicts, check_out_commit_options: CheckOutCommitOptions { render_smartlog: false, @@ -726,6 +727,7 @@ fn set_abort_trap( preserve_timestamps: true, force_in_memory: false, force_on_disk: true, + dry_run: false, resolve_merge_conflicts: false, check_out_commit_options: CheckOutCommitOptions { render_smartlog: false, @@ -733,7 +735,8 @@ fn set_abort_trap( }, }, )? { - ExecuteRebasePlanResult::Succeeded { rewritten_oids: _ } => { + ExecuteRebasePlanResult::Succeeded { rewritten_oids: _ } + | ExecuteRebasePlanResult::WouldSucceed => { // Do nothing. } ExecuteRebasePlanResult::DeclinedToMerge { failed_merge_info } => { @@ -2091,6 +2094,7 @@ fn apply_fixes( execute_options, )? { ExecuteRebasePlanResult::Succeeded { rewritten_oids } => rewritten_oids, + ExecuteRebasePlanResult::WouldSucceed => return Ok(Ok(())), ExecuteRebasePlanResult::DeclinedToMerge { failed_merge_info } => { writeln!(effects.get_output_stream(), "BUG: encountered merge conflicts during git test fix, but we should not be applying any patches: {failed_merge_info:?}")?; return Ok(Err(ExitCode(1))); diff --git a/git-branchless/src/commands/amend.rs b/git-branchless/src/commands/amend.rs index 8e55e95f1..7691a7822 100644 --- a/git-branchless/src/commands/amend.rs +++ b/git-branchless/src/commands/amend.rs @@ -294,6 +294,7 @@ pub fn amend( event_tx_id, force_in_memory: move_options.force_in_memory, force_on_disk: move_options.force_on_disk, + dry_run: false, preserve_timestamps: get_restack_preserve_timestamps(&repo)?, resolve_merge_conflicts: move_options.resolve_merge_conflicts, check_out_commit_options: CheckOutCommitOptions { @@ -313,7 +314,8 @@ pub fn amend( )? { ExecuteRebasePlanResult::Succeeded { rewritten_oids: None, - } => {} + } + | ExecuteRebasePlanResult::WouldSucceed => {} ExecuteRebasePlanResult::Succeeded { rewritten_oids: Some(rewritten_oids), diff --git a/git-branchless/src/commands/mod.rs b/git-branchless/src/commands/mod.rs index d1fb585e1..eeb442a94 100644 --- a/git-branchless/src/commands/mod.rs +++ b/git-branchless/src/commands/mod.rs @@ -96,6 +96,7 @@ fn command_main(ctx: CommandContext, opts: Opts) -> EyreExitOr<()> { move_options, fixup, insert, + dry_run, } => git_branchless_move::r#move( &effects, &git_run_info, @@ -107,6 +108,7 @@ fn command_main(ctx: CommandContext, opts: Opts) -> EyreExitOr<()> { &move_options, fixup, insert, + dry_run, )?, Command::Next { diff --git a/git-branchless/src/commands/restack.rs b/git-branchless/src/commands/restack.rs index 16231b2ea..667aef96b 100644 --- a/git-branchless/src/commands/restack.rs +++ b/git-branchless/src/commands/restack.rs @@ -183,6 +183,8 @@ fn restack_commits( Ok(Ok(())) } + ExecuteRebasePlanResult::WouldSucceed => Ok(Ok(())), + ExecuteRebasePlanResult::DeclinedToMerge { failed_merge_info } => { failed_merge_info.describe(effects, &repo, merge_conflict_remediation)?; Ok(Err(ExitCode(1))) @@ -325,6 +327,7 @@ pub fn restack( preserve_timestamps: get_restack_preserve_timestamps(&repo)?, force_in_memory, force_on_disk, + dry_run: false, resolve_merge_conflicts, check_out_commit_options: CheckOutCommitOptions { additional_args: Default::default(), diff --git a/git-branchless/src/commands/split.rs b/git-branchless/src/commands/split.rs index aff6045a2..5b2706b2e 100644 --- a/git-branchless/src/commands/split.rs +++ b/git-branchless/src/commands/split.rs @@ -555,6 +555,7 @@ pub fn split( preserve_timestamps: get_restack_preserve_timestamps(&repo)?, force_in_memory, force_on_disk, + dry_run: false, resolve_merge_conflicts, check_out_commit_options: CheckOutCommitOptions { additional_args: Default::default(), @@ -579,7 +580,9 @@ pub fn split( }; match result { - None | Some(ExecuteRebasePlanResult::Succeeded { rewritten_oids: _ }) => { + None + | Some(ExecuteRebasePlanResult::Succeeded { rewritten_oids: _ }) + | Some(ExecuteRebasePlanResult::WouldSucceed) => { try_exit_code!(git_run_info .run_direct_no_wrapping(Some(event_tx_id), &["branchless", "smartlog"])?); Ok(Ok(())) diff --git a/git-branchless/src/commands/sync.rs b/git-branchless/src/commands/sync.rs index b6276bbf7..5e4395162 100644 --- a/git-branchless/src/commands/sync.rs +++ b/git-branchless/src/commands/sync.rs @@ -91,6 +91,7 @@ pub fn sync( preserve_timestamps: get_restack_preserve_timestamps(&repo)?, force_in_memory, force_on_disk, + dry_run: false, resolve_merge_conflicts, check_out_commit_options: CheckOutCommitOptions { additional_args: Default::default(), @@ -428,6 +429,9 @@ fn execute_plans( ExecuteRebasePlanResult::Succeeded { rewritten_oids: _ } => { success_commits.push(root_commit); } + ExecuteRebasePlanResult::WouldSucceed => { + // Do nothing. + } ExecuteRebasePlanResult::DeclinedToMerge { failed_merge_info } => { failed_merge_commits.push((root_commit, failed_merge_info)); } diff --git a/git-branchless/tests/test_move.rs b/git-branchless/tests/test_move.rs index d0db9dab7..13d843546 100644 --- a/git-branchless/tests/test_move.rs +++ b/git-branchless/tests/test_move.rs @@ -2832,6 +2832,105 @@ fn test_move_force_in_memory() -> eyre::Result<()> { Ok(()) } +#[test] +fn test_move_force_in_memory_dry_run() -> eyre::Result<()> { + let git = make_git()?; + + git.init_repo()?; + + git.commit_file("test1", 1)?; + git.commit_file("test2", 2)?; + + { + git.run(&["checkout", "HEAD~"])?; + git.commit_file("test3", 3)?; + + let starting_smartlog = git.smartlog()?; + insta::assert_snapshot!(starting_smartlog, @r###" + : + O 62fc20d create test1.txt + |\ + | @ 4838e49 create test3.txt + | + O 96d1c37 (master) create test2.txt + "### + ); + + let (stdout, _stderr) = + git.branchless("move", &["-d", "master", "--in-memory", "--dry-run"])?; + insta::assert_snapshot!(stdout, @r###" + Attempting rebase in-memory... + [1/1] Committed as: 70deb1e create test3.txt + In-memory rebase would succeed. + (This was a dry-run; no commits were moved. Re-run without --dry-run to actually move commits.) + "###); + + let stdout = git.smartlog()?; + insta::assert_snapshot!(stdout, @r###" + : + O 62fc20d create test1.txt + |\ + | @ 4838e49 create test3.txt + | + O 96d1c37 (master) create test2.txt + "### + ); + assert_eq!(stdout, starting_smartlog); + } + + { + git.run(&["checkout", "HEAD~"])?; + git.write_file_txt("test2", "conflicting contents")?; + git.run(&["add", "."])?; + git.run(&["commit", "-m", "conflicting test2"])?; + + let starting_smartlog = git.smartlog()?; + insta::assert_snapshot!(starting_smartlog, @r###" + : + O 62fc20d create test1.txt + |\ + | @ 081b474 conflicting test2 + |\ + | o 4838e49 create test3.txt + | + O 96d1c37 (master) create test2.txt + "### + ); + + let (stdout, _stderr) = git.branchless_with_options( + "move", + &["-d", "master", "--in-memory", "--dry-run"], + &GitRunOptions { + expected_exit_code: 1, + ..Default::default() + }, + )?; + insta::assert_snapshot!(stdout, @r###" + Attempting rebase in-memory... + This operation would cause a merge conflict: + - (1 conflicting file) 081b474 conflicting test2 + To resolve merge conflicts, retry this operation with the --merge option. + "### + ); + + let stdout = git.smartlog()?; + insta::assert_snapshot!(stdout, @r###" + : + O 62fc20d create test1.txt + |\ + | @ 081b474 conflicting test2 + |\ + | o 4838e49 create test3.txt + | + O 96d1c37 (master) create test2.txt + "### + ); + assert_eq!(stdout, starting_smartlog); + } + + Ok(()) +} + #[test] fn test_rebase_in_memory_updates_committer_timestamp() -> eyre::Result<()> { let git = make_git()?; From eabe75d0e33517cfd6c099e2d3f5ab539c82c8f6 Mon Sep 17 00:00:00 2001 From: Clayton Carter Date: Thu, 25 Sep 2025 16:29:55 -0400 Subject: [PATCH 145/146] fix(record): correct handling of --stash with detached head This addresses an overlooked review comment from #1150: > issue: Won't this not work if no branch is checked out before trying to > stash? In that case, it seems like git record --stash would make the commit > without switching back to the parent commit. And, indeed, that's exactly the case! Ref: https://github.com/arxanas/git-branchless/pull/1150#discussion_r1429300485 --- git-branchless-record/src/lib.rs | 12 +++++- git-branchless-record/tests/test_record.rs | 47 ++++++++++++++++++++++ 2 files changed, 58 insertions(+), 1 deletion(-) diff --git a/git-branchless-record/src/lib.rs b/git-branchless-record/src/lib.rs index 9cb072bfd..6d2473736 100644 --- a/git-branchless-record/src/lib.rs +++ b/git-branchless-record/src/lib.rs @@ -221,9 +221,19 @@ fn record( ResolvedReferenceInfo { oid: Some(oid), reference_name: _, - } => Some(CheckoutTarget::Oid(oid)), + } => { + let head_commit = repo.find_commit_or_fail(oid)?; + match head_commit.get_parents().as_slice() { + [] => None, + [parent_commit] => Some(CheckoutTarget::Oid(parent_commit.get_oid())), + parent_commits => { + eyre::bail!("git-branchless record --stash seems to have created a merge commit, but this should be impossible. Parents: {parent_commits:?}"); + } + } + } _ => None, }; + if stash && checkout_target.is_some() { try_exit_code!(check_out_commit( effects, diff --git a/git-branchless-record/tests/test_record.rs b/git-branchless-record/tests/test_record.rs index 9cfbf6bd8..a005cd30b 100644 --- a/git-branchless-record/tests/test_record.rs +++ b/git-branchless-record/tests/test_record.rs @@ -342,6 +342,53 @@ fn test_record_stash() -> eyre::Result<()> { Ok(()) } +#[test] +fn test_record_stash_detached_head() -> eyre::Result<()> { + let git = make_git()?; + + if !git.supports_reference_transactions()? { + return Ok(()); + } + git.init_repo()?; + + git.detach_head()?; + + { + git.commit_file("test1", 1)?; + + let stdout = git.smartlog()?; + insta::assert_snapshot!(stdout, @r###" + O f777ecc (master) create initial.txt + | + @ 62fc20d create test1.txt + "###); + } + + { + git.write_file_txt("test1", "new test1 contents\n")?; + + let (stdout, _stderr) = git.branchless("record", &["-m", "foo", "--stash"])?; + insta::assert_snapshot!(stdout, @r###" + [detached HEAD 9b6164c] foo + 1 file changed, 1 insertion(+), 1 deletion(-) + branchless: running command: checkout 62fc20d2a290daea0d52bdc2ed2ad4be6491010e + "###); + } + + { + let stdout = git.smartlog()?; + insta::assert_snapshot!(stdout, @r###" + O f777ecc (master) create initial.txt + | + @ 62fc20d create test1.txt + | + o 9b6164c foo + "###); + } + + Ok(()) +} + #[test] fn test_record_stash_default_message() -> eyre::Result<()> { let git = make_git()?; From 113cc19d8b57c027b74ab2333b500edc5863398b Mon Sep 17 00:00:00 2001 From: Clayton Carter Date: Tue, 7 Oct 2025 09:19:10 -0400 Subject: [PATCH 146/146] refactor(record): combine detach and stash logic --- git-branchless-record/src/lib.rs | 91 ++++++++++++++++++-------------- 1 file changed, 52 insertions(+), 39 deletions(-) diff --git a/git-branchless-record/src/lib.rs b/git-branchless-record/src/lib.rs index 6d2473736..04c5cbdae 100644 --- a/git-branchless-record/src/lib.rs +++ b/git-branchless-record/src/lib.rs @@ -177,61 +177,74 @@ fn record( if detach || stash { let head_info = repo.get_head_info()?; - if let ResolvedReferenceInfo { - oid: Some(oid), - reference_name: Some(reference_name), - } = &head_info - { - let head_commit = repo.find_commit_or_fail(*oid)?; - match head_commit.get_parents().as_slice() { - [] => try_exit_code!(git_run_info.run( - effects, - Some(event_tx_id), - &[ - "update-ref", - "-d", - reference_name.as_str(), - &oid.to_string(), - ], - )?), - [parent_commit] => { - let branch_name = CategorizedReferenceName::new(reference_name).render_suffix(); - repo.detach_head(&head_info)?; - try_exit_code!(git_run_info.run( + let checkout_target = match &head_info { + ResolvedReferenceInfo { + oid: None, + reference_name: Some(reference_name), + } => { + // FIXME: unborn HEAD, what to do? + Some(CheckoutTarget::Reference(reference_name.clone())) + } + + ResolvedReferenceInfo { + oid: Some(oid), + reference_name: Some(reference_name), + } => { + let head_commit = repo.find_commit_or_fail(*oid)?; + match head_commit.get_parents().as_slice() { + [] => try_exit_code!(git_run_info.run( effects, Some(event_tx_id), &[ - "branch", - "-f", - &branch_name, - &parent_commit.get_oid().to_string(), + "update-ref", + "-d", + reference_name.as_str(), + &oid.to_string(), ], - )?); - } - parent_commits => { - eyre::bail!("git-branchless record --detach called on a merge commit, but it should only be capable of creating zero- or one-parent commits. Parents: {parent_commits:?}"); + )?), + [parent_commit] => { + let branch_name = + CategorizedReferenceName::new(reference_name).render_suffix(); + repo.detach_head(&head_info)?; + try_exit_code!(git_run_info.run( + effects, + Some(event_tx_id), + &[ + "branch", + "-f", + &branch_name, + &parent_commit.get_oid().to_string(), + ], + )?); + } + parent_commits => { + eyre::bail!("git-branchless record --detach called on a merge commit, but it should only be capable of creating zero- or one-parent commits. Parents: {parent_commits:?}"); + } } + + Some(CheckoutTarget::Reference(reference_name.clone())) } - } - let checkout_target = match head_info { - ResolvedReferenceInfo { - oid: _, - reference_name: Some(reference_name), - } => Some(CheckoutTarget::Reference(reference_name.clone())), + ResolvedReferenceInfo { oid: Some(oid), - reference_name: _, + reference_name: None, } => { - let head_commit = repo.find_commit_or_fail(oid)?; + let head_commit = repo.find_commit_or_fail(*oid)?; match head_commit.get_parents().as_slice() { - [] => None, + [] => { + eyre::bail!("git-branchless record --stash seems to have created a root commit (commit without parents), but this should be impossible."); + } [parent_commit] => Some(CheckoutTarget::Oid(parent_commit.get_oid())), parent_commits => { eyre::bail!("git-branchless record --stash seems to have created a merge commit, but this should be impossible. Parents: {parent_commits:?}"); } } } - _ => None, + + ResolvedReferenceInfo { + oid: None, + reference_name: None, + } => None, }; if stash && checkout_target.is_some() {