code: def do_vcs_install(manifest_in, versionfile_source, ipy):
      """Git-specific installation logic for Versioneer.
  
      For Git, this means creating/changing .gitattributes to mark _version.py
      for export-subst keyword substitution.
      """
      GITS = ["git"]
      if sys.platform == "win32":
          GITS = ["git.cmd", "git.exe"]
      files = [manifest_in, versionfile_source]
      if ipy:
          files.append(ipy)
      try:
          me = __file__
          if me.endswith(".pyc") or me.endswith(".pyo"):
              me = os.path.splitext(me)[0] + ".py"
          versioneer_file = os.path.relpath(me)
      except NameError:
          versioneer_file = "versioneer.py"
      files.append(versioneer_file)
      present = False
      try:
          f = open(".gitattributes")
          for line in f.readlines():
              if line.strip().startswith(versionfile_source):
                  if "export-subst" in line.strip().split()[1:]:
                      present = True
          f.close()
      except OSError:
          pass
      if not present:
          f = open(".gitattributes", "a+")
          f.write("%s export-subst\n" % versionfile_source)
          f.close()
          files.append(".gitattributes")
      run_command(GITS, ["add", "--"] + files)
  
imports: import configparser
  import errno
  import json
  import os
  import re
  import subprocess
  import sys
label_desc: Use image node_id 8 for calling a global function with example usage: do_vcs_install(manifest_in, versionfile_source, ipy) without return types