class_docstr: TODO: Reimplement functions with robust library: https://github.com/gitpython-developers/GitPython
  
  This CodeDriver manages source control management for the project using git
class_docstr_tok: ["TODO",":","Reimplement","functions","with","robust","library",":","https",":","\/\/github.com\/gitpython-developers\/GitPython","This","CodeDriver","manages","source","control","management","for","the","project","using","git"]
docstr: Git commit wrapper
  
  Parameters
  ----------
  options: list
      List of strings for the command (e.g. ["-m", "hello"])
  
  Returns
  -------
  bool
      True if new commit was created, False if no commit was created
  
  Raises
  ------
  GitExecutionError
      If any errors occur in running git
docstr_tok: ["Git","commit","wrapper","Parameters","--","--","--","--","--","options",":","list","List","of","strings","for","the","command","(","e.g",".","[","``","-m","''",",","``","hello","''","]",")","Returns","--","--","--","-","bool","True","if","new","commit","was","created",",","False","if","no","commit","was","created","Raises","--","--","--","GitExecutionError","If","any","errors","occur","in","running","git"]
code: def commit(self, options):
      """Git commit wrapper
  
      Parameters
      ----------
      options: list
          List of strings for the command (e.g. ["-m", "hello"])
  
      Returns
      -------
      bool
          True if new commit was created, False if no commit was created
  
      Raises
      ------
      GitExecutionError
          If any errors occur in running git
      """
      try:
          process = subprocess.Popen(
              [self.execpath, "commit"] + options,
              stdout=subprocess.PIPE,
              stderr=subprocess.PIPE,
              cwd=self.filepath,
          )
          stdout, stderr = process.communicate()
          stdout, stderr = stdout.decode(), stderr.decode()
          if "nothing" in stdout:
              return False
          if process.returncode > 0:
              raise GitExecutionError(
                  __(
                      "error",
                      "controller.code.driver.git.commit",
                      (options, stderr),
                  )
              )
      except subprocess.CalledProcessError as e:
          raise GitExecutionError(
              __(
                  "error",
                  "controller.code.driver.git.commit",
                  (options, str(e)),
              )
          )
      return True
  
imports: import os
  import shutil
  import subprocess
  import semver
  from io import open
  from giturlparse import parse
  from datmo.core.util.i18n import get
  from datmo.core.util.exceptions import PathDoesNotExist, GitUrlArgumentError, GitExecutionError, FileIOError, CommitDoesNotExist, CommitFailed, DatmoFolderInWorkTree, UnstagedChanges
  from datmo.core.controller.code.driver import CodeDriver
  from datmo.config import Config
label_desc: Use image node_id 16 for calling the GitCodeDriver obj's underlying member method code with example usage: obj.commit(options) and returns: True, False