GeezerVison is showing github.com — Comparing 3.1.52...3.1.53 · gitpython-developers/GitPython
Permalink
base repository:
gitpython-developers/GitPython
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
Uh oh!
There was an error while loading. Please reload this page.
base:
3.1.52
head repository:
gitpython-developers/GitPython
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
Uh oh!
There was an error while loading. Please reload this page.
compare:
3.1.53
-
14
commits
-
12
files changed
-
4
contributors
Commits on Jul 16, 2026
-
feat(submodule): add deinit method to Submodule (#2014)
Mirrors the pattern of `Submodule.add`, `Submodule.update`, and
`Submodule.remove` by exposing `git submodule deinit` as a first-class
method, so callers no longer need the `repo.git.submodule('deinit', ...)`
workaround noted in the issue.
The method delegates to `git submodule deinit [--force] -- <path>` via
`self.repo.git.submodule`, decorated with `@unbare_repo` to match the
other mutating Submodule methods. It unregisters the submodule from
`.git/config` and clears the working-tree directory while leaving
`.gitmodules` and `.git/modules/<name>` intact, so a later `update()`
can re-initialize.
Configuration menu
Browse the repository at this point in the history
-
Configuration menu
Browse the repository at this point in the history
-
Configuration menu
Browse the repository at this point in the history
-
Configuration menu
Browse the repository at this point in the history
-
Configuration menu
Browse the repository at this point in the history
-
fix: make submodule.update() after submodule.deinit() work
Git's `submodule deinit` command removes the submodule checkout but retains
its repository under the parent repository's `.git/modules` directory.
Submodule.update() previously treated the missing checkout as a completely
uninitialized submodule and attempted to clone it again. The clone could not
reuse the existing module repository, preventing a deinitialized submodule
from being initialized again through GitPython.
Detect a valid retained repository before entering the clone path. Restore
the checkout's `.git` file and the module repository's worktree
configuration, reset the retained repository to recreate its index and
working tree, and restore the submodule URL in the parent configuration.
Continue using the existing clone behavior when no valid retained repository
is available.
Co-authored-by: Sebastian Thiel <[email protected]>
Configuration menu
Browse the repository at this point in the history
-
Configuration menu
Browse the repository at this point in the history
Commits on Jul 20, 2026
-
Configuration menu
Browse the repository at this point in the history
-
fix: respect core.hooksPath for commit hooks
Use git rev-parse --git-path when resolving commit hook paths so GitPython follows Git's core.hooksPath configuration.\n\nAdd regression coverage for a pre-commit hook stored in a custom hooks path.\n\nFixes #2083
Configuration menu
Browse the repository at this point in the history
-
Address review feedback about hook resolution
- Review feedback: resolve core.hooksPath only when configured, avoid an
unconditional git rev-parse dependency, and cover relative paths in a non-bare
repository.
- Read the effective Git configuration directly so unconfigured repositories
retain the legacy .git/hooks lookup and configured relative paths resolve from
the directory where hooks execute. Exercise both guarantees in the hook tests.
- Review feedback: core.hooksPath can point outside index.repo.working_dir,
where Path.relative_to() raises on Windows and prevents a valid hook from
running.
- Build the Bash argument with os.path.relpath so hooks in parent or other
absolute locations remain executable. Fall back to the absolute POSIX-form
path when Windows cannot form a relative path across drives, and add a focused
command-construction regression test.
Configuration menu
Browse the repository at this point in the history
-
Configuration menu
Browse the repository at this point in the history
-
fix: validate config section delimiters
GHSA-3rp5-jjmw-4wv2 identified that configuration section names could alter the
structure of serialized config despite the existing control-character checks.
Reject unquoted closing section delimiters across all writer entry points
while preserving valid delimiters inside quoted subsections and the
existing option-name behavior. Add regression coverage for unsafe plain and
quoted-subsection-shaped names as well as a valid quoted subsection.
Git baseline: a23bace963d508bd96983cc637131392d3face18. Git config parsing
treats an unquoted closing bracket as the end of a basic section header, while
its extended form permits brackets inside a quoted subsection and requires a
final bracket after the closing quote.
Co-authored-by: Sebastian Thiel <[email protected]>
Configuration menu
Browse the repository at this point in the history
-
Configuration menu
Browse the repository at this point in the history
-
Configuration menu
Browse the repository at this point in the history
Loading
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff 3.1.52...3.1.53
Uh oh!
There was an error while loading. Please reload this page.
|