diff options
author | Sebastian Thiel <byronimo@gmail.com> | 2010-11-21 19:17:48 +0100 |
---|---|---|
committer | Sebastian Thiel <byronimo@gmail.com> | 2010-11-21 19:17:48 +0100 |
commit | fafe8a77db75083de3e7af92185ecdb7f2d542d3 (patch) | |
tree | 0b2d17ca62fc1f986bbaefe8ca6ea641e3fa2d8d /lib/git/index/util.py | |
parent | 0b813371f5a8af95152cae109d28c7c97bfaf79f (diff) | |
download | gitpython-fafe8a77db75083de3e7af92185ecdb7f2d542d3.tar.gz |
moved all contents, incl. submodule gitdb, up to the root directory
Diffstat (limited to 'lib/git/index/util.py')
-rw-r--r-- | lib/git/index/util.py | 86 |
1 files changed, 0 insertions, 86 deletions
diff --git a/lib/git/index/util.py b/lib/git/index/util.py deleted file mode 100644 index bd5fcc03..00000000 --- a/lib/git/index/util.py +++ /dev/null @@ -1,86 +0,0 @@ -"""Module containing index utilities""" -import struct -import tempfile -import os - -__all__ = ( 'TemporaryFileSwap', 'post_clear_cache', 'default_index', 'git_working_dir' ) - -#{ Aliases -pack = struct.pack -unpack = struct.unpack - - -#} END aliases - -class TemporaryFileSwap(object): - """Utility class moving a file to a temporary location within the same directory - and moving it back on to where on object deletion.""" - __slots__ = ("file_path", "tmp_file_path") - - def __init__(self, file_path): - self.file_path = file_path - self.tmp_file_path = self.file_path + tempfile.mktemp('','','') - # it may be that the source does not exist - try: - os.rename(self.file_path, self.tmp_file_path) - except OSError: - pass - - def __del__(self): - if os.path.isfile(self.tmp_file_path): - if os.name == 'nt' and os.path.exists(self.file_path): - os.remove(self.file_path) - os.rename(self.tmp_file_path, self.file_path) - # END temp file exists - - -#{ Decorators - -def post_clear_cache(func): - """Decorator for functions that alter the index using the git command. This would - invalidate our possibly existing entries dictionary which is why it must be - deleted to allow it to be lazily reread later. - - :note: - This decorator will not be required once all functions are implemented - natively which in fact is possible, but probably not feasible performance wise. - """ - def post_clear_cache_if_not_raised(self, *args, **kwargs): - rval = func(self, *args, **kwargs) - self._delete_entries_cache() - return rval - - # END wrapper method - post_clear_cache_if_not_raised.__name__ = func.__name__ - return post_clear_cache_if_not_raised - -def default_index(func): - """Decorator assuring the wrapped method may only run if we are the default - repository index. This is as we rely on git commands that operate - on that index only. """ - def check_default_index(self, *args, **kwargs): - if self._file_path != self._index_path(): - raise AssertionError( "Cannot call %r on indices that do not represent the default git index" % func.__name__ ) - return func(self, *args, **kwargs) - # END wrpaper method - - check_default_index.__name__ = func.__name__ - return check_default_index - -def git_working_dir(func): - """Decorator which changes the current working dir to the one of the git - repository in order to assure relative paths are handled correctly""" - def set_git_working_dir(self, *args, **kwargs): - cur_wd = os.getcwd() - os.chdir(self.repo.working_tree_dir) - try: - return func(self, *args, **kwargs) - finally: - os.chdir(cur_wd) - # END handle working dir - # END wrapper - - set_git_working_dir.__name__ = func.__name__ - return set_git_working_dir - -#} END decorators |