code: def test_GitRepo_gitignore(path=None):
      gr = GitRepo(path, create=True)
      sub = GitRepo(op.join(path, "ignore-sub.me"))
      # we need to commit something, otherwise add_submodule
      # will already refuse the submodule for having no commit
      sub.add("a_file.txt")
      sub.commit()
  
      from ..exceptions import GitIgnoreError
  
      with open(op.join(path, ".gitignore"), "w") as f:
          f.write("*.me")
  
      with assert_raises(GitIgnoreError) as cme:
          gr.add("ignore.me")
      eq_(cme.value.paths, ["ignore.me"])
  
      with assert_raises(GitIgnoreError) as cme:
          gr.add(
              [
                  "ignore.me",
                  "dontigno.re",
                  op.join("ignore-sub.me", "a_file.txt"),
              ]
          )
      eq_(set(cme.value.paths), {"ignore.me", "ignore-sub.me"})
  
      eq_(gr.get_gitattributes(".")["."], {})
  
imports: import logging
  import os
  import os.path
  import sys
  import pytest
  from datalad import get_encoding_info
  from datalad.cmd import StdOutCapture, StdOutErrCapture, WitlessRunner
  from datalad.support.exceptions import CommandError, FileNotInRepositoryError, InvalidGitRepositoryError, NoSuchPathError, PathKnownToRepositoryError
  from datalad.support.external_versions import external_versions
  from datalad.support.gitrepo import GitRepo, _normalize_path, normalize_paths, to_options
  from datalad.support.sshconnector import get_connection_hash
  from datalad.tests.utils_pytest import DEFAULT_BRANCH, DEFAULT_REMOTE, SkipTest, assert_cwd_unchanged, assert_equal, assert_false, assert_in, assert_in_results, assert_is_instance, assert_not_equal, assert_not_in, assert_raises, assert_repo_status, assert_true, create_tree, eq_, get_most_obscure_supported_name, integration, neq_, ok_, skip_if_no_network, skip_if_on_windows, skip_nomultiplex_ssh, slow, swallow_logs, with_tempfile, with_tree, xfail_buggy_annex_info
  from datalad.utils import Path, chpwd, getpwd, on_windows, rmtree
label_desc: Use image node_id 37 for calling a global function with example usage: test_GitRepo_gitignore(path) without return types