def git_working_dir(func):
 @wraps(func)
 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)
 return set_git_working_dir

def git_working_dir ( func ) : @ wraps ( func ) 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 ) return set_git_working_dir
decorator which changes the current working dir to the one of the git repository in order to assure relative paths are handled correctly .