diff options
author | Sebastian Thiel <byronimo@gmail.com> | 2017-02-25 10:32:32 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-02-25 10:32:32 +0100 |
commit | 0181a40db75bb27277bec6e0802f09a45f84ffb3 (patch) | |
tree | 978e1228a90c1c798fc0203ae173a41bc6cb2aa0 /git/repo/base.py | |
parent | 88732b694068704cb151e0c4256a8e8d1adaff38 (diff) | |
parent | f858c449a993124939e9082dcea796c5a13d0a74 (diff) | |
download | gitpython-0181a40db75bb27277bec6e0802f09a45f84ffb3.tar.gz |
Merge pull request #555 from ankostis/cntxtmman
Retrofit `repo` class as context-man to cleanup global mman on repo-delete
Diffstat (limited to 'git/repo/base.py')
-rw-r--r-- | git/repo/base.py | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/git/repo/base.py b/git/repo/base.py index 85f2d036..ace5223f 100644 --- a/git/repo/base.py +++ b/git/repo/base.py @@ -33,6 +33,8 @@ from git.util import Actor, finalize_process, decygpath, hex_to_bin import os.path as osp from .fun import rev_parse, is_git_dir, find_submodule_git_dir, touch +import gc +import gitdb log = logging.getLogger(__name__) @@ -177,9 +179,21 @@ class Repo(object): args.append(self.git) self.odb = odbt(*args) + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_value, traceback): + self.close() + def __del__(self): + self.close() + + def close(self): if self.git: self.git.clear_cache() + gc.collect() + gitdb.util.mman.collect() + gc.collect() def __eq__(self, rhs): if isinstance(rhs, Repo): |