Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: git/git
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 3deb97fe24eccb1245e9323475f10cfba705e08f
Choose a base ref
...
head repository: git/git
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: e509b5b8be0f17467dcc75130f941d84a09d96a3
Choose a head ref
  • 8 commits
  • 22 files changed
  • 2 contributors

Commits on Oct 7, 2025

  1. Merge branch 'ps/rust-balloon' into ps/ci-rust

    * ps/rust-balloon:
      ci: enable Rust for breaking-changes jobs
      ci: convert "pedantic" job into full build with breaking changes
      BreakingChanges: announce Rust becoming mandatory
      varint: reimplement as test balloon for Rust
      varint: use explicit width for integers
      help: report on whether or not Rust is enabled
      Makefile: introduce infrastructure to build internal Rust library
      Makefile: reorder sources after includes
      meson: add infrastructure to build internal Rust library
    gitster committed Oct 7, 2025
    Configuration menu
    Copy the full SHA
    5f91b2c View commit details
    Browse the repository at this point in the history
  2. Merge branch 'ps/gitlab-ci-windows-improvements' into ps/ci-rust

    * ps/gitlab-ci-windows-improvements:
      t8020: fix test failure due to indeterministic tag sorting
      gitlab-ci: upload Meson test logs as JUnit reports
      gitlab-ci: drop workaround for Python certificate store on Windows
      gitlab-ci: ignore failures to disable realtime monitoring
      gitlab-ci: dedup instructions to disable realtime monitoring
    gitster committed Oct 7, 2025
    Configuration menu
    Copy the full SHA
    1562d9a View commit details
    Browse the repository at this point in the history

