submodule refactor: use strbuf_git_path_submodule() in add_submodule_odb()
authorMax Kirillov <max@max630.net>
Sun, 13 Sep 2015 22:17:41 +0000 (01:17 +0300)
committerJunio C Hamano <gitster@pobox.com>
Mon, 14 Sep 2015 18:03:46 +0000 (11:03 -0700)
Functions which directly operate submodule's object database do not
handle the case when the submodule is linked worktree (which are
introduced in c7b3a3d2fe). Instead of fixing the path calculation use
already existing strbuf_git_path_submodule() function without changing
overall behaviour. Then it will be possible to modify only that function
whenever we need to change real location of submodule's repository
content.

Helped-by: Jeff King <peff@peff.net>
Signed-off-by: Max Kirillov <max@max630.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
submodule.c
index 245ed4dfbb6a3d54adbd41d5de0ea64cf38dc8a3..5e5a46fe2ab765ff5ecec01a9bc46351fe596837 100644 (file)
@@ -122,15 +122,8 @@ static int add_submodule_odb(const char *path)
        struct strbuf objects_directory = STRBUF_INIT;
        struct alternate_object_database *alt_odb;
        int ret = 0;
-       const char *git_dir;
 
-       strbuf_addf(&objects_directory, "%s/.git", path);
-       git_dir = read_gitfile(objects_directory.buf);
-       if (git_dir) {
-               strbuf_reset(&objects_directory);
-               strbuf_addstr(&objects_directory, git_dir);
-       }
-       strbuf_addstr(&objects_directory, "/objects/");
+       strbuf_git_path_submodule(&objects_directory, path, "objects/");
        if (!is_directory(objects_directory.buf)) {
                ret = -1;
                goto done;