From: Brandon Williams <bmwill@google.com>
To: git@vger.kernel.org
Cc: gitster@pobox.com, Brandon Williams <bmwill@google.com>
Subject: [PATCH 06/17] tree: convert read_tree to take an index parameter
Date: Mon, 12 Jun 2017 15:13:57 -0700 [thread overview]
Message-ID: <20170612221408.173876-7-bmwill@google.com> (raw)
In-Reply-To: <20170612221408.173876-1-bmwill@google.com>
Signed-off-by: Brandon Williams <bmwill@google.com>
---
builtin/ls-files.c | 2 +-
tree.c | 28 ++++++++++++++++++----------
tree.h | 3 ++-
3 files changed, 21 insertions(+), 12 deletions(-)
diff --git a/builtin/ls-files.c b/builtin/ls-files.c
index 0044abf66..93e46ab5f 100644
--- a/builtin/ls-files.c
+++ b/builtin/ls-files.c
@@ -460,7 +460,7 @@ void overlay_tree_on_cache(const char *tree_name, const char *prefix)
PATHSPEC_PREFER_CWD, prefix, matchbuf);
} else
memset(&pathspec, 0, sizeof(pathspec));
- if (read_tree(tree, 1, &pathspec))
+ if (read_tree(tree, 1, &pathspec, &the_index))
die("unable to read tree entries %s", tree_name);
for (i = 0; i < active_nr; i++) {
diff --git a/tree.c b/tree.c
index 603b29ee8..dd69423d9 100644
--- a/tree.c
+++ b/tree.c
@@ -1,3 +1,4 @@
+#define NO_THE_INDEX_COMPATIBILITY_MACROS
#include "cache.h"
#include "cache-tree.h"
#include "tree.h"
@@ -8,7 +9,11 @@
const char *tree_type = "tree";
-static int read_one_entry_opt(const unsigned char *sha1, const char *base, int baselen, const char *pathname, unsigned mode, int stage, int opt)
+static int read_one_entry_opt(struct index_state *istate,
+ const unsigned char *sha1,
+ const char *base, int baselen,
+ const char *pathname,
+ unsigned mode, int stage, int opt)
{
int len;
unsigned int size;
@@ -27,14 +32,15 @@ static int read_one_entry_opt(const unsigned char *sha1, const char *base, int b
memcpy(ce->name, base, baselen);
memcpy(ce->name + baselen, pathname, len+1);
hashcpy(ce->oid.hash, sha1);
- return add_cache_entry(ce, opt);
+ return add_index_entry(istate, ce, opt);
}
static int read_one_entry(const unsigned char *sha1, struct strbuf *base,
const char *pathname, unsigned mode, int stage,
void *context)
{
- return read_one_entry_opt(sha1, base->buf, base->len, pathname,
+ struct index_state *istate = context;
+ return read_one_entry_opt(istate, sha1, base->buf, base->len, pathname,
mode, stage,
ADD_CACHE_OK_TO_ADD|ADD_CACHE_SKIP_DFCHECK);
}
@@ -47,7 +53,8 @@ static int read_one_entry_quick(const unsigned char *sha1, struct strbuf *base,
const char *pathname, unsigned mode, int stage,
void *context)
{
- return read_one_entry_opt(sha1, base->buf, base->len, pathname,
+ struct index_state *istate = context;
+ return read_one_entry_opt(istate, sha1, base->buf, base->len, pathname,
mode, stage,
ADD_CACHE_JUST_APPEND);
}
@@ -144,7 +151,8 @@ static int cmp_cache_name_compare(const void *a_, const void *b_)
ce2->name, ce2->ce_namelen, ce_stage(ce2));
}
-int read_tree(struct tree *tree, int stage, struct pathspec *match)
+int read_tree(struct tree *tree, int stage, struct pathspec *match,
+ struct index_state *istate)
{
read_tree_fn_t fn = NULL;
int i, err;
@@ -164,23 +172,23 @@ int read_tree(struct tree *tree, int stage, struct pathspec *match)
* do it the original slow way, otherwise, append and then
* sort at the end.
*/
- for (i = 0; !fn && i < active_nr; i++) {
- const struct cache_entry *ce = active_cache[i];
+ for (i = 0; !fn && i < istate->cache_nr; i++) {
+ const struct cache_entry *ce = istate->cache[i];
if (ce_stage(ce) == stage)
fn = read_one_entry;
}
if (!fn)
fn = read_one_entry_quick;
- err = read_tree_recursive(tree, "", 0, stage, match, fn, NULL);
+ err = read_tree_recursive(tree, "", 0, stage, match, fn, istate);
if (fn == read_one_entry || err)
return err;
/*
* Sort the cache entry -- we need to nuke the cache tree, though.
*/
- cache_tree_free(&active_cache_tree);
- QSORT(active_cache, active_nr, cmp_cache_name_compare);
+ cache_tree_free(&istate->cache_tree);
+ QSORT(istate->cache, istate->cache_nr, cmp_cache_name_compare);
return 0;
}
diff --git a/tree.h b/tree.h
index 0d4734b94..744e6dc2a 100644
--- a/tree.h
+++ b/tree.h
@@ -34,6 +34,7 @@ extern int read_tree_recursive(struct tree *tree,
int stage, const struct pathspec *pathspec,
read_tree_fn_t fn, void *context);
-extern int read_tree(struct tree *tree, int stage, struct pathspec *pathspec);
+extern int read_tree(struct tree *tree, int stage, struct pathspec *pathspec,
+ struct index_state *istate);
#endif /* TREE_H */
--
2.13.1.518.g3df882009-goog
next prev parent reply other threads:[~2017-06-12 22:15 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-12 22:13 [PATCH 00/17] convert ls-files internals to pass around an index Brandon Williams
2017-06-12 22:13 ` [PATCH 01/17] convert: convert get_cached_convert_stats_ascii to take " Brandon Williams
2017-06-12 22:13 ` [PATCH 02/17] convert: convert crlf_to_git " Brandon Williams
2017-06-12 22:13 ` [PATCH 03/17] convert: convert convert_to_git_filter_fd " Brandon Williams
2017-06-12 22:13 ` [PATCH 04/17] convert: convert convert_to_git " Brandon Williams
2017-06-12 22:13 ` [PATCH 05/17] convert: convert renormalize_buffer " Brandon Williams
2017-06-12 22:13 ` Brandon Williams [this message]
2017-06-12 22:13 ` [PATCH 07/17] ls-files: convert overlay_tree_on_cache " Brandon Williams
2017-06-12 22:13 ` [PATCH 08/17] ls-files: convert write_eolinfo " Brandon Williams
2017-06-12 22:14 ` [PATCH 09/17] ls-files: convert show_killed_files " Brandon Williams
2017-06-12 22:14 ` [PATCH 10/17] ls-files: convert show_other_files " Brandon Williams
2017-06-12 22:14 ` [PATCH 11/17] ls-files: convert show_ru_info " Brandon Williams
2017-06-12 22:14 ` [PATCH 12/17] ls-files: convert ce_excluded " Brandon Williams
2017-06-12 22:14 ` [PATCH 13/17] ls-files: convert prune_cache " Brandon Williams
2017-06-12 22:14 ` [PATCH 14/17] ls-files: convert show_ce_entry " Brandon Williams
2017-06-12 22:14 ` [PATCH 15/17] ls-files: convert show_files " Brandon Williams
2017-06-12 22:14 ` [PATCH 16/17] ls-files: factor out debug info into a function Brandon Williams
2017-06-12 22:14 ` [PATCH 17/17] ls-files: factor out tag calculation 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=20170612221408.173876-7-bmwill@google.com \
--to=bmwill@google.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.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.