Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package topgrade for openSUSE:Factory checked in at 2025-12-03 14:13:17 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/topgrade (Old) and /work/SRC/openSUSE:Factory/.topgrade.new.14147 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "topgrade" Wed Dec 3 14:13:17 2025 rev:15 rq:1320917 version:16.6.0 Changes: -------- --- /work/SRC/openSUSE:Factory/topgrade/topgrade.changes 2025-11-26 18:51:05.160948803 +0100 +++ /work/SRC/openSUSE:Factory/.topgrade.new.14147/topgrade.changes 2025-12-03 14:14:44.008151522 +0100 @@ -1,0 +2,13 @@ +Tue Dec 02 15:20:18 UTC 2025 - [email protected] + +- Update to version 16.6.0: + * chore: release v16.6.0 (#1565) + * fix(deps): downgrade mac-notifaction-sys to fix build failure (#1571) + * fix: Add more alternate names for Intellij IDEA (#1570) + * feat(git): add option to fetch instead of pull repositories (#1371) + * chore(deps): update http, tower-http, tracing, zerocopy (#1567) + * chore(deps): update swatinem/rust-cache action to v2.8.2 (#1562) + * ci: switch release_to_pypi.yml to trusted publishing (#1566) + * docs: README.md fixes (#1564) + +------------------------------------------------------------------- Old: ---- topgrade-16.5.0.tar.zst New: ---- topgrade-16.6.0.tar.zst ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ topgrade.spec ++++++ --- /var/tmp/diff_new_pack.QbCWEb/_old 2025-12-03 14:14:45.032194735 +0100 +++ /var/tmp/diff_new_pack.QbCWEb/_new 2025-12-03 14:14:45.032194735 +0100 @@ -17,7 +17,7 @@ Name: topgrade -Version: 16.5.0 +Version: 16.6.0 Release: 0 Summary: Upgrade all the things License: GPL-3.0-only ++++++ _service ++++++ --- /var/tmp/diff_new_pack.QbCWEb/_old 2025-12-03 14:14:45.072196423 +0100 +++ /var/tmp/diff_new_pack.QbCWEb/_new 2025-12-03 14:14:45.076196592 +0100 @@ -3,7 +3,7 @@ <param name="url">https://github.com/topgrade-rs/topgrade.git</param> <param name="versionformat">@PARENT_TAG@</param> <param name="scm">git</param> - <param name="revision">v16.5.0</param> + <param name="revision">v16.6.0</param> <param name="match-tag">*</param> <param name="versionrewrite-pattern">v(\d+\.\d+\.\d+)</param> <param name="versionrewrite-replacement">\1</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.QbCWEb/_old 2025-12-03 14:14:45.100197605 +0100 +++ /var/tmp/diff_new_pack.QbCWEb/_new 2025-12-03 14:14:45.100197605 +0100 @@ -1,7 +1,7 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/topgrade-rs/topgrade.git</param> - <param name="changesrevision">eb68a2d8034364b2cba64b22aea11d3bda1a8b12</param></service><service name="tar_scm"> + <param name="changesrevision">83e05e1fed24801b47983abce099f8b73121f3ac</param></service><service name="tar_scm"> <param name="url">https://ghproxy.net/https://github.com/topgrade-rs/topgrade.git</param> <param name="changesrevision">ef0a0d69bbe0cb08d6c4930ee18b734e03c215fb</param></service></servicedata> (No newline at EOF) ++++++ topgrade-16.5.0.tar.zst -> topgrade-16.6.0.tar.zst ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/topgrade-16.5.0/.github/workflows/ci.yml new/topgrade-16.6.0/.github/workflows/ci.yml --- old/topgrade-16.5.0/.github/workflows/ci.yml 2025-11-26 14:27:49.000000000 +0100 +++ new/topgrade-16.6.0/.github/workflows/ci.yml 2025-11-28 19:54:01.000000000 +0100 @@ -140,7 +140,7 @@ persist-credentials: false - name: Setup Rust Cache - uses: Swatinem/rust-cache@f13886b937689c021905a6b90929199931d60db1 # v2.8.1 + uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2.8.2 with: prefix-key: ${{ matrix.target }} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/topgrade-16.5.0/.github/workflows/release_to_pypi.yml new/topgrade-16.6.0/.github/workflows/release_to_pypi.yml --- old/topgrade-16.5.0/.github/workflows/release_to_pypi.yml 2025-11-26 14:27:49.000000000 +0100 +++ new/topgrade-16.6.0/.github/workflows/release_to_pypi.yml 2025-11-28 19:54:01.000000000 +0100 @@ -95,8 +95,10 @@ name: Release runs-on: ubuntu-latest needs: [linux, windows, macos, sdist] + environment: + name: pypi permissions: - # Use to sign the release artifacts + # Use to sign the release artifacts, and for trusted publishing id-token: write # Used to upload release artifacts contents: write @@ -112,8 +114,6 @@ - name: Publish to PyPI uses: PyO3/maturin-action@86b9d133d34bc1b40018696f782949dac11bd380 # v1.49.4 - env: - MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }} with: command: upload args: --non-interactive --skip-existing wheels-*/* diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/topgrade-16.5.0/CHANGELOG.md new/topgrade-16.6.0/CHANGELOG.md --- old/topgrade-16.5.0/CHANGELOG.md 2025-11-26 14:27:49.000000000 +0100 +++ new/topgrade-16.6.0/CHANGELOG.md 2025-11-28 19:54:01.000000000 +0100 @@ -7,6 +7,24 @@ ## [Unreleased] +## [16.6.0](https://github.com/topgrade-rs/topgrade/compare/v16.5.0...v16.6.0) - 2025-11-28 + +### Added + +- *(git)* add option to fetch instead of pull repositories ([#1371](https://github.com/topgrade-rs/topgrade/pull/1371)) + +### Fixed + +- *(deps)* downgrade mac-notification-sys to fix build failure ([#1571](https://github.com/topgrade-rs/topgrade/pull/1571)) +- Add more alternate names for Intellij IDEA ([#1570](https://github.com/topgrade-rs/topgrade/pull/1570)) + +### Other + +- *(deps)* update http, tower-http, tracing, zerocopy ([#1567](https://github.com/topgrade-rs/topgrade/pull/1567)) +- *(deps)* update swatinem/rust-cache action to v2.8.2 ([#1562](https://github.com/topgrade-rs/topgrade/pull/1562)) +- switch release_to_pypi.yml to trusted publishing ([#1566](https://github.com/topgrade-rs/topgrade/pull/1566)) +- README.md fixes ([#1564](https://github.com/topgrade-rs/topgrade/pull/1564)) + ## [16.5.0](https://github.com/topgrade-rs/topgrade/compare/v16.4.2...v16.5.0) - 2025-11-26 ### Added diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/topgrade-16.5.0/Cargo.lock new/topgrade-16.6.0/Cargo.lock --- old/topgrade-16.5.0/Cargo.lock 2025-11-26 14:27:49.000000000 +0100 +++ new/topgrade-16.6.0/Cargo.lock 2025-11-28 19:54:01.000000000 +0100 @@ -289,6 +289,12 @@ checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" [[package]] +name = "block" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" + +[[package]] name = "block-buffer" version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -298,15 +304,6 @@ ] [[package]] -name = "block2" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5" -dependencies = [ - "objc2", -] - -[[package]] name = "blocking" version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -688,6 +685,16 @@ ] [[package]] +name = "dirs-next" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" +dependencies = [ + "cfg-if", + "dirs-sys-next", +] + +[[package]] name = "dirs-sys" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -695,18 +702,19 @@ dependencies = [ "libc", "option-ext", - "redox_users", + "redox_users 0.5.2", "windows-sys 0.61.2", ] [[package]] -name = "dispatch2" -version = "0.3.0" +name = "dirs-sys-next" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec" +checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" dependencies = [ - "bitflags 2.10.0", - "objc2", + "libc", + "redox_users 0.4.6", + "winapi", ] [[package]] @@ -1161,12 +1169,11 @@ [[package]] name = "http" -version = "1.3.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" +checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" dependencies = [ "bytes", - "fnv", "itoa", ] @@ -1553,16 +1560,27 @@ [[package]] name = "mac-notification-sys" -version = "0.6.8" -source = "git+https://github.com/h4llow3En/mac-notification-sys#7798ad033f3422b0fc9cdd25c17d3c400f4b7ef0" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dce8f34f3717aa37177e723df6c1fc5fb02b2a1087374ea3fe0ea42316dc8f91" dependencies = [ "cc", - "objc2", - "objc2-foundation", + "dirs-next", + "objc-foundation", + "objc_id", "time", ] [[package]] +name = "malloc_buf" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" +dependencies = [ + "libc", +] + +[[package]] name = "matchers" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1705,42 +1723,32 @@ checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" [[package]] -name = "objc2" -version = "0.6.3" +name = "objc" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7c2599ce0ec54857b29ce62166b0ed9b4f6f1a70ccc9a71165b6154caca8c05" +checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" dependencies = [ - "objc2-encode", + "malloc_buf", ] [[package]] -name = "objc2-core-foundation" -version = "0.3.2" +name = "objc-foundation" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" +checksum = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9" dependencies = [ - "bitflags 2.10.0", - "dispatch2", - "objc2", + "block", + "objc", + "objc_id", ] [[package]] -name = "objc2-encode" -version = "4.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" - -[[package]] -name = "objc2-foundation" +name = "objc2-core-foundation" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" +checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" dependencies = [ "bitflags 2.10.0", - "block2", - "libc", - "objc2", - "objc2-core-foundation", ] [[package]] @@ -1754,6 +1762,15 @@ ] [[package]] +name = "objc_id" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b" +dependencies = [ + "objc", +] + +[[package]] name = "object" version = "0.37.3" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -2078,6 +2095,17 @@ [[package]] name = "redox_users" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" +dependencies = [ + "getrandom 0.2.16", + "libredox", + "thiserror 1.0.69", +] + +[[package]] +name = "redox_users" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" @@ -2974,7 +3002,7 @@ [[package]] name = "topgrade" -version = "16.5.0" +version = "16.6.0" dependencies = [ "base64ct", "chrono", @@ -2993,6 +3021,7 @@ "indexmap", "is_elevated", "jetbrains-toolbox-updater", + "mac-notification-sys", "merge", "nix", "notify-rust", @@ -3039,9 +3068,9 @@ [[package]] name = "tower-http" -version = "0.6.6" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" +checksum = "9cf146f99d442e8e68e585f5d798ccd3cad9a7835b917e09728880a862706456" dependencies = [ "bitflags 2.10.0", "bytes", @@ -3069,9 +3098,9 @@ [[package]] name = "tracing" -version = "0.1.41" +version = "0.1.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +checksum = "8eb41cbdb933e23b7929f47bb577710643157d7602ef3a2ebd3902b13ac5eda6" dependencies = [ "log", "pin-project-lite", @@ -3081,9 +3110,9 @@ [[package]] name = "tracing-attributes" -version = "0.1.30" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", @@ -3092,9 +3121,9 @@ [[package]] name = "tracing-core" -version = "0.1.34" +version = "0.1.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +checksum = "7a04e24fab5c89c6a36eb8558c9656f30d81de51dfa4d3b45f26b21d61fa0a6c" dependencies = [ "once_cell", "valuable", @@ -3123,9 +3152,9 @@ [[package]] name = "tracing-subscriber" -version = "0.3.20" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2054a14f5307d601f88daf0553e1cbf472acc4f2c51afab632431cdcd72124d5" +checksum = "bee4bf13715d00789f2a099fd05d127c012bddc5c6628f2c8968374c1820c01d" dependencies = [ "matchers", "nu-ansi-term", @@ -3945,18 +3974,18 @@ [[package]] name = "zerocopy" -version = "0.8.28" +version = "0.8.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43fa6694ed34d6e57407afbccdeecfa268c470a7d2a5b0cf49ce9fcc345afb90" +checksum = "4ea879c944afe8a2b25fef16bb4ba234f47c694565e97383b36f3a878219065c" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.28" +version = "0.8.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c640b22cd9817fae95be82f0d2f90b11f7605f6c319d16705c459b27ac2cbc26" +checksum = "cf955aa904d6040f70dc8e9384444cb1030aed272ba3cb09bbc4ab9e7c1f34f5" dependencies = [ "proc-macro2", "quote", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/topgrade-16.5.0/Cargo.toml new/topgrade-16.6.0/Cargo.toml --- old/topgrade-16.5.0/Cargo.toml 2025-11-26 14:27:49.000000000 +0100 +++ new/topgrade-16.6.0/Cargo.toml 2025-11-28 19:54:01.000000000 +0100 @@ -6,7 +6,7 @@ license = "GPL-3.0-or-later" repository = "https://github.com/topgrade-rs/topgrade" rust-version = "1.84.1" -version = "16.5.0" +version = "16.6.0" authors = ["Roey Darwish Dror <[email protected]>", "Thomas Schönauer <[email protected]>"] exclude = ["doc/screenshot.gif", "BREAKINGCHANGES_dev.md"] edition = "2021" @@ -53,9 +53,6 @@ base64ct = "<1.8.0" clap-cargo = "0.15.2" -[patch.crates-io] -mac-notification-sys = { git = "https://github.com/h4llow3En/mac-notification-sys" } - [package.metadata.generate-rpm] assets = [{ source = "target/release/topgrade", dest = "/usr/bin/topgrade" }] @@ -95,6 +92,9 @@ windows = { version = "~0.62", features = ["Win32_System_Console"] } windows-registry = "~0.6" +[target.'cfg(macos)'.dependencies] +mac-notification-sys = "=0.6.2" + [profile.release] lto = true diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/topgrade-16.5.0/README.md new/topgrade-16.6.0/README.md --- old/topgrade-16.5.0/README.md 2025-11-26 14:27:49.000000000 +0100 +++ new/topgrade-16.6.0/README.md 2025-11-28 19:54:01.000000000 +0100 @@ -1,6 +1,6 @@ <div align="center"> <h1> - <img alt="Topgrade" src="doc/topgrade_transparent.png" width="850px"> + <img alt="Topgrade" src="https://github.com/topgrade-rs/topgrade/blob/main/doc/topgrade_transparent.png?raw=true" width="850px"> </h1> <a href="https://github.com/topgrade-rs/topgrade/releases"><img alt="GitHub Release" src="https://img.shields.io/github/release/topgrade-rs/topgrade.svg"></a> @@ -8,7 +8,7 @@ <a href="https://aur.archlinux.org/packages/topgrade"><img alt="AUR" src="https://img.shields.io/aur/version/topgrade.svg"></a> <a href="https://formulae.brew.sh/formula/topgrade"><img alt="Homebrew" src="https://img.shields.io/homebrew/v/topgrade.svg"></a> - <img alt="Demo" src="doc/topgrade_demo.gif"> + <img alt="Demo" src="https://github.com/topgrade-rs/topgrade/blob/main/doc/topgrade_demo.gif?raw=true"> </div> ## Introduction @@ -57,7 +57,7 @@ ## Configuration -See `config.example.toml` for an example configuration file. +See [`config.example.toml`](https://github.com/topgrade-rs/topgrade/blob/main/config.example.toml) for an example configuration file. ## Migration and Breaking Changes @@ -117,7 +117,7 @@ ### Want to contribute? -See [CONTRIBUTING.md](https://github.com/topgrade-rs/topgrade/blob/master/CONTRIBUTING.md) +See [CONTRIBUTING.md](https://github.com/topgrade-rs/topgrade/blob/main/CONTRIBUTING.md) ## Discord server diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/topgrade-16.5.0/config.example.toml new/topgrade-16.6.0/config.example.toml --- old/topgrade-16.5.0/config.example.toml 2025-11-26 14:27:49.000000000 +0100 +++ new/topgrade-16.6.0/config.example.toml 2025-11-28 19:54:01.000000000 +0100 @@ -236,21 +236,23 @@ [git] -# How many repos to pull at max in parallel +# How many repos to pull or fetch at max in parallel # max_concurrency = 5 -# Additional git repositories to pull +# Additional git repositories to pull or fetch # repos = [ # "~/src/*/", # "~/.config/something" # ] -# Don't pull the predefined git repos +# Set to `false` to skip pulling/fetching the predefined git repos # pull_predefined = false -# Arguments to pass Git when pulling Repositories +# Arguments to pass Git when pulling/fetching Repositories # arguments = "--rebase --autostash" +# Whether to perform a `git fetch` instead of `git pull` +# fetch_only = false [windows] # Manually select Windows updates diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/topgrade-16.5.0/locales/app.yml new/topgrade-16.6.0/locales/app.yml --- old/topgrade-16.5.0/locales/app.yml 2025-11-26 14:27:49.000000000 +0100 +++ new/topgrade-16.6.0/locales/app.yml 2025-11-28 19:54:01.000000000 +0100 @@ -72,6 +72,14 @@ zh_CN: "正在拉取" zh_TW: "正在拉取" de: "Abrufen" +"Fetching": + en: "Fetching" + lt: "Gaunama" + es: "Obteniendo" + fr: "Récupération" + zh_CN: "正在获取" + zh_TW: "正在獲取" + de: "Abrufen" "No Breaking changes": en: "No Breaking changes" lt: "Nėra esminių pakeitimų" @@ -168,6 +176,14 @@ zh_CN: "正在拉取" zh_TW: "正在拉取" de: "abrufen" +"fetching": + en: "fetching" + lt: "gaunama" + es: "obteniendo" + fr: "récupération" + zh_CN: "正在获取" + zh_TW: "正在獲取" + de: "abrufen" "Changed": en: "Changed" lt: "Pakeista" @@ -958,6 +974,14 @@ zh_CN: "拉取 %{repo}" zh_TW: "拉取 %{repo}" de: "Würde %{repo} abrufen" +"Would fetch {repo}": + en: "Would fetch %{repo}" + lt: "Gautų %{repo}" + es: "Obteniendo %{repo}" + fr: "Récupérerait %{repo}" + zh_CN: "获取 %{repo}" + zh_TW: "獲取 %{repo}" + de: "Würde %{repo} abrufen" "No Neovim config found": en: "No Neovim config found" lt: "Neovim konfigūracija nerasta" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/topgrade-16.5.0/src/config.rs new/topgrade-16.6.0/src/config.rs --- old/topgrade-16.5.0/src/config.rs 2025-11-26 14:27:49.000000000 +0100 +++ new/topgrade-16.6.0/src/config.rs 2025-11-28 19:54:01.000000000 +0100 @@ -81,6 +81,8 @@ repos: Option<Vec<String>>, pull_predefined: Option<bool>, + + fetch_only: Option<bool>, } #[derive(Deserialize, Default, Debug, Merge)] @@ -1116,6 +1118,15 @@ self.config_file.git.as_ref().and_then(|git| git.arguments.as_ref()) } + /// Only fetch repositories instead of pulling + pub fn git_fetch_only(&self) -> bool { + self.config_file + .git + .as_ref() + .and_then(|git| git.fetch_only) + .unwrap_or(false) + } + pub fn tmux_config(&self) -> Result<TmuxConfig> { let args = self.tmux_arguments()?; Ok(TmuxConfig { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/topgrade-16.5.0/src/step.rs new/topgrade-16.6.0/src/step.rs --- old/topgrade-16.5.0/src/step.rs 2025-11-26 14:27:49.000000000 +0100 +++ new/topgrade-16.6.0/src/step.rs 2025-11-28 19:54:01.000000000 +0100 @@ -322,7 +322,7 @@ Gcloud => runner.execute(*self, "gcloud", || generic::run_gcloud_components_update(ctx))?, Gem => runner.execute(*self, "gem", || generic::run_gem(ctx))?, Ghcup => runner.execute(*self, "ghcup", || generic::run_ghcup_update(ctx))?, - GitRepos => runner.execute(*self, "Git Repositories", || git::run_git_pull(ctx))?, + GitRepos => runner.execute(*self, "Git Repositories", || git::run_git_pull_or_fetch(ctx))?, GithubCliExtensions => runner.execute(*self, "GitHub CLI Extensions", || { generic::run_ghcli_extensions_upgrade(ctx) })?, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/topgrade-16.5.0/src/steps/generic.rs new/topgrade-16.6.0/src/steps/generic.rs --- old/topgrade-16.5.0/src/steps/generic.rs 2025-11-26 14:27:49.000000000 +0100 +++ new/topgrade-16.6.0/src/steps/generic.rs 2025-11-28 19:54:01.000000000 +0100 @@ -1775,7 +1775,9 @@ require_one([ "idea", "intellij-idea-ultimate-edition", + "intellij-idea-ultimate", "intellij-idea-community-edition", + "intellij-idea-community", ])?, "IntelliJ IDEA", ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/topgrade-16.5.0/src/steps/git.rs new/topgrade-16.6.0/src/steps/git.rs --- old/topgrade-16.5.0/src/steps/git.rs 2025-11-26 14:27:49.000000000 +0100 +++ new/topgrade-16.6.0/src/steps/git.rs 2025-11-28 19:54:01.000000000 +0100 @@ -28,7 +28,7 @@ #[cfg(windows)] use crate::WINDOWS_DIRS; -pub fn run_git_pull(ctx: &ExecutionContext) -> Result<()> { +pub fn run_git_pull_or_fetch(ctx: &ExecutionContext) -> Result<()> { let mut repos = RepoStep::try_new()?; let config = ctx.config(); @@ -115,7 +115,7 @@ print_separator(t!("Git repositories")); - repos.pull_repos(ctx) + repos.pull_or_fetch_repos(ctx) } #[cfg(windows)] @@ -298,41 +298,41 @@ debug_assert!(_removed); } - /// Try to pull a repo. - async fn pull_repo<P: AsRef<Path>>(&self, ctx: &ExecutionContext<'_>, repo: P) -> Result<()> { + /// Try to pull a repo, or fetch it if `fetch_only` is enabled. + async fn pull_or_fetch_repo<P: AsRef<Path>>(&self, ctx: &ExecutionContext<'_>, repo: P) -> Result<()> { let before_revision = get_head_revision(&self.git, &repo); + let is_fetch_only = ctx.config().git_fetch_only(); if ctx.config().verbose() { - println!("{} {}", style(t!("Pulling")).cyan().bold(), repo.as_ref().display()); + let action = if is_fetch_only { t!("Fetching") } else { t!("Pulling") }; + println!("{} {}", style(action).cyan().bold(), repo.as_ref().display()); } let mut command = AsyncCommand::new(&self.git); + command.stdin(Stdio::null()).current_dir(&repo); - command - .stdin(Stdio::null()) - .current_dir(&repo) - .args(["pull", "--ff-only"]); + if is_fetch_only { + command.args(["fetch", "--recurse-submodules"]); + } else { + command.args(["pull", "--ff-only", "--recurse-submodules"]); + } if let Some(extra_arguments) = ctx.config().git_arguments() { command.args(extra_arguments.split_whitespace()); } - let pull_output = command.output().await?; - let submodule_output = AsyncCommand::new(&self.git) - .args(["submodule", "update", "--recursive"]) - .current_dir(&repo) - .stdin(Stdio::null()) - .output() - .await?; - let result = output_checked_utf8(pull_output) - .and_then(|()| output_checked_utf8(submodule_output)) - .wrap_err_with(|| format!("Failed to pull {}", repo.as_ref().display())); + let output = command.output().await?; + let result = output_checked_utf8(output).wrap_err_with(|| { + let action = if is_fetch_only { "fetch" } else { "pull" }; + format!("Failed to {} {}", action, repo.as_ref().display()) + }); if result.is_err() { + let action = if is_fetch_only { t!("fetching") } else { t!("pulling") }; println!( "{} {} {}", style(t!("Failed")).red().bold(), - t!("pulling"), + action, repo.as_ref().display() ); } else { @@ -366,16 +366,23 @@ result } - /// Pull the repositories specified in `self.repos`. + /// Pulls or fetches the repositories specified in `self.repos`, depending on `fetch_only`. /// /// # NOTE /// This function will create an async runtime and do the real job so the /// function itself is not async. - fn pull_repos(&self, ctx: &ExecutionContext) -> Result<()> { + fn pull_or_fetch_repos(&self, ctx: &ExecutionContext) -> Result<()> { + let is_fetch_only = ctx.config().git_fetch_only(); + if ctx.run_type().dry() { - self.repos - .iter() - .for_each(|repo| println!("{}", t!("Would pull {repo}", repo = repo.display()))); + self.repos.iter().for_each(|repo| { + let message = if is_fetch_only { + t!("Would fetch {repo}", repo = repo.display()) + } else { + t!("Would pull {repo}", repo = repo.display()) + }; + println!("{}", message); + }); return Ok(()); } @@ -403,7 +410,7 @@ } _ => true, // repo has remotes or command to check for remotes has failed. proceed to pull anyway. }) - .map(|repo| self.pull_repo(ctx, repo)); + .map(|repo| self.pull_or_fetch_repo(ctx, repo)); let stream_of_futures = if let Some(limit) = ctx.config().git_concurrency_limit() { iter(futures_iterator).buffer_unordered(limit).boxed() ++++++ vendor.tar.zst ++++++ /work/SRC/openSUSE:Factory/topgrade/vendor.tar.zst /work/SRC/openSUSE:Factory/.topgrade.new.14147/vendor.tar.zst differ: char 7, line 1
