Skip to content

Improve Tutorial to warn about GitDB object database #2065

@sukima

Description

@sukima

I get a this error in our repo specifically with one commit which has 2064 files changed, 3030969 insertions(+).

Python 3.10.12 (main, May 27 2025, 17:12:29) [GCC 11.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import git
>>> repo = git.Repo('/path/to/my-repo', odbt=git.GitDB)
>>> commit = repo.head.commit
>>> iterator = commit.tree.traverse()
>>> while True:
...   next(iterator)
... 
                                                                   … lots of output …
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
  File "/home/username/.local/lib/python3.10/site-packages/git/objects/util.py", line 575, in _traverse
    addToStack(stack, item, branch_first, next_d)
  File "/home/username/.local/lib/python3.10/site-packages/git/objects/util.py", line 535, in addToStack
    lst = self._get_intermediate_items(item)
  File "/home/username/.local/lib/python3.10/site-packages/git/objects/tree.py", line 209, in _get_intermediate_items
    return tuple(index_object._iter_convert_to_object(index_object._cache))
  File "/home/username/.local/lib/python3.10/site-packages/gitdb/util.py", line 253, in __getattr__
    self._set_cache_(attr)
  File "/home/username/.local/lib/python3.10/site-packages/git/objects/tree.py", line 215, in _set_cache_
    ostream = self.repo.odb.stream(self.binsha)
  File "/home/username/.local/lib/python3.10/site-packages/gitdb/db/base.py", line 213, in stream
    return self._db_query(sha).stream(sha)
  File "/home/username/.local/lib/python3.10/site-packages/gitdb/db/pack.py", line 103, in stream
    return entity.stream_at_index(index)
  File "/home/username/.local/lib/python3.10/site-packages/gitdb/pack.py", line 784, in stream_at_index
    return self._object(None, True, index)
  File "/home/username/.local/lib/python3.10/site-packages/gitdb/pack.py", line 737, in _object
    streams = self.collect_streams_at_offset(offset)
  File "/home/username/.local/lib/python3.10/site-packages/gitdb/pack.py", line 871, in collect_streams_at_offset
    streams = self._pack.collect_streams(offset)
  File "/home/username/.local/lib/python3.10/site-packages/gitdb/pack.py", line 609, in collect_streams
    ostream = pack_object_at(c, offset, True)[1]
  File "/home/username/.local/lib/python3.10/site-packages/gitdb/pack.py", line 86, in pack_object_at
    data = cursor.use_region(offset).buffer()
  File "/home/username/.local/lib/python3.10/site-packages/smmap/mman.py", line 133, in use_region
    self._region = man._obtain_region(self._rlist, offset, size, flags, False)
  File "/home/username/.local/lib/python3.10/site-packages/smmap/mman.py", line 521, in _obtain_region
    self._collect_lru_region(window_size)
  File "/home/username/.local/lib/python3.10/site-packages/smmap/mman.py", line 338, in _collect_lru_region
    lru_region.increment_client_count(-1)
  File "/home/username/.local/lib/python3.10/site-packages/smmap/util.py", line 179, in increment_client_count
    self.release()
  File "/home/username/.local/lib/python3.10/site-packages/smmap/util.py", line 187, in release
    self._mf.close()
BufferError: cannot close exported pointers exist
>>> 

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions