Merge branch 'bw/grep-recurse-submodules'
authorJunio C Hamano <gitster@pobox.com>
Mon, 6 Nov 2017 04:11:27 +0000 (13:11 +0900)
committerJunio C Hamano <gitster@pobox.com>
Mon, 6 Nov 2017 04:11:27 +0000 (13:11 +0900)
A broken access to object databases in recent update to "git grep
--recurse-submodules" has been fixed.

* bw/grep-recurse-submodules:
grep: take the read-lock when adding a submodule

1  2 
builtin/grep.c
diff --combined builtin/grep.c
index 2d65f27d01f3da772f7bad21f101fdc0af0102ed,6946cf4bbc825cbd1335ab5464428f54483701f8..5a6cfe6b45b06b6b75ea399a83cb8dcf7e197141
@@@ -431,7 -431,9 +431,9 @@@ static int grep_submodule(struct grep_o
         * store is no longer global and instead is a member of the repository
         * object.
         */
+       grep_read_lock();
        add_to_alternates_memory(submodule.objectdir);
+       grep_read_unlock();
  
        if (oid) {
                struct object *object;
@@@ -643,7 -645,7 +645,7 @@@ static int grep_objects(struct grep_op
                /* load the gitmodules file for this rev */
                if (recurse_submodules) {
                        submodule_free();
 -                      gitmodules_config_sha1(real_obj->oid.hash);
 +                      gitmodules_config_oid(&real_obj->oid);
                }
                if (grep_object(opt, pathspec, real_obj, list->objects[i].name, list->objects[i].path,
                                repo)) {
@@@ -983,8 -985,8 +985,8 @@@ int cmd_grep(int argc, const char **arg
                        break;
                }
  
 -              if (get_sha1_with_context(arg, GET_SHA1_RECORD_PATH,
 -                                        oid.hash, &oc)) {
 +              if (get_oid_with_context(arg, GET_OID_RECORD_PATH,
 +                                       &oid, &oc)) {
                        if (seen_dashdash)
                                die(_("unable to resolve revision: %s"), arg);
                        break;
        }
  #endif
  
 -      if (recurse_submodules) {
 -              gitmodules_config();
 -      }
 -
        if (show_in_pager && (cached || list.nr))
                die(_("--open-files-in-pager only works on the worktree"));