new_contents: import os
  import shlex
  from collections import namedtuple
  from subprocess import Popen, PIPE
  
  CmdResult = namedtuple("CmdResult", "status stdout stderr")
  
  class Repo:
      def __init__(self, repo_dir, git_cmd="git", default_timeout=None):
          self.repo_dir = repo_dir
          self.git_cmd = git_cmd
          self.default_timeout = default_timeout
  
      def __getattr__(self, name):
          name = name.replace("_", "-")
          def cmdcaller(*args, cmd=None, **kwargs):
              cmdargs = shlex.split(cmd) if cmd else args
              return self.cmd(*((self.git_cmd, name) + tuple(cmdargs)), **kwargs)
          return cmdcaller
  
      def cmd(self, *args, timeout=None, env=None):
          timeout = timeout if timeout else default_timeout
          proc = self.popen_cmd(*args, env=env)
          outs, errs = proc.communicate(timeout=timeout)
          status = proc.wait()
          return CmdResult(status, outs, errs)
  
      def popen_cmd(self, *args, env=None):
          return Popen(args, stdout=PIPE, stderr=PIPE, cwd=self.repo_dir, env=env)
  
      def is_bare(self):
          result = self.rev_parse("--is-bare-repository")
          return result.stdout.startswith(b"true")
  
      def is_repo(self):
          return self.rev_parse("--git-dir").status == 0
  
  
subject: add simple git helper, more controllable then gitpython