GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — Merge gitdb and smmap into the GitPython repository by Byron · Pull Request #2179 · gitpython-developers/GitPython

Conversation

@Byron

@Byron Byron commented Jul 21, 2026

Copy link
Copy Markdown
Member

Tasks

This section is for Byron only. Models continuing this PR must not add, remove, check, uncheck, rename, or reorder checkboxes here.

  • refackiew

Everything below this line was generated by Codex GPT-5.

Created by Codex on behalf of Byron. Byron will review before this is ready to merge.

Reported issue

Use this information to plan for a subtree merge, combining gitdb and ssmap repositories into GitPython.

The requested ssmap repository is interpreted as smmap, matching the named GitPython dependency and the source repository discussed in the linked issues.

Summary

  • Merge the complete smmap history at 8ce61ad5cc4016bffaf25080bc0d69b3acbe8555 into smmap/.
  • Merge the complete gitdb history at 2da3232f9d58e7761e384ac6d32f7b1ed77a74a2 into gitdb/.
  • Replace the former gitlinks with regular monorepo directories while retaining separate git, gitdb, and smmap distributions and import APIs.
  • Teach local tests, packaging, documentation, and CI to consume the in-tree dependency projects.
  • Leave repository archival, issue migration, and release-process consolidation for separate follow-up work.

Context

This implements the subtree direction discussed in GitPython issues #511, #933, and #1716, gitdb issue #116, and smmap pull request #53.

Validation

  • GitPython focused fixture, installation, historical-submodule, repository, and documentation tests
  • smmap: 9 passed
  • gitdb: 24 passed, 1 skipped
  • GitPython broader run: 689 passed, 73 skipped, 1 xfailed; remaining failures were local Python 3.14 or Git configuration/environment failures unrelated to the subtree migration
  • GitPython, gitdb, and smmap wheel and sdist builds
  • mypy for GitPython
  • dependency syntax checks and workflow YAML parsing
  • no tracked gitlinks and clean git diff --check

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Byron and others added 30 commits February 17, 2020 11:15
@Byron
Merge branch 'master' of https://github.com/gitpython-developers/gitdb
b27e72f
@Byron
Now with PR: 3.0.2
f356e12
@Harmon758
Merge branch 'master' into PR-UnicodeEncodeError
d829152
@Harmon758
Merge pull request #49 from xarx00/PR-UnicodeEncodeError
5699c13
Change force_bytes to use UTF-8 encoding by default
@Harmon758
Restrict smmap2 version to <3
02de02c
@Harmon758
Update requirements.txt
139811a
@Harmon758
Improve changelog for v3.0.2
09aa35b
@Byron
Merge tag 'v2.0.5'
8e69f21
@Byron
Change package name to 'smmap'; bump version to 3.0.0
541472d
gitpython-developers/smmap#44
@Byron
Update makefile to sign with new signature
1b92f4f
@Harmon758
v3.0.3.post1
74aef73
@Harmon758
Merge pull request #40 from adamchainz/markdown
9bca8b2
Tell PyPI long_description is Markdown
@Harmon758
Remove carriage returns in setup.py long_description
72698cc
Mitigates pypa/setuptools#1440
@Harmon758
v3.0.1
d076f66
@Harmon758
v4.0.1
253dfe7
Nicusor97
Remove setup.cfg because the gitdb dropped Python 2 support
02d83a8
@Harmon758
Merge pull request #62 from Nicusor97/remove-setup-cfg-because-it-dro…
0016dae
…pped-python-2-support

Remove setup.cfg to have a pure python wheel
@Harmon758
v4.0.2
9b03095
@Byron
Create pythonpackage.yml
77b39e9
@Byron
Replace travis with github actions
cc21afa
@Byron
don't try to use __file__ when using pyoxidizer
e6cc702
@Byron
Add github actions
aa12752
@Byron
Fix github actions - no dependencies need to be installed
b22f159
@Byron
Remove basestring reference, no py2 support
2ceedc9
@Byron
Update badges to represent reality
ebec896
@Byron
bump patch level
f4d7a58
@Byron
bump patch level; mark travis-ci as unused
57d3f75
@Byron
update changelog; remove sublime text (editor) configuration
0002408
@Byron
Bump patch again; …upload error due to state on disk, yikes
b8ab128
@Byron
Remove windows build badge
4f08b0a
[skip CI]
github-advanced-security[bot]
github-advanced-security Bot found potential problems Jul 21, 2026
View reviewed changes
Comment thread gitdb/gitdb/test/lib.py Fixed

Uh oh!

There was an error while loading. Please reload this page.

Comment thread gitdb/gitdb/test/test_pack.py Fixed

Uh oh!

There was an error while loading. Please reload this page.

Comment thread gitdb/gitdb/test/test_pack.py Fixed

Uh oh!

There was an error while loading. Please reload this page.

Comment thread gitdb/gitdb/test/test_pack.py Fixed

Uh oh!

There was an error while loading. Please reload this page.

Comment thread gitdb/gitdb/test/test_util.py Fixed

Uh oh!

There was an error while loading. Please reload this page.

Comment thread gitdb/gitdb/test/test_util.py Fixed

Uh oh!

There was an error while loading. Please reload this page.

@Byron
Byron force-pushed the subtree-merge-deps branch 2 times, most recently from f377fc7 to 7e817cd Compare July 25, 2026 07:56
@Byron

Byron commented Jul 25, 2026 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member Author

@EliahKagan While I reviewed it hunk by hunk, the change also touches dependabot, and it's unclear if it will still pick up its work for the now 2 additional top-level packages. Let's forward-fix this if needed.

Also, I have never tried to release and would hope GitPython is unaffected, but I will find out. Also GitDB and SMMap releases are uncertain now, but if there is an issue I think it's easy to fix as well, maybe even with unified script machinery.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@codex @Byron
Build gitdb and smmap from the GitPython monorepo
8a08afa
GitPython previously depended on gitdb and smmap through nested git
submodules. That made a complete checkout depend on extra repository state
and forced related changes to be coordinated across three repositories.

