Skip to content

Can't add to index twice in a row in 3.1.25 (PermissionError) #1395

Description

@zhiltsov-max

Hi, we've observed a regression in 3.1.25 (it doesn't happen in 3.1.24).

Running the following script (Python 3.8.6, Windows 10):

importgitrepo=git.Repo.init('test_git')
withopen('test_git/f.txt', 'w') asf:
f.write('aa')
withopen('test_git/g.txt', 'w') asf:
f.write('bb')
repo.index.add('f.txt')
repo.index.add('g.txt') # < fails hererepo.index.commit('initial commit')
repo.close()

Produces:

(venv) PS C:\test> python .\test_git_close.py
Traceback (most recent call last):
File ".\test_git_close.py", line 9, in<module>
repo.index.add('g.txt')
File "venv\lib\site-packages\git\index\base.py", line 823, in add
self.write(ignore_extension_data=not write_extension_data)
File "venv\lib\site-packages\git\index\base.py", line 221, in write
lfd.commit()
File "venv\lib\site-packages\gitdb\util.py", line 359, in commit
self._end_writing(successful=True)
File "venv\lib\site-packages\gitdb\util.py", line 384, in _end_writing
remove(self._filepath)
File "venv\lib\site-packages\gitdb\util.py", line 83, in remove
return _retry(os.remove, *args, **kwargs)
File "venv\lib\site-packages\gitdb\util.py", line 77, in _retry
return func(*args, **kwargs)
PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'test_git\\.git\\index'

Can be related to #1333

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions