From: Junio C Hamano <junkio@cox.net>
To: Chuck Lever <cel@citi.umich.edu>
Cc: git@vger.kernel.org
Subject: Re: [PATCH 00/22] cache cursors: an introduction
Date: Mon, 12 Sep 2005 12:53:01 -0700 [thread overview]
Message-ID: <7vaciiawrm.fsf@assigned-by-dhcp.cox.net> (raw)
In-Reply-To: 20050912145543.28120.7086.stgit@dexter.citi.umich.edu
I've only skimmed the surface of your patchset and cannot
comment on the correctness of all the conversion of active_cache
users; today is my day-job day not a GIT day.
I have to say you did quite a lot of work, and I am pleasantly
surprised to see the massive clean-up this change brings us. It
seems like this makes the active_cache users a lot easier to
read.
I have a couple of comments on the API, though.
* Doesn't function to be applied usually want to have its own
data when passed to walk, maybe something like this?
typedef int (*cache_iterator_fn_t) (struct cache_cursor *cc,
struct cache_entry *ce, void *udata);
static inline int walk_cache(cache_iterator_fn_t func, void *udata)
{
struct cache_cursor cc;
init_cc(&cc);
while (!cache_eof(&cc)) {
int status = func(&cc, cc_to_ce(&cc), udata);
if (status < 0)
return status;
}
return 0;
}
This was a question I had when I read [PATCH 01/22] before
reading the rest of the patches, but the actual conversion
does not seem to find much need for it. A new global variable
pathspec is introduced to pass information the API is unable
to pass to diff_one() in diff-index.c, which may be a sign
that an extra "user data" parameter might help. Your call.
* It may make sense to give another param to describe which
cache the caller is talking about so that we can later have
more than one cache at the same time:
struct cache {
struct cache_entry **cache_array;
unsigned int nr;
unsigned int alloc;
unsigned int cache_changed;
};
struct cache active_cache;
and use it like this:
static inline struct cache_entry *cc_to_ce(struct cache_cursor *cc,
struct cache *cache)
{
return cache->cache_array[cc->pos];
}
We could argue that this should be left for later rounds. On
the other hand, we will be changing all the cc_* function call
sites during that round, which is by definition the places you
are touching in this round anyway. Also I suspect that the
"later job" is made larger if we do something like this during
this round:
diff --git a/cache.h b/cache.h
--- a/cache.h
+++ b/cache.h
@@ -157,7 +157,7 @@ extern char *prefix_path(const char *pre
/* Initialize and use the cache information */
extern int read_cache(void);
-extern int write_cache(int newfd, struct cache_entry **cache, int entries);
+extern int write_cache(int newfd);
extern int cache_name_pos(const char *name, int namelen);
#define ADD_CACHE_OK_TO_ADD 1 /* Ok to add */
#define ADD_CACHE_OK_TO_REPLACE 2 /* Ok to replace file/directory */
This function could already act on more than one active_cache,
although nobody uses it like that.
next prev parent reply other threads:[~2005-09-12 19:53 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-09-12 14:55 [PATCH 00/22] cache cursors: an introduction Chuck Lever
2005-09-12 14:55 ` [PATCH 01/22] introduce facility to walk through the active cache Chuck Lever
2005-09-12 14:55 ` [PATCH 02/22] use cache iterator in checkout-index.c Chuck Lever
2005-09-12 14:55 ` [PATCH 03/22] teach diff.c about cache iterators Chuck Lever
2005-09-12 14:55 ` [PATCH 04/22] teach diff-index.c " Chuck Lever
2005-09-12 14:55 ` [PATCH 05/22] teach diff-files.c " Chuck Lever
2005-09-12 14:55 ` [PATCH 06/22] teach diff-stages.c " Chuck Lever
2005-09-12 14:55 ` [PATCH 07/22] teach fsck-objects.c to use " Chuck Lever
2005-09-12 14:56 ` [PATCH 08/22] teach ls-files.c " Chuck Lever
2005-09-12 14:56 ` [PATCH 09/22] teach read-tree.c " Chuck Lever
2005-09-12 14:56 ` [PATCH 10/22] teach update-index.c about cache cursors Chuck Lever
2005-09-12 14:56 ` [PATCH 11/22] teach write-tree.c to use cache iterators Chuck Lever
2005-09-12 14:56 ` [PATCH 12/22] simplify write_cache() calling sequence Chuck Lever
2005-09-12 14:56 ` [PATCH 13/22] move purge_cache() to read-cache.c Chuck Lever
2005-09-12 14:56 ` [PATCH 14/22] move read_cache_unmerged into read-cache.c Chuck Lever
2005-09-12 14:56 ` [PATCH 15/22] replace cache_name_pos Chuck Lever
2005-09-12 14:56 ` [PATCH 16/22] teach apply.c to use cache_find_name() Chuck Lever
2005-09-12 14:56 ` [PATCH 17/22] teach checkout-index.c " Chuck Lever
2005-09-12 14:56 ` [PATCH 18/22] teach diff.c " Chuck Lever
2005-09-12 14:56 ` [PATCH 19/22] teach ls-files.c " Chuck Lever
2005-09-12 14:56 ` [PATCH 20/22] teach merge-index.c " Chuck Lever
2005-09-12 14:56 ` [PATCH 21/22] teach the merge algorithm about cache iterators Chuck Lever
2005-09-12 20:43 ` Daniel Barkalow
2005-09-13 0:02 ` Chuck Lever
2005-09-14 15:36 ` Chuck Lever
2005-09-14 16:41 ` Daniel Barkalow
2005-09-14 17:50 ` Junio C Hamano
2005-09-14 19:49 ` Chuck Lever
2005-09-14 20:40 ` Daniel Barkalow
2005-09-14 22:28 ` Chuck Lever
2005-09-14 22:50 ` Linus Torvalds
2005-09-14 23:23 ` Daniel Barkalow
2005-09-15 14:01 ` Chuck Lever
2005-09-12 14:56 ` [PATCH 22/22] teach read-cache.c to use cache_find_name() Chuck Lever
2005-09-12 15:38 ` [PATCH 00/22] cache cursors: an introduction A Large Angry SCM
2005-09-12 16:37 ` Chuck Lever
2005-09-12 20:26 ` Daniel Barkalow
2005-09-12 20:47 ` Junio C Hamano
2005-09-13 19:06 ` Tim Ottinger
2005-09-13 19:46 ` Junio C Hamano
2005-09-13 20:06 ` Tim Ottinger
2005-09-14 8:28 ` Catalin Marinas
2005-09-14 14:49 ` Chuck Lever
2005-09-12 19:53 ` Junio C Hamano [this message]
2005-09-12 20:22 ` Daniel Barkalow
2005-09-12 20:30 ` Junio C Hamano
2005-09-12 23:59 ` Chuck Lever
2005-09-13 0:14 ` Junio C Hamano
2005-09-13 0:17 ` Linus Torvalds
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=7vaciiawrm.fsf@assigned-by-dhcp.cox.net \
--to=junkio@cox.net \
--cc=cel@citi.umich.edu \
--cc=git@vger.kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).