Keep both projects as independently buildable distributions under their own
top-level directories, while updating GitPython packaging, CI, documentation,
and test fixtures to consume the in-tree sources. Remove the obsolete
gitlinks and imported repository automation so a normal clone contains all
code needed to build and test the three packages.

Co-authored-by: Sebastian Thiel <[email protected]>
@Byron
Byron force-pushed the subtree-merge-deps branch from 7e817cd to 8a08afa Compare July 25, 2026 08:23
@Byron
Byron marked this pull request as ready for review July 25, 2026 08:47
Copilot AI review requested due to automatic review settings July 25, 2026 08:47
@Byron
Byron merged commit 8ecda9e into main Jul 25, 2026
50 of 51 checks passed

Uh oh!

There was an error while loading. Please reload this page.

Copilot started reviewing on behalf of Byron July 25, 2026 08:47
View session
@Byron
Byron deleted the subtree-merge-deps branch July 25, 2026 08:47
Copilot AI reviewed Jul 25, 2026
View reviewed changes

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This pull request vendors the gitdb and smmap dependency projects into the GitPython repository (monorepo layout), and updates GitPython’s tests, packaging, and CI to use the in-tree projects instead of submodules.

Changes:

  • Removes the gitdb submodule and adds in-tree gitdb/ and smmap/ projects (code, tests, docs, packaging).
  • Updates GitPython tests/fixtures to reconstruct dependency repos from the merged history for deterministic local cloning/submodule tests.
  • Adjusts packaging/typing/tooling and CI workflows to install and validate smmap and gitdb from local paths.

Reviewed changes

Copilot reviewed 107 out of 118 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
test/test_submodule.py Updates submodule tests to use reconstructed local dependency repo URLs.
test/test_repo.py Reworks submodule-related repo tests to use a RW fixture repo.
test/test_installation.py Installs smmap/gitdb and then GitPython in venv for installation validation.
test/test_fun.py Adds coverage for tree_entries_from_data accepting bytearray.
test/test_fixture_health.py Replaces submodule fixture checks with “no gitlinks” and trust checks.
test/test_docs.py Makes tutorial submodule snippet run against a RW fixture repo and local URLs.
test/test_clone.py Uses no_hardlinks=True to avoid Windows cleanup issues when cloning locally.
test/lib/helper.py Adds dependency-repo reconstruction helpers for gitdb/smmap from merged history.
smmap/tox.ini Adds smmap tox configuration for lint/test.
smmap/smmap/util.py Adds smmap utility mapping/window primitives.
smmap/smmap/test/test_util.py Adds smmap util tests.
smmap/smmap/test/test_tutorial.py Adds a tutorial-style test for smmap usage.
smmap/smmap/test/test_mman.py Adds smmap memory manager tests.
smmap/smmap/test/test_buf.py Adds smmap buffer tests (including perf-oriented test).
smmap/smmap/test/lib.py Adds smmap test support utilities.
smmap/smmap/test/init.py Initializes smmap test package.
smmap/smmap/buf.py Adds smmap buffer implementation.
smmap/smmap/init.py Adds smmap package init and re-exports.
smmap/setup.py Adds smmap packaging entrypoint.
smmap/setup.cfg Adds smmap flake8 configuration.
smmap/SECURITY.md Points smmap security reporting to GitPython’s policy.
smmap/README.md Adds smmap README in-repo.
smmap/MANIFEST.in Adds smmap manifest.
smmap/Makefile Adds smmap convenience Makefile targets.
smmap/LICENSE Adds smmap license text.
smmap/doc/source/tutorial.rst Vendors smmap tutorial documentation.
smmap/doc/source/intro.rst Vendors smmap intro documentation.
smmap/doc/source/index.rst Vendors smmap documentation index.
smmap/doc/source/conf.py Vendors smmap Sphinx config.
smmap/doc/source/changes.rst Vendors smmap changelog.
smmap/doc/source/api.rst Vendors smmap API docs.
smmap/doc/Makefile Vendors smmap doc Makefile.
smmap/doc/make.bat Vendors smmap doc Windows build script.
smmap/doc/.gitignore Adds smmap doc build ignores.
smmap/.gitignore Adds smmap repo ignores.
smmap/.coveragerc Adds smmap coverage configuration.
setup.py Restricts root package discovery to git packages for GitPython distribution.
README.md Updates dev instructions for editable installs in the monorepo.
pyproject.toml Updates mypy/pyright/ruff excludes and paths for in-tree gitdb/smmap.
init-tests-after-clone.sh Removes submodule initialization step (no longer applicable).
gitdb/setup.py Adds gitdb packaging entrypoint.
gitdb/SECURITY.md Points gitdb security reporting to GitPython’s policy.
gitdb/requirements.txt Adds gitdb runtime dependency constraints for smmap.
gitdb/README.rst Adds gitdb README in-repo.
gitdb/MANIFEST.in Adds gitdb manifest.
gitdb/Makefile Adds gitdb convenience Makefile targets.
gitdb/LICENSE Adds gitdb license text.
gitdb/gitdb/utils/encoding.py Adds gitdb encoding helpers.
gitdb/gitdb/utils/init.py Initializes gitdb utils package.
gitdb/gitdb/typ.py Adds gitdb type constants.
gitdb/gitdb/test/test_util.py Adds gitdb utility tests.
gitdb/gitdb/test/test_stream.py Adds gitdb stream tests (incl. regression coverage).
gitdb/gitdb/test/test_pack.py Adds gitdb pack tests.
gitdb/gitdb/test/test_example.py Adds gitdb example/tutorial tests.
gitdb/gitdb/test/test_base.py Adds gitdb base type tests.
gitdb/gitdb/test/performance/test_stream.py Vendors gitdb performance stream tests.
gitdb/gitdb/test/performance/test_pack.py Vendors gitdb performance pack tests.
gitdb/gitdb/test/performance/test_pack_streaming.py Vendors gitdb pack streaming performance tests.
gitdb/gitdb/test/performance/lib.py Adds gitdb performance test base.
gitdb/gitdb/test/performance/init.py Initializes gitdb performance test package.
gitdb/gitdb/test/lib.py Adds gitdb test utilities and fixtures.
gitdb/gitdb/test/db/test_ref.py Adds gitdb ReferenceDB tests.
gitdb/gitdb/test/db/test_pack.py Adds gitdb PackedDB tests.
gitdb/gitdb/test/db/test_mem.py Adds gitdb MemoryDB tests.
gitdb/gitdb/test/db/test_loose.py Adds gitdb LooseObjectDB tests.
gitdb/gitdb/test/db/test_git.py Adds gitdb GitDB tests.
gitdb/gitdb/test/db/lib.py Adds shared gitdb DB test helpers.
gitdb/gitdb/test/db/init.py Initializes gitdb DB test package.
gitdb/gitdb/test/init.py Initializes gitdb test package.
gitdb/gitdb/exc.py Adds gitdb exception types.
gitdb/gitdb/db/ref.py Adds gitdb ReferenceDB implementation.
gitdb/gitdb/db/pack.py Adds gitdb PackedDB implementation.
gitdb/gitdb/db/mem.py Adds gitdb MemoryDB implementation.
gitdb/gitdb/db/loose.py Adds gitdb LooseObjectDB implementation.
gitdb/gitdb/db/git.py Adds gitdb GitDB compound implementation.
gitdb/gitdb/db/base.py Adds gitdb DB base interfaces/compound DB logic.
gitdb/gitdb/db/init.py Re-exports gitdb db modules.
gitdb/gitdb/const.py Adds gitdb constants.
gitdb/gitdb/base.py Adds gitdb core stream/info types.
gitdb/gitdb/init.py Adds gitdb package init and re-exports.
gitdb/gitdb.pro Vendors gitdb project metadata file.
gitdb/doc/source/tutorial.rst Vendors gitdb tutorial docs.
gitdb/doc/source/intro.rst Vendors gitdb intro docs.
gitdb/doc/source/index.rst Vendors gitdb docs index.
gitdb/doc/source/conf.py Vendors gitdb Sphinx config.
gitdb/doc/source/changes.rst Vendors gitdb changelog.
gitdb/doc/source/api.rst Vendors gitdb API docs.
gitdb/doc/source/algorithm.rst Vendors gitdb algorithm discussion docs.
gitdb/doc/Makefile Vendors gitdb doc Makefile.
gitdb/doc/.gitignore Adds gitdb doc build ignores.
gitdb/AUTHORS Adds gitdb authors list.
gitdb/.gitignore Adds gitdb repo ignores.
gitdb/.coveragerc Adds gitdb coverage configuration.
git/objects/fun.py Ensures tree parsing works for bytearray by forcing bytes(...).
doc/source/intro.rst Removes submodule init instructions from GitPython docs.
.pre-commit-config.yaml Excludes gitdb/smmap paths from pre-commit hooks.
.gitmodules Removes gitdb submodule configuration.
.github/workflows/pythonpackage.yml Installs local smmap/gitdb in CI before running GitPython tests.
.github/workflows/dependencies.yml Adds CI workflow to lint/test smmap and gitdb as standalone packages.
.github/workflows/cygwin-test.yml Updates Cygwin CI to install local smmap/gitdb and removes submodule trust paths.
.github/workflows/codeql.yml Ignores gitdb/smmap test paths for CodeQL analysis.
.github/workflows/alpine-test.yml Updates Alpine CI to install local smmap/gitdb and removes submodule trust paths.
.github/dependabot.yml Removes submodule update configuration from dependabot.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread gitdb/gitdb/db/base.py
Comment on lines +30 to +32
def __contains__(self, sha):
return self.has_obj

