From 2ce3fe7cef8910aadc2a2b39a3dab4242a751380 Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Thu, 22 Jan 2015 16:22:15 +0100 Subject: Intermediate commit on my way to get this finalized. Renamed context manager 'with_environment' to 'custom_environment'. On my way to implement sshkey test. --- git/cmd.py | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) (limited to 'git/cmd.py') diff --git a/git/cmd.py b/git/cmd.py index 91442470..a0319073 100644 --- a/git/cmd.py +++ b/git/cmd.py @@ -439,6 +439,10 @@ class Git(LazyMixin): super(Git, self)._set_cache_(attr) # END handle version info + def _sshkey_script_path(self): + this_dir = os.path.dirname(__file__) + return os.path.join(this_dir, 'scripts', 'ssh_wrapper.sh') + @property def working_dir(self): """:return: Git directory we are working on""" @@ -541,6 +545,7 @@ class Git(LazyMixin): # Start the process env = os.environ.copy() env["LC_MESSAGES"] = "C" + print(self._environment) env.update(self._environment) proc = Popen(command, @@ -633,7 +638,7 @@ class Git(LazyMixin): :return: dict that maps environment variables to their old values """ old_env = {} - for key, value in kwargs.iteritems(): + for key, value in kwargs.items(): # set value if it is None if value is not None: if key in self._environment: @@ -648,14 +653,14 @@ class Git(LazyMixin): return old_env @contextmanager - def with_environment(self, **kwargs): + def custom_environment(self, **kwargs): """ - A context manager around the above update_environment to restore the + A context manager around the above ``update_environment`` method to restore the environment back to its previous state after operation. ``Examples``:: - with self.with_environment(GIT_SSH='/bin/ssh_wrapper'): + with self.custom_environment(GIT_SSH='/bin/ssh_wrapper'): repo.remotes.origin.fetch() :param kwargs: see update_environment @@ -667,22 +672,20 @@ class Git(LazyMixin): self.update_environment(**old_env) @contextmanager - def sshkey(self, sshkey_file): + def sshkey(self, sshkey_file_path): """ A context manager to temporarily set an SSH key for all operations that run inside it. ``Examples``:: - with self.environment(GIT_SSH=project_dir+'deployment_key'): + with self.sshkey('deployment_key'): repo.remotes.origin.fetch() - :param sshkey_file: Path to a private SSH key file + :param sshkey_file_path: Path to a private SSH key file """ - this_dir = os.path.dirname(__file__) - ssh_wrapper = os.path.join(this_dir, '..', 'scripts', 'ssh_wrapper.py') - - with self.with_environment(GIT_SSH_KEY_FILE=sshkey_file, GIT_SSH=ssh_wrapper): + ssh_wrapper = self._sshkey_script_path() + with self.custom_environment(GIT_SSH_KEY_FILE=sshkey_file_path, GIT_SSH=ssh_wrapper): yield def transform_kwargs(self, split_single_char_options=False, **kwargs): -- cgit v1.2.1