class_docstr: Base class for repository detection 
class_docstr_tok: ["Base","class","for","repository","detection"]
docstr: Get repository information.
  :param path: Path to repository
  :param include_diff: Whether to include the diff command's output (if available)
  :param diff_from_remote: Whether to store the remote diff/commit based on the remote commit (not local commit)
  :return: RepoInfo instance
docstr_tok: ["Get","repository","information",".",":","param","path",":","Path","to","repository",":","param","include_diff",":","Whether","to","include","the","diff","command","'s","output","(","if","available",")",":","param","diff_from_remote",":","Whether","to","store","the","remote","diff\/commit","based","on","the","remote","commit","(","not","local","commit",")",":","return",":","RepoInfo","instance"]
code: def get_info(self, path, include_diff=False, diff_from_remote=False):
      """
      Get repository information.
      :param path: Path to repository
      :param include_diff: Whether to include the diff command's output (if available)
      :param diff_from_remote: Whether to store the remote diff/commit based on the remote commit (not local commit)
      :return: RepoInfo instance
      """
      info = self._get_info(
          path, include_diff, diff_from_remote=diff_from_remote
      )
      return self._post_process_info(info)
  
imports: import abc
  import os
  from subprocess import call, CalledProcessError
  import attr
  import six
  from pathlib2 import Path
  from ....config.defs import VCS_REPO_TYPE, VCS_DIFF, VCS_STATUS, VCS_ROOT, VCS_BRANCH, VCS_COMMIT_ID, VCS_REPOSITORY_URL
  from ....debugging import get_logger
  from .util import get_command_output
label_desc: Use image node_id 7 for calling the Detector obj's underlying member method code with example usage: obj.get_info(path, include_diff, diff_from_remote) and returns: self