Comment thread gitdb/gitdb/test/performance/test_pack_streaming.py
Comment on lines +58 to +59
print(sys.stderr, "PDB Streaming: Wrote pack of size %i kb in %f s (%f kb/s)" %
(total_kb, elapsed, total_kb / (elapsed or 1)), sys.stderr)
Comment thread smmap/smmap/util.py
@@ -0,0 +1,222 @@
"""Module containing a memory memory manager which provides a sliding window on a number of memory mapped files"""
Comment thread README.md
The submodules must have been cloned for that to work, but that will already be the case if you have run `./init-tests-after-clone.sh`. You can use `pip list` to check which packages are installed editably and which are installed normally.
You can use `pip list` to check which packages are installed editably and which are installed normally.

To reiterate, this approach should only rarely be used. For most development it is preferable to allow the gitdb and smmap dependencices to be retrieved automatically from PyPI in their latest stable packaged versions.
Comment thread gitdb/gitdb/db/loose.py
Comment on lines +148 to +152
def set_ostream(self, stream):
""":raise TypeError: if the stream does not support the Sha1Writer interface"""
if stream is not None and not isinstance(stream, Sha1Writer):
raise TypeError("Output stream musst support the %s interface" % Sha1Writer.__name__)
return super().set_ostream(stream)
@Byron

Byron commented Jul 25, 2026

Copy link
Copy Markdown
Member Author

Ignoring all review comments as this is old code, which won't work worse than before without addressing them.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

