From: Brandon Williams <bmwill@google.com>
To: git@vger.kernel.org
Cc: sbeller@google.com, jrnieder@gmail.com, gitster@pobox.com,
Brandon Williams <bmwill@google.com>
Subject: [PATCH v3 09/10] submodule: merge repo_read_gitmodules and gitmodules_config
Date: Tue, 18 Jul 2017 12:05:26 -0700 [thread overview]
Message-ID: <20170718190527.78049-10-bmwill@google.com> (raw)
In-Reply-To: <20170718190527.78049-1-bmwill@google.com>
Since 69aba5329 (submodule: add repo_read_gitmodules) there have been
two ways to load a repository's .gitmodules file:
'repo_read_gitmodules()' is used if you have a repository object you are
working with or 'gitmodules_config()' if you are implicitly working with
'the_repository'. Merge the logic of these two functions to remove
duplicate code.
In addition, 'repo_read_gitmodules()' can segfault by passing in a NULL
pointer to 'git_config_from_file()' if a repository doesn't have a
worktree. Instead check for the existence of a worktree before
attempting to load the .gitmodules file.
Signed-off-by: Brandon Williams <bmwill@google.com>
---
submodule.c | 37 +++++++++++++++++--------------------
1 file changed, 17 insertions(+), 20 deletions(-)
diff --git a/submodule.c b/submodule.c
index a5f825e37..ab0b74926 100644
--- a/submodule.c
+++ b/submodule.c
@@ -230,23 +230,6 @@ void load_submodule_cache(void)
git_config(submodule_config, NULL);
}
-void gitmodules_config(void)
-{
- const char *work_tree = get_git_work_tree();
- if (work_tree) {
- struct strbuf gitmodules_path = STRBUF_INIT;
- strbuf_addstr(&gitmodules_path, work_tree);
- strbuf_addstr(&gitmodules_path, "/.gitmodules");
- if (read_cache() < 0)
- die("index file corrupt");
-
- if (!is_gitmodules_unmerged(&the_index))
- git_config_from_file(git_modules_config,
- gitmodules_path.buf, NULL);
- strbuf_release(&gitmodules_path);
- }
-}
-
static int gitmodules_cb(const char *var, const char *value, void *data)
{
struct repository *repo = data;
@@ -255,10 +238,24 @@ static int gitmodules_cb(const char *var, const char *value, void *data)
void repo_read_gitmodules(struct repository *repo)
{
- char *gitmodules_path = repo_worktree_path(repo, ".gitmodules");
+ if (repo->worktree) {
+ char *gitmodules;
+
+ if (repo_read_index(repo) < 0)
+ return;
- git_config_from_file(gitmodules_cb, gitmodules_path, repo);
- free(gitmodules_path);
+ gitmodules = repo_worktree_path(repo, GITMODULES_FILE);
+
+ if (!is_gitmodules_unmerged(repo->index))
+ git_config_from_file(gitmodules_cb, gitmodules, repo);
+
+ free(gitmodules);
+ }
+}
+
+void gitmodules_config(void)
+{
+ repo_read_gitmodules(the_repository);
}
void gitmodules_config_sha1(const unsigned char *commit_sha1)
--
2.13.2.932.g7449e964c-goog
next prev parent reply other threads:[~2017-07-18 19:05 UTC|newest]
Thread overview: 68+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-07-11 22:04 [PATCH 0/3] Convert grep to recurse in-process Brandon Williams
2017-07-11 22:04 ` [PATCH 1/3] repo_read_index: don't discard the index Brandon Williams
2017-07-11 23:51 ` Jonathan Nieder
2017-07-12 17:27 ` Brandon Williams
2017-07-11 23:58 ` Stefan Beller
2017-07-12 17:23 ` Brandon Williams
2017-07-11 22:04 ` [PATCH 2/3] setup: have the_repository use the_index Brandon Williams
2017-07-12 0:00 ` Jonathan Nieder
2017-07-12 0:07 ` Stefan Beller
2017-07-12 17:30 ` Brandon Williams
2017-07-12 0:11 ` Junio C Hamano
2017-07-12 18:01 ` Brandon Williams
2017-07-12 20:38 ` Junio C Hamano
2017-07-12 21:33 ` Jonathan Nieder
2017-07-12 21:40 ` Junio C Hamano
2017-07-18 21:34 ` Junio C Hamano
2017-07-11 22:04 ` [PATCH 3/3] grep: recurse in-process using 'struct repository' Brandon Williams
2017-07-11 22:44 ` Jacob Keller
2017-07-12 18:54 ` Brandon Williams
2017-07-12 0:04 ` Stefan Beller
2017-07-12 18:56 ` Brandon Williams
2017-07-12 0:25 ` Jonathan Nieder
2017-07-12 18:49 ` Brandon Williams
2017-07-12 7:42 ` [PATCH 0/3] Convert grep to recurse in-process Jeff King
2017-07-12 18:06 ` Brandon Williams
2017-07-12 18:17 ` Jeff King
2017-07-12 18:24 ` Jonathan Nieder
2017-07-12 18:33 ` Jeff King
2017-07-12 18:09 ` Jonathan Nieder
2017-07-12 18:17 ` Stefan Beller
2017-07-12 18:27 ` Jeff King
2017-07-14 22:28 ` [PATCH v2 " Brandon Williams
2017-07-14 22:28 ` [PATCH v2 1/3] repo_read_index: don't discard the index Brandon Williams
2017-07-14 22:28 ` [PATCH v2 2/3] repository: have the_repository use the_index Brandon Williams
2017-07-14 22:28 ` [PATCH v2 3/3] grep: recurse in-process using 'struct repository' Brandon Williams
2017-07-18 19:05 ` [PATCH v3 00/10] Convert grep to recurse in-process Brandon Williams
2017-07-18 19:05 ` [PATCH v3 01/10] repo_read_index: don't discard the index Brandon Williams
2017-07-18 19:05 ` [PATCH v3 02/10] repository: have the_repository use the_index Brandon Williams
2017-07-18 19:05 ` [PATCH v3 03/10] cache.h: add GITMODULES_FILE macro Brandon Williams
2017-07-31 23:11 ` [PATCH] convert any hard coded .gitmodules file string to the MACRO Stefan Beller
2017-08-01 13:14 ` Jeff Hostetler
2017-08-01 17:35 ` Stefan Beller
2017-08-01 20:26 ` Junio C Hamano
2017-08-02 17:26 ` Brandon Williams
2017-08-02 17:46 ` Brandon Williams
2017-07-18 19:05 ` [PATCH v3 04/10] config: add config_from_gitmodules Brandon Williams
2017-07-18 19:05 ` [PATCH v3 05/10] submodule: remove submodule.fetchjobs from submodule-config parsing Brandon Williams
2017-07-18 19:05 ` [PATCH v3 06/10] submodule: remove fetch.recursesubmodules " Brandon Williams
2017-07-18 19:05 ` [PATCH v3 07/10] submodule: check for unstaged .gitmodules outside of config parsing Brandon Williams
2017-07-31 23:41 ` Stefan Beller
2017-08-02 17:41 ` Brandon Williams
2017-08-02 18:00 ` Brandon Williams
2017-07-18 19:05 ` [PATCH v3 08/10] submodule: check for unmerged " Brandon Williams
2017-07-18 19:05 ` Brandon Williams [this message]
2017-07-18 19:05 ` [PATCH v3 10/10] grep: recurse in-process using 'struct repository' Brandon Williams
2017-07-18 19:36 ` [PATCH v3 00/10] Convert grep to recurse in-process Junio C Hamano
2017-07-18 20:06 ` Brandon Williams
2017-08-02 19:49 ` [PATCH v4 " Brandon Williams
2017-08-02 19:49 ` [PATCH v4 01/10] repo_read_index: don't discard the index Brandon Williams
2017-08-02 19:49 ` [PATCH v4 02/10] repository: have the_repository use the_index Brandon Williams
2017-08-02 19:49 ` [PATCH v4 03/10] cache.h: add GITMODULES_FILE macro Brandon Williams
2017-08-02 19:49 ` [PATCH v4 04/10] config: add config_from_gitmodules Brandon Williams
2017-08-02 19:49 ` [PATCH v4 05/10] submodule: remove submodule.fetchjobs from submodule-config parsing Brandon Williams
2017-08-02 19:49 ` [PATCH v4 06/10] submodule: remove fetch.recursesubmodules " Brandon Williams
2017-08-02 19:49 ` [PATCH v4 07/10] submodule: check for unstaged .gitmodules outside of config parsing Brandon Williams
2017-08-02 19:49 ` [PATCH v4 08/10] submodule: check for unmerged " Brandon Williams
2017-08-02 19:49 ` [PATCH v4 09/10] submodule: merge repo_read_gitmodules and gitmodules_config Brandon Williams
2017-08-02 19:49 ` [PATCH v4 10/10] grep: recurse in-process using 'struct repository' Brandon Williams
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170718190527.78049-10-bmwill@google.com \
--to=bmwill@google.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=jrnieder@gmail.com \
--cc=sbeller@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.