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: gitpython-developers/GitPython
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 3.1.58
Choose a base ref
...
head repository: gitpython-developers/GitPython
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: main
Choose a head ref
  • 13 commits
  • 18 files changed
  • 2 contributors

Commits on Aug 4, 2026

  1. Merge pull request #2207 from gitpython-developers/next-release

    prepare changelog for upcoming release
    Byron authored Aug 4, 2026
    Configuration menu
    Copy the full SHA
    4ba9ce6 View commit details
    Browse the repository at this point in the history

Commits on Aug 5, 2026

  1. Block file-reading Git options

    <!-- agent -->
    Reject file-reading options passed to blame, diff, and tag APIs. Inspect
    positional values after resolving aliases, recognize unsafe options
    behind command-specific short-flag clusters, and retain the explicit
    allow_unsafe_options escape hatch. This closes GHSA-5xxx-qhh7-9287 and
    GHSA-3wxw-xv34-2frg and covers the adjacent diff order-file sink.
    
    Regression tests cover long, short, and clustered options, incremental blame,
    tag path/reference positionals, the ref keyword alias, both diff entry points,
    and preservation of diff pickaxe behavior.
    
    Git baseline: cf5497b14c; git-blame, git-diff, and git-tag document the relevant file-input options.
    
    Assisted-by: GPT 5.6
    Co-authored-by: GPT 5.6 <codex@openai.com>
    Byron and codex committed Aug 5, 2026
    Configuration menu
    Copy the full SHA
    1b0d2d9 View commit details
    Browse the repository at this point in the history
  2. prepare next release

    Byron committed Aug 5, 2026
    Configuration menu
    Copy the full SHA
    ce9d8e8 View commit details
    Browse the repository at this point in the history
  3. Merge pull request #2208 from gitpython-developers/security-fixes

    Block file-reading Git options
    Byron authored Aug 5, 2026
    Configuration menu
    Copy the full SHA
    9729ed3 View commit details
    Browse the repository at this point in the history

Commits on Aug 10, 2026

  1. fix: index.add() now supports filters (#2021)

    This is done by calling into `git hash-object` for correctness, instead
    of using a mostly incorrect custom implementation for this (lacks filters).
    
    <!-- agent -->
    GitCmdObjectDB inherited LooseObjectDB.store(), so despite its name, object
    writes bypassed Git and used gitdb's loose-object implementation. That path
    creates and chmods object files itself, which can fail during Index.add() on
    filesystems where those permission changes are unsupported.
    
    Override store() to stream new objects through `git hash-object -w --stdin`.
    This lets Git manage object creation and permissions consistently with the
    repository configuration. Retain the inherited implementation for pre-hashed
    objects and custom output streams, whose existing semantics hash-object cannot
    provide.
    
    Assisted-by: GPT 5.6
    Co-authored-by: GPT 5.6 <codex@openai.com>
    Byron and codex committed Aug 10, 2026
    Configuration menu
    Copy the full SHA
    93677a0 View commit details
    Browse the repository at this point in the history
  2. Block separate git directories during clone

    <!-- agent -->
    Repo.clone() and Repo.clone_from() did not reject the clone option that
    redirects repository metadata to a caller-controlled path (GHSA-8mcc-hrx5-hvxc).
    Regression coverage exercises both keyword and multi-option input through both
    public clone APIs.
    
    Add the option to the existing clone denylist, matching Repo.init()
    and the documented allow_unsafe_options contract. Git itself registers
    
    The Python package and Alpine test workflows failed across the submodule suite
    because GitPython internally supplies --separate-git-dir when creating modern
    submodule layouts. The new public clone guard correctly rejected that option,
    but could not distinguish the library-generated path from caller input.
    
    Validate caller-provided keyword and multi-options before adding the
    library-controlled metadata path, then explicitly allow the resulting trusted
    clone invocation. This preserves rejection of unsafe clone_multi_options while
    restoring normal submodule creation. Update the one test that intentionally
    invokes Repo.clone_from() with its own separate git directory to opt in
    explicitly.
    
    Assisted-by: GPT 5.6
    Co-authored-by: GPT 5.6 <codex@openai.com>
    Assisted-by: GPT 5.6
    Co-authored-by: GPT 5.6 <codex@openai.com>
    Byron and codex committed Aug 10, 2026
    Configuration menu
    Copy the full SHA
    b68afff View commit details
    Browse the repository at this point in the history
  3. Merge pull request #2209 from caroescm/fix-index-add-chmod

    index: write blobs via git hash-object, not gitdb's odb.store
    Byron authored Aug 10, 2026
    Configuration menu
    Copy the full SHA
    5ff52cc View commit details
    Browse the repository at this point in the history
  4. Merge pull request #2210 from gitpython-developers/fix-clone-unsafe-o…

    …ption
    
    Block separate git directories during clone
    Byron authored Aug 10, 2026
    Configuration menu
    Copy the full SHA
    b473abb View commit details
    Browse the repository at this point in the history
  5. fix: preserve multiline config values when writing

    <!-- agent -->
    GitConfigParser decoded valid multiline values into embedded newlines, but
    _write() serialized those newlines as indented physical lines. Rewriting an
    otherwise unchanged config could therefore change its meaning to Git.
    
    Serialize resident multiline values with Git-compatible escapes inside a
    quoted continuation, preserving GitPython read compatibility while keeping
    each option structurally intact. This addresses GHSA-284h-m62q-gf8w.
    
    The regression starts with an inert multiline value, performs an unrelated
    write, and verifies with both GitPython and git config that it remains one
    value and does not create another option.
    
    Git baseline: config.c parse_value() and write_pair() at cf5497b14c5a escape
    embedded LF as \\n rather than emitting it as a physical config line.
    
    Assisted-by: GPT 5.6
    Co-authored-by: GPT 5.6 <codex@openai.com>
    Byron and codex committed Aug 10, 2026
    Configuration menu
    Copy the full SHA
    4b4e47f View commit details
    Browse the repository at this point in the history
  6. fix: ignore includes in submodule configuration

    <!-- agent -->
    Submodule configuration is read from .gitmodules, whose contents may come
    from an untrusted repository. Its parser inherited merge_includes=True and
    could therefore open files named by include directives during ordinary
    submodule enumeration.
    
    Disable include merging at the SubmoduleConfigParser construction site. This
    matches Repo.config_writer() hardening from 41ecc6a and addresses
    GHSA-7833-fr7j-v32q without changing include behavior for trusted config
    parsers.
    
    The regression points .gitmodules at a non-config file and verifies the
    submodule entry remains readable without opening the included path.
    
    Assisted-by: GPT 5.6
    Co-authored-by: GPT 5.6 <codex@openai.com>
    Byron and codex committed Aug 10, 2026
    Configuration menu
    Copy the full SHA
    ef7568e View commit details
    Browse the repository at this point in the history
  7. Merge pull request #2211 from gitpython-developers/config-sanitize-more

    fix: harden config parsing boundaries
    Byron authored Aug 10, 2026
    Configuration menu
    Copy the full SHA
    a5e047d View commit details
    Browse the repository at this point in the history
  8. Configuration menu
    Copy the full SHA
    66340d7 View commit details
    Browse the repository at this point in the history
  9. Merge pull request #2212 from gitpython-developers/next-release

    prepare changelog prior to release
    Byron authored Aug 10, 2026
    Configuration menu
    Copy the full SHA
    52a6cba View commit details
    Browse the repository at this point in the history
Loading