EliahKagan added a commit to EliahKagan/GitPython that referenced this pull request Oct 25, 2026
@EliahKagan @claude
build(tox): install the in-tree smmap and gitdb
1340963
Since 8a08afa (gitpython-developers#2179), `smmap` and `gitdb` are developed in this
repository, and CI installs them from there, together with GitPython,
with `pip install ./smmap ./gitdb ".[${EXTRAS}]"`. tox
did not follow: its environments install GitPython's wheel, and pip
fetches `gitdb` and `smmap` from PyPI to satisfy its `gitdb>=4.0.1,<5`
requirement. So `tox` could test GitPython against different `gitdb`
and `smmap` code than CI does, for example after a change to them
that has not been released yet.

Add the two directories to `deps` in `[tool.tox.env_run_base]`, as
`{tox_root}/smmap` and `{tox_root}/gitdb`. tox installs `deps` before
the package's own dependencies, which they then satisfy, so pip keeps
them. Every environment that installs GitPython inherits this. `ruff`,
`format`, and `misc` set their own `deps` and skip installing
GitPython, so they are unaffected.

As with other `deps`, tox does not notice changes inside those
directories, so an existing environment needs `tox -r` to pick up
edits to `smmap` or `gitdb`.

Checked with tox 4.22.0 and 4.67.1. `tox config` shows the two paths
in the `deps` of `py39`, `py313`, `mypy`, `html`, and `gix`, and not
`ruff`. The `py39` smoke check and `html` passed, and
`tox -e py313 -- --collect-only -q test/test_util.py` collected the
tests. In each of those environments, `smmap` 5.0.3 and `gitdb` 4.0.12
came from the local directories, per their `direct_url.json`.

Co-authored-by: Claude Opus 5.5 <[email protected]>
EliahKagan added a commit to EliahKagan/GitPython that referenced this pull request Oct 29, 2026
@EliahKagan @claude
build(tox): install the in-tree smmap and gitdb
f7accfa
Since 8a08afa (gitpython-developers#2179), `smmap` and `gitdb` are developed in this
repository, and CI installs them from there, together with GitPython,
with `pip install ./smmap ./gitdb ".[${EXTRAS}]"`. tox
did not follow: its environments install GitPython's wheel, and pip
fetches `gitdb` and `smmap` from PyPI to satisfy its `gitdb>=4.0.1,<5`
requirement. So `tox` could test GitPython against different `gitdb`
and `smmap` code than CI does, for example after a change to them
that has not been released yet.

Add the two directories to `deps` in `[tool.tox.env_run_base]`, as
`{tox_root}/smmap` and `{tox_root}/gitdb`. tox installs `deps` before
the package's own dependencies, which they then satisfy, so pip keeps
them. Every environment that installs GitPython inherits this. `ruff`,
`format`, and `misc` set their own `deps` and skip installing
GitPython, so they are unaffected.

As with other `deps`, tox does not notice changes inside those
directories, so an existing environment needs `tox -r` to pick up
edits to `smmap` or `gitdb`.

Checked with tox 4.22.0 and 4.67.1. `tox config` shows the two paths
in the `deps` of `py39`, `py313`, `mypy`, `html`, and `gix`, and not
`ruff`. The `py39` smoke check and `html` passed, and
`tox -e py313 -- --collect-only -q test/test_util.py` collected the
tests. In each of those environments, `smmap` 5.0.3 and `gitdb` 4.0.12
came from the local directories, per their `direct_url.json`.

Co-authored-by: Claude Opus 5.5 <[email protected]>
EliahKagan added a commit to EliahKagan/GitPython that referenced this pull request Oct 29, 2026
@EliahKagan @claude
build(tox): install the in-tree smmap and gitdb
4e5b065
Since 8a08afa (gitpython-developers#2179), `smmap` and `gitdb` are developed in this
repository, and CI installs them from there, together with GitPython,
with `pip install ./smmap ./gitdb ".[${EXTRAS}]"`. tox
did not follow: its environments install GitPython's wheel, and pip
fetches `gitdb` and `smmap` from PyPI to satisfy its `gitdb>=4.0.1,<5`
requirement. So `tox` could test GitPython against different `gitdb`
and `smmap` code than CI does, for example after a change to them
that has not been released yet.

Add the two directories to `deps` in `[tool.tox.env_run_base]`, as
`{tox_root}/smmap` and `{tox_root}/gitdb`. tox installs `deps` before
the package's own dependencies, which they then satisfy, so pip keeps
them. Every environment that installs GitPython inherits this. `ruff`,
`format`, and `misc` set their own `deps` and skip installing
GitPython, so they are unaffected.

As with other `deps`, tox does not notice changes inside those
directories, so an existing environment needs `tox -r` to pick up
edits to `smmap` or `gitdb`.

Checked with tox 4.22.0 and 4.67.1. `tox config` shows the two paths
in the `deps` of `py39`, `py313`, `mypy`, `html`, and `gix`, and not
`ruff`. The `py39` smoke check and `html` passed, and
`tox -e py313 -- --collect-only -q test/test_util.py` collected the
tests. In each of those environments, `smmap` 5.0.3 and `gitdb` 4.0.12
came from the local directories, per their `direct_url.json`.

Co-authored-by: Claude Opus 5.5 <[email protected]>
EliahKagan added a commit to EliahKagan/GitPython that referenced this pull request Oct 29, 2026
@EliahKagan @claude
build(tox): install the in-tree smmap and gitdb
ce16309
Since 8a08afa (gitpython-developers#2179), `smmap` and `gitdb` are developed in this
repository, and CI installs them from there, together with GitPython,
with `pip install ./smmap ./gitdb ".[${EXTRAS}]"`. tox
did not follow: its environments install GitPython's wheel, and pip
fetches `gitdb` and `smmap` from PyPI to satisfy its `gitdb>=4.0.1,<5`
requirement. So `tox` could test GitPython against different `gitdb`
and `smmap` code than CI does, for example after a change to them
that has not been released yet.

Add the two directories to `deps` in `[tool.tox.env_run_base]`, as
`{tox_root}/smmap` and `{tox_root}/gitdb`. tox installs `deps` before
the package's own dependencies, which they then satisfy, so pip keeps
them. Every environment that installs GitPython inherits this. `ruff`,
`format`, and `misc` set their own `deps` and skip installing
GitPython, so they are unaffected.

As with other `deps`, tox does not notice changes inside those
directories, so an existing environment needs `tox -r` to pick up
edits to `smmap` or `gitdb`.

Checked with tox 4.22.0 and 4.67.1. `tox config` shows the two paths
in the `deps` of `py39`, `py313`, `mypy`, `html`, and `gix`, and not
`ruff`. The `py39` smoke check and `html` passed, and
`tox -e py313 -- --collect-only -q test/test_util.py` collected the
tests. In each of those environments, `smmap` 5.0.3 and `gitdb` 4.0.12
came from the local directories, per their `direct_url.json`.

Co-authored-by: Claude Opus 5.5 <[email protected]>
EliahKagan added a commit to EliahKagan/GitPython that referenced this pull request Oct 29, 2026
@EliahKagan @claude
build(tox): install the in-tree smmap and gitdb
d341241
Since 8a08afa (gitpython-developers#2179), `smmap` and `gitdb` are developed in this
repository, and CI installs them from there, together with GitPython,
with `pip install ./smmap ./gitdb ".[${EXTRAS}]"`. tox
did not follow: its environments install GitPython's wheel, and pip
fetches `gitdb` and `smmap` from PyPI to satisfy its `gitdb>=4.0.1,<5`
requirement. So `tox` could test GitPython against different `gitdb`
and `smmap` code than CI does, for example after a change to them
that has not been released yet.

Add the two directories to `deps` in `[tool.tox.env_run_base]`, as
`{tox_root}/smmap` and `{tox_root}/gitdb`. tox installs `deps` before
the package's own dependencies, which they then satisfy, so pip keeps
them. Every environment that installs GitPython inherits this. `ruff`,
`format`, and `misc` set their own `deps` and skip installing
GitPython, so they are unaffected.

As with other `deps`, tox does not notice changes inside those
directories, so an existing environment needs `tox -r` to pick up
edits to `smmap` or `gitdb`.

Checked with tox 4.22.0 and 4.67.1. `tox config` shows the two paths
in the `deps` of `py39`, `py313`, `mypy`, `html`, and `gix`, and not
`ruff`. The `py39` smoke check and `html` passed, and
`tox -e py313 -- --collect-only -q test/test_util.py` collected the
tests. In each of those environments, `smmap` 5.0.3 and `gitdb` 4.0.12
came from the local directories, per their `direct_url.json`.

Co-authored-by: Claude Opus 5.5 <[email protected]>
EliahKagan added a commit to EliahKagan/GitPython that referenced this pull request Oct 29, 2026
@EliahKagan @claude
build(tox): install the in-tree smmap and gitdb
3b54ae4
Since 8a08afa (gitpython-developers#2179), `smmap` and `gitdb` are developed in this
repository, and CI installs them from there, together with GitPython,
with `pip install ./smmap ./gitdb ".[${EXTRAS}]"`. tox did not follow:
its environments install GitPython's wheel, and pip fetches `gitdb` and
`smmap` from PyPI to satisfy its `gitdb>=4.0.1,<5` requirement. So `tox`
could test GitPython against different `gitdb` and `smmap` code than CI
does, for example after a change to them that has not been released yet.

Add the two directories to `deps` in `[tool.tox.env_run_base]`, as
`{tox_root}/smmap` and `{tox_root}/gitdb`. tox installs `deps` before
the package's own dependencies, which they then satisfy, so pip keeps
them. Every environment that installs GitPython inherits this. `ruff`,
`format`, and `misc` set their own `deps` and skip installing
GitPython, so they are unaffected.

As with other `deps`, tox does not notice changes inside those
directories, so an existing environment needs `tox -r` to pick up
edits to `smmap` or `gitdb`.

Checked with tox 4.22.0 and 4.67.1. `tox config` shows the two paths
in the `deps` of `py39`, `py313`, `mypy`, `html`, and `gix`, and not
`ruff`. The `py39` smoke check and `html` passed, and
`tox -e py313 -- --collect-only -q test/test_util.py` collected the
tests. In each of those environments, `smmap` 5.0.3 and `gitdb` 4.0.12
came from the local directories, per their `direct_url.json`.

Co-authored-by: Claude Opus 5.5 <[email protected]>
EliahKagan added a commit to EliahKagan/GitPython that referenced this pull request Oct 29, 2026
@EliahKagan @claude
build(tox): install the in-tree smmap and gitdb
6076309
Since 8a08afa (gitpython-developers#2179), `smmap` and `gitdb` are developed in this
repository, and CI installs them from there, together with GitPython,
with `pip install ./smmap ./gitdb ".[${EXTRAS}]"`. tox did not follow:
its environments install GitPython's wheel, and pip fetches `gitdb` and
`smmap` from PyPI to satisfy its `gitdb>=4.0.1,<5` requirement. So `tox`
could test GitPython against different `gitdb` and `smmap` code than CI
does, for example after a change to them that has not been released yet.

Add the two directories to `deps` in `[tool.tox.env_run_base]`, as
`{tox_root}/smmap` and `{tox_root}/gitdb`. tox installs `deps` before
the package's own dependencies, which they then satisfy, so pip keeps
them. Every environment that installs GitPython inherits this. `ruff`,
`format`, and `misc` set their own `deps` and skip installing
GitPython, so they are unaffected.

As with other `deps`, tox does not notice changes inside those
directories, so an existing environment needs `tox -r` to pick up
edits to `smmap` or `gitdb`.

Checked with tox 4.22.0 and 4.67.1. `tox config` shows the two paths
in the `deps` of `py39`, `py313`, `mypy`, `html`, and `gix`, and not
`ruff`. The `py39` smoke check and `html` passed, and
`tox -e py313 -- --collect-only -q test/test_util.py` collected the
tests. In each of those environments, `smmap` 5.0.3 and `gitdb` 4.0.12
came from the local directories, per their `direct_url.json`.

Co-authored-by: Claude Opus 5.5 <[email protected]>
EliahKagan added a commit to EliahKagan/GitPython that referenced this pull request Oct 29, 2026
@EliahKagan @claude
build(tox): install the in-tree smmap and gitdb
43f0d77
Since 8a08afa (gitpython-developers#2179), `smmap` and `gitdb` are developed in this
repository, and CI installs them from there, together with GitPython,
with `pip install ./smmap ./gitdb ".[${EXTRAS}]"`. tox did not follow:
its environments install GitPython's wheel, and pip fetches `gitdb` and
`smmap` from PyPI to satisfy its `gitdb>=4.0.1,<5` requirement. So `tox`
could test GitPython against different `gitdb` and `smmap` code than CI
does, for example after a change to them that has not been released yet.

Add the two directories to `deps` in `[tool.tox.env_run_base]`, as
`{tox_root}/smmap` and `{tox_root}/gitdb`. tox installs `deps` before
the package's own dependencies, which they then satisfy, so pip keeps
them. Every environment that installs GitPython inherits this. `ruff`,
`format`, and `misc` set their own `deps` and skip installing
GitPython, so they are unaffected.

As with other `deps`, tox does not notice changes inside those
directories, so an existing environment needs `tox -r` to pick up
edits to `smmap` or `gitdb`.

Checked with tox 4.22.0 and 4.67.1. `tox config` shows the two paths
in the `deps` of `py39`, `py313`, `mypy`, `html`, and `gix`, and not
`ruff`. The `py39` smoke check and `html` passed, and
`tox -e py313 -- --collect-only -q test/test_util.py` collected the
tests. In each of those environments, `smmap` 5.0.3 and `gitdb` 4.0.12
came from the local directories, per their `direct_url.json`.

Co-authored-by: Claude Opus 5.5 <[email protected]>
EliahKagan added a commit to EliahKagan/GitPython that referenced this pull request Oct 29, 2026
@EliahKagan @claude
build(tox): install the in-tree smmap and gitdb
1d51e16
Since 8a08afa (gitpython-developers#2179), `smmap` and `gitdb` are developed in this
repository, and CI installs them from there, together with GitPython,
with `pip install ./smmap ./gitdb ".[${EXTRAS}]"`. tox did not follow:
its environments install GitPython's wheel, and pip fetches `gitdb` and
`smmap` from PyPI to satisfy its `gitdb>=4.0.1,<5` requirement. So `tox`
could test GitPython against different `gitdb` and `smmap` code than CI
does, for example after a change to them that has not been released yet.

Add the two directories to `deps` in `[tool.tox.env_run_base]`, as
`{tox_root}/smmap` and `{tox_root}/gitdb`. tox installs `deps` before
the package's own dependencies, which they then satisfy, so pip keeps
them. Every environment that installs GitPython inherits this. `ruff`,
`format`, and `misc` set their own `deps` and skip installing
GitPython, so they are unaffected.

As with other `deps`, tox does not notice changes inside those
directories, so an existing environment needs `tox -r` to pick up
edits to `smmap` or `gitdb`.

Checked with tox 4.22.0 and 4.67.1. `tox config` shows the two paths
in the `deps` of `py39`, `py313`, `mypy`, `html`, and `gix`, and not
`ruff`. The `py39` smoke check and `html` passed, and
`tox -e py313 -- --collect-only -q test/test_util.py` collected the
tests. In each of those environments, `smmap` 5.0.3 and `gitdb` 4.0.12
came from the local directories, per their `direct_url.json`.

Co-authored-by: Claude Opus 5.5 <[email protected]>
EliahKagan added a commit to EliahKagan/GitPython that referenced this pull request Oct 29, 2026
@EliahKagan @claude
build(tox): install the in-tree smmap and gitdb
0a8529a
Since 8a08afa (gitpython-developers#2179), `smmap` and `gitdb` are developed in this
repository, and CI installs them from there, together with GitPython,
with `pip install ./smmap ./gitdb ".[${EXTRAS}]"`. tox did not follow:
its environments install GitPython's wheel, and pip fetches `gitdb` and
`smmap` from PyPI to satisfy its `gitdb>=4.0.1,<5` requirement. So `tox`
could test GitPython against different `gitdb` and `smmap` code than CI
does, for example after a change to them that has not been released yet.

Add the two directories to `deps` in `[tool.tox.env_run_base]`, as
`{tox_root}/smmap` and `{tox_root}/gitdb`. tox installs `deps` before
the package's own dependencies, which they then satisfy, so pip keeps
them. Every environment that installs GitPython inherits this. `ruff`,
`format`, and `misc` set their own `deps` and skip installing
GitPython, so they are unaffected.

As with other `deps`, tox does not notice changes inside those
directories, so an existing environment needs `tox -r` to pick up
edits to `smmap` or `gitdb`.

Checked with tox 4.22.0 and 4.67.1. `tox config` shows the two paths
in the `deps` of `py39`, `py313`, `mypy`, `html`, and `gix`, and not
`ruff`. The `py39` smoke check and `html` passed, and
`tox -e py313 -- --collect-only -q test/test_util.py` collected the
tests. In each of those environments, `smmap` 5.0.3 and `gitdb` 4.0.12
came from the local directories, per their `direct_url.json`.

Co-authored-by: Claude Opus 5.5 <[email protected]>
EliahKagan added a commit to EliahKagan/GitPython that referenced this pull request Oct 29, 2026
@EliahKagan @claude
build(tox): install the in-tree smmap and gitdb
2c51ca5
Since 8a08afa (gitpython-developers#2179), `smmap` and `gitdb` are developed in this
repository, and CI installs them from there, together with GitPython,
with `pip install ./smmap ./gitdb ".[${EXTRAS}]"`. tox did not follow:
its environments install GitPython's wheel, and pip fetches `gitdb` and
`smmap` from PyPI to satisfy its `gitdb>=4.0.1,<5` requirement. So `tox`
could test GitPython against different `gitdb` and `smmap` code than CI
does, for example after a change to them that has not been released yet.

Add the two directories to `deps` in `[tool.tox.env_run_base]`, as
`{tox_root}/smmap` and `{tox_root}/gitdb`. tox installs `deps` before
the package's own dependencies, which they then satisfy, so pip keeps
them. Every environment that installs GitPython inherits this. `ruff`,
`format`, and `misc` set their own `deps` and skip installing
GitPython, so they are unaffected.

As with other `deps`, tox does not notice changes inside those
directories, so an existing environment needs `tox -r` to pick up
edits to `smmap` or `gitdb`.

Checked with tox 4.22.0 and 4.67.1. `tox config` shows the two paths
in the `deps` of `py39`, `py313`, `mypy`, `html`, and `gix`, and not
`ruff`. `html` and `py39`, which installs and imports GitPython,
passed, and `tox -e py313 -- --collect-only -q test/test_util.py`
collected the tests. In each of those environments, `smmap` 5.0.3 and
`gitdb` 4.0.12 came from the local directories, per their
`direct_url.json`.

Co-authored-by: Claude Opus 5.5 <[email protected]>
EliahKagan added a commit to EliahKagan/GitPython that referenced this pull request Oct 29, 2026
@EliahKagan @claude
build(tox): install the in-tree smmap and gitdb
7f50cfa
Since 8a08afa (gitpython-developers#2179), `smmap` and `gitdb` are developed in this
repository, and CI installs them from there, together with GitPython,
with `pip install ./smmap ./gitdb ".[${EXTRAS}]"`. tox did not follow:
its environments install GitPython's wheel, and pip fetches `gitdb` and
`smmap` from PyPI to satisfy its `gitdb>=4.0.1,<5` requirement. So `tox`
could test GitPython against different `gitdb` and `smmap` code than CI
does, for example after a change to them that has not been released yet.

Add the two directories to `deps` in `[testenv]`, as
`{tox_root}/smmap` and `{tox_root}/gitdb`. tox installs `deps` before
the package's own dependencies, which they then satisfy, so pip keeps
them. Every environment that installs GitPython inherits this. `ruff`,
`format`, and `misc` set their own `deps` and skip installing
GitPython, so they are unaffected.

As with other `deps`, tox does not notice changes inside those
directories, so an existing environment needs `tox -r` to pick up
edits to `smmap` or `gitdb`.

Checked with tox 4.22.0 and 4.67.1. `tox config` shows the two paths
in the `deps` of `py39`, `py313`, `mypy`, `html`, and `gix`, and not
`ruff`. `html` and `py39`, which installs and imports GitPython,
passed, and `tox -e py313 -- --collect-only -q test/test_util.py`
collected the tests. In each of those environments, `smmap` 5.0.3 and
`gitdb` 4.0.12 came from the local directories, per their
`direct_url.json`.

Co-authored-by: Claude Opus 5.5 <[email protected]>
EliahKagan added a commit to EliahKagan/GitPython that referenced this pull request Oct 30, 2026
@EliahKagan @claude
build(tox): install the in-tree smmap and gitdb
c5e175e
Since 8a08afa (gitpython-developers#2179), `smmap` and `gitdb` are developed in this
repository, and CI installs them from there, together with GitPython,
with `pip install ./smmap ./gitdb ".[${EXTRAS}]"`. tox did not follow:
its environments install GitPython's wheel, and pip fetches `gitdb` and
`smmap` from PyPI to satisfy its `gitdb>=4.0.1,<5` requirement. So `tox`
could test GitPython against different `gitdb` and `smmap` code than CI
does, for example after a change to them that has not been released yet.

Add the two directories to `deps` in `[testenv]`, as
`{tox_root}/smmap` and `{tox_root}/gitdb`. tox installs `deps` before
the package's own dependencies, which they then satisfy, so pip keeps
them. Every environment that installs GitPython inherits this. `ruff`,
`format`, and `misc` set their own `deps` and skip installing
GitPython, so they are unaffected.

As with other `deps`, tox does not notice changes inside those
directories, so an existing environment needs `tox -r` to pick up
edits to `smmap` or `gitdb`.

Checked with tox 4.22.0 and 4.67.1. `tox config` shows the two paths
in the `deps` of `py39`, `py313`, `mypy`, `html`, and `gix`, and not
`ruff`. `html` and `py39`, which installs and imports GitPython,
passed, and `tox -e py313 -- --collect-only -q test/test_util.py`
collected the tests. In each of those environments, `smmap` 5.0.3 and
`gitdb` 4.0.12 came from the local directories, per their
`direct_url.json`.

Co-authored-by: Claude Opus 5.5 <[email protected]>
EliahKagan added a commit to EliahKagan/GitPython that referenced this pull request Oct 30, 2026
@EliahKagan @claude
build(tox): install the in-tree smmap and gitdb
add7e80
Since 8a08afa (gitpython-developers#2179), `smmap` and `gitdb` are developed in this
repository, and CI installs them from there, together with GitPython,
with `pip install ./smmap ./gitdb ".[${EXTRAS}]"`. tox did not follow:
its environments install GitPython's wheel, and pip fetches `gitdb` and
`smmap` from PyPI to satisfy its `gitdb>=4.0.1,<5` requirement. So `tox`
could test GitPython against different `gitdb` and `smmap` code than CI
does, for example after a change to them that has not been released yet.

Add the two directories to `deps` in `[testenv]`, as
`{tox_root}/smmap` and `{tox_root}/gitdb`. tox installs `deps` before
the package's own dependencies, which they then satisfy, so pip keeps
them. Every environment that installs GitPython inherits this. `ruff`,
`format`, and `misc` set their own `deps` and skip installing
GitPython, so they are unaffected.

As with other `deps`, tox does not notice changes inside those
directories, so an existing environment needs `tox -r` to pick up
edits to `smmap` or `gitdb`.

Checked with tox 4.22.0 and 4.67.1. `tox config` shows the two paths
in the `deps` of `py39`, `py313`, `mypy`, `html`, and `gix`, and not
`ruff`. `html` and `py39`, which installs and imports GitPython,
passed, and `tox -e py313 -- --collect-only -q test/test_util.py`
collected the tests. In each of those environments, `smmap` 5.0.3 and
`gitdb` 4.0.12 came from the local directories, per their
`direct_url.json`.

Co-authored-by: Claude Opus 5.5 <[email protected]>
EliahKagan added a commit to EliahKagan/GitPython that referenced this pull request Oct 30, 2026
@EliahKagan @claude
build(tox): install the in-tree smmap and gitdb
4ed4473
Since 8a08afa (gitpython-developers#2179), `smmap` and `gitdb` are developed in this
repository, and CI installs them from there, together with GitPython,
with `pip install ./smmap ./gitdb ".[${EXTRAS}]"`. tox did not follow:
its environments install GitPython's wheel, and pip fetches `gitdb` and
`smmap` from PyPI to satisfy its `gitdb>=4.0.1,<5` requirement. So `tox`
could test GitPython against different `gitdb` and `smmap` code than CI
does, for example after a change to them that has not been released yet.

Add the two directories to `deps` in `[testenv]`, as
`{tox_root}/smmap` and `{tox_root}/gitdb`. tox installs `deps` before
the package's own dependencies, which they then satisfy, so pip keeps
them. Every environment that installs GitPython inherits this. `ruff`,
`format`, and `misc` set their own `deps` and skip installing
GitPython, so they are unaffected.

As with other `deps`, tox does not notice changes inside those
directories, so an existing environment needs `tox -r` to pick up
edits to `smmap` or `gitdb`.

Checked with tox 4.22.0 and 4.67.1. `tox config` shows the two paths
in the `deps` of `py39`, `py313`, `mypy`, `html`, and `gix`, and not
`ruff`. `html` and `py39`, which installs and imports GitPython,
passed, and `tox -e py313 -- --collect-only -q test/test_util.py`
collected the tests. In each of those environments, `smmap` 5.0.3 and
`gitdb` 4.0.12 came from the local directories, per their
`direct_url.json`.

Co-authored-by: Claude Opus 5.5 <[email protected]>
EliahKagan added a commit to EliahKagan/GitPython that referenced this pull request Oct 31, 2026
@EliahKagan @claude
build(tox): install the in-tree smmap and gitdb
ef3e8a0
Since 8a08afa (gitpython-developers#2179), `smmap` and `gitdb` are developed in this
repository, and CI installs them from there, together with GitPython,
with `pip install ./smmap ./gitdb ".[${EXTRAS}]"`. tox did not follow:
its environments install GitPython's wheel, and pip fetches `gitdb` and
`smmap` from PyPI to satisfy its `gitdb>=4.0.1,<5` requirement. So `tox`
could test GitPython against different `gitdb` and `smmap` code than CI
does, for example after a change to them that has not been released yet.

Add the two directories to `deps` in `[testenv]`, as
`{tox_root}/smmap` and `{tox_root}/gitdb`. tox installs `deps` before
the package's own dependencies, which they then satisfy, so pip keeps
them. Every environment that installs GitPython inherits this. `ruff`,
`format`, and `misc` set their own `deps` and skip installing
GitPython, so they are unaffected.

As with other `deps`, tox does not notice changes inside those
directories, so an existing environment needs `tox -r` to pick up
edits to `smmap` or `gitdb`.

Checked with tox 4.22.0 and 4.67.1. `tox config` shows the two paths
in the `deps` of `py39`, `py313`, `mypy`, `html`, and `gix`, and not
`ruff`. `html` and `py39`, which installs and imports GitPython,
passed, and `tox -e py313 -- --collect-only -q test/test_util.py`
collected the tests. In each of those environments, `smmap` 5.0.3 and
`gitdb` 4.0.12 came from the local directories, per their
`direct_url.json`.

Co-authored-by: Claude Opus 5.5 <[email protected]>
EliahKagan added a commit to EliahKagan/GitPython that referenced this pull request Oct 31, 2026
@EliahKagan @claude
build(tox): install the in-tree smmap and gitdb
76ae7fe
Since 8a08afa (gitpython-developers#2179), `smmap` and `gitdb` are developed in this
repository, and CI installs them from there, together with GitPython,
with `pip install ./smmap ./gitdb ".[${EXTRAS}]"`. tox did not follow:
its environments install GitPython's wheel, and pip fetches `gitdb` and
`smmap` from PyPI to satisfy its `gitdb>=4.0.1,<5` requirement. So `tox`
could test GitPython against different `gitdb` and `smmap` code than CI
does, for example after a change to them that has not been released yet.

Add the two directories to `deps` in `[testenv]`, as
`{tox_root}/smmap` and `{tox_root}/gitdb`. tox installs `deps` before
the package's own dependencies, which they then satisfy, so pip keeps
them. Every environment that installs GitPython inherits this. `ruff`,
`format`, and `misc` set their own `deps` and skip installing
GitPython, so they are unaffected.

As with other `deps`, tox does not notice changes inside those
directories, so an existing environment needs `tox -r` to pick up
edits to `smmap` or `gitdb`.

Checked with tox 4.22.0 and 4.67.1. `tox config` shows the two paths
in the `deps` of `py39`, `py313`, `mypy`, `html`, and `gix`, and not
`ruff`. `html` and `py39`, which installs and imports GitPython,
passed, and `tox -e py313 -- --collect-only -q test/test_util.py`
collected the tests. In each of those environments, `smmap` 5.0.3 and
`gitdb` 4.0.12 came from the local directories, per their
`direct_url.json`.

Co-authored-by: Claude Opus 5.5 <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

Copilot code review Copilot
Copilot review effort
Applies to this pull request for everyone.Learn more about Copilot code review.
Copilot left review comments
+1 more reviewer
@github-advanced-security github-advanced-security[bot] github-advanced-security[bot] left review comments
Reviewers whose approvals may not affect merge requirements

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

20 participants

@Byron @github-advanced-security @Harmon758 @cool-RR @tmcclintock @hugovk @kianmeng @carlwgeorge @RandyMcMillan @zwimer @otethal @EliahKagan @DeflateAwning @clavelan @Shortfinga @blablatdinov @edgarrmondragon @DEKHTIARJonathan @sminux
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.