def scm
      return @scm if @scm
      raise NoSuchPathError unless File.exists?(path)
      raise InvalidRepositoryError unless File.exists?(File.join(path, '.git'))
      @scm = Git.open(path)
    end
def scm
      return @scm if @scm
      raise NoSuchPathError unless File.exists?(path)
      raise InvalidRepositoryError unless File.exists?(File.join(path, '.git'))
      @scm = Git.open(path)
    end
version control system wrapper