There's a TOCTTOU in LooseObjectDB when storing a new object, that causes storing an object to fail with FileExistsError:
File "patch_tree.py", line 132, in write_tree
return self.db.store(istream).binsha
File ".venv/lib/python3.9/gitdb/db/git.py", line 77, in store
return self._loose_db.store(istream)
File ".venv/lib/python3.9/gitdb/db/loose.py", line 226, in store
mkdir(obj_dir)
FileExistsError: [Errno 17] File exists: '/tmp/tmp.flUcclypOQ/objects/a0'
There's a TOCTTOU in LooseObjectDB when storing a new object, that causes storing an object to fail with
FileExistsError
:The problem code is
and what is happening is
isdir()
returnsFalse
because the directory does not exist at that momentmkdir()
fails withFileExistsError
This can be avoided by using an EAFP pattern, e.g.