code: def __call__(
      self,
      autostage: Optional[bool] = None,
      quiet: Optional[bool] = None,
  ) -> Iterator["SCMContext"]:
      try:
          yield self
      except Exception:
          for path in self.ignored_paths:
              self.ignore_remove(path)
          raise
      finally:
          self.ignored_paths = []
  
      if not self.files_to_track:
          return
  
      if autostage is None:
          autostage = self.autostage
      if quiet is None:
          quiet = self.quiet
  
      from dvc.scm import NoSCM
  
      if autostage:
          self.track_changed_files()
      elif (
          not quiet
          and not isinstance(self.scm, NoSCM)
          and logger.isEnabledFor(logging.INFO)
      ):
          add_cmd = self._make_git_add_cmd(self.files_to_track)
          logger.info(
              "\nTo track the changes with git, run:\n\n%s", add_cmd
          )
          logger.info(
              "\nTo enable auto staging, run:\n\n\tdvc config core.autostage true"
          )
  
      self.files_to_track = set()
  
file_path: dvc/dvc/repo/scm_context.py
imports: import logging
  import shlex
  from contextlib import contextmanager
  from functools import wraps
  from typing import TYPE_CHECKING, Any, Dict, Iterable, Iterator, List, Optional, Set, Union
  from dvc.log import logger
  from dvc.utils import relpath
  from dvc.utils.collections import ensure_list
label_desc: Use image node_id 8 for calling the SCMContext obj's underlying member method code with example usage: obj.__call__(autostage, quiet) without return types