Commits on Oct 15, 2025

  1. ci: deduplicate calls to apt-get update

    When installing dependencies we first check for the distribution that is
    in use and then we check for the specific job. In the first step we
    already install all dependencies required to build and test Git, whereas
    the second step installs a couple of additional dependencies that are
    only required to perform job-specific tasks.
    
    In both steps we use `apt-get update` to update our repository sources.
    This is unnecessary though: all platforms that use Aptitude would have
    already executed this command in the distro-specific step anyway.
    
    Drop the redundant calls.
    
    Signed-off-by: Patrick Steinhardt <[email protected]>
    Signed-off-by: Junio C Hamano <[email protected]>
    pks-t authored and gitster committed Oct 15, 2025
    Configuration menu
    Copy the full SHA
    0de14fe View commit details
    Browse the repository at this point in the history
  2. ci: check formatting of our Rust code

    Introduce a CI check that verifies that our Rust code is well-formatted.
    This check uses `cargo fmt`, which is a wrapper around rustfmt(1) that
    executes formatting for all Rust source files. rustfmt(1) itself is the
    de-facto standard for formatting code in the Rust ecosystem.
    
    The rustfmt(1) tool allows to tweak the final format in theory. In
    practice though, the Rust ecosystem has aligned on style "editions".
    These editions only exist to ensure that any potential changes to the
    style don't cause reformats to existing code bases. Other than that,
    most Rust projects out there accept this default style of a specific
    edition.
    
    Let's do the same and use that default style. It may not be anyone's
    favorite, but it is consistent and by making it part of our CI we also
    enforce it right from the start.
    
    Note that we don't have to pick a specific style edition here, as the
    edition is automatically derived from the edition we have specified in
    our "Cargo.toml" file.
    
    The implemented script looks somewhat weird as we perfom manual error
    handling instead of using something like `set -e`. The intent here is
    that subsequent commits will add more checks, and we want to execute all
    of these checks regardless of whether or not a previous check failed.
    
    Signed-off-by: Patrick Steinhardt <[email protected]>
    Signed-off-by: Junio C Hamano <[email protected]>
    pks-t authored and gitster committed Oct 15, 2025
    Configuration menu
    Copy the full SHA
    e75cd05 View commit details
    Browse the repository at this point in the history
  3. rust/varint: add safety comments

    The `decode_varint()` and `encode_varint()` functions in our Rust crate
    are reimplementations of the respective C functions. As such, we are
    naturally forced to use the same interface in both Rust and C, which
    makes use of raw pointers. The consequence is that the code needs to be
    marked as unsafe in Rust.
    
    It is common practice in Rust to provide safety documentation for every
    block that is marked as unsafe. This common practice is also enforced by
    Clippy, Rust's static analyser. We don't have Clippy wired up yet, and
    we could of course just disable this check. But we're about to wire it
    up, and it is reasonable to always enforce documentation for unsafe
    blocks.
    
    Add such safety comments to already squelch those warnings now. While at
    it, also document the functions' behaviour.
    
    Helped-by: "brian m. carlson" <[email protected]>
    Signed-off-by: Patrick Steinhardt <[email protected]>
    Signed-off-by: Junio C Hamano <[email protected]>
    pks-t authored and gitster committed Oct 15, 2025
    Configuration menu
    Copy the full SHA
    03f3900 View commit details
    Browse the repository at this point in the history
  4. ci: check for common Rust mistakes via Clippy

    Introduce a CI check that uses Clippy to perform checks for common
    mistakes and suggested code improvements. Clippy is the official static
    analyser of the Rust project and thus the de-facto standard.
    
    Signed-off-by: Patrick Steinhardt <[email protected]>
    Signed-off-by: Junio C Hamano <[email protected]>
    pks-t authored and gitster committed Oct 15, 2025
    Configuration menu
    Copy the full SHA
    4b44c46 View commit details
    Browse the repository at this point in the history
  5. ci: verify minimum supported Rust version

    In the current state of our Rust code base we don't really have any
    requirements for the minimum supported Rust version yet, as we don't use
    any features introduced by a recent version of Rust. Consequently, we
    have decided that we want to aim for a rather old version and edition of
    Rust, where the hope is that using an old version will make alternatives
    like gccrs viable earlier for compiling Git.
    
    But while we specify the Rust edition, we don't yet specify a Rust
    version. And even if we did, the Rust version would only be enforced for
    our own code, but not for any of our dependencies.
    
    We don't yet have any dependencies at the current point in time. But
    let's add some safeguards by specifying the minimum supported Rust
    version and using cargo-msrv(1) to verify that this version can be
    satisfied for all of our dependencies.
    
    Note that we fix the version of cargo-msrv(1) at v0.18.1. This is the
    latest release supported by Ubuntu's Rust version.
    
    Signed-off-by: Patrick Steinhardt <[email protected]>
    Signed-off-by: Junio C Hamano <[email protected]>
    pks-t authored and gitster committed Oct 15, 2025
    Configuration menu
    Copy the full SHA
    1b43384 View commit details
    Browse the repository at this point in the history
  6. rust: support for Windows

    The initial patch series that introduced Rust into the core of Git only
    cared about macOS and Linux. This specifically leaves out Windows, which
    indeed fails to build right now due to two issues:
    
      - The Rust runtime requires `GetUserProfileDirectoryW()`, but we don't
        link against "userenv.dll".
    
      - The path of the Rust library built on Windows is different than on
        most other systems systems.
    
    Fix both of these issues to support Windows.
    
    Note that this commit fixes the Meson-based job in GitHub's CI. Meson
    auto-detects the availability of Rust, and as the Windows runner has
    Rust installed by default it already enabled Rust support there. But due
    to the above issues that job fails consistently.
    
    Install Rust on GitLab CI, as well, to improve test coverage there.
    
    Based-on-patch-by: Johannes Schindelin <[email protected]>
    Based-on-patch-by: Ezekiel Newren <[email protected]>
    Signed-off-by: Patrick Steinhardt <[email protected]>
    Signed-off-by: Junio C Hamano <[email protected]>
    pks-t authored and gitster committed Oct 15, 2025
    Configuration menu
    Copy the full SHA
    e509b5b View commit details
    Browse the repository at this point in the history
Loading