Merge branch 'nd/commit-util-to-slab'
The in-core "commit" object had an all-purpose "void *util" field, which was tricky to use especially in library-ish part of the code. All of the existing uses of the field has been migrated to a more dedicated "commit-slab" mechanism and the field is eliminated. * nd/commit-util-to-slab: commit.h: delete 'util' field in struct commit merge: use commit-slab in merge remote desc instead of commit->util log: use commit-slab in prepare_bases() instead of commit->util show-branch: note about its object flags usage show-branch: use commit-slab for commit-name instead of commit->util name-rev: use commit-slab for rev-name instead of commit->util bisect.c: use commit-slab for commit weight instead of commit->util revision.c: use commit-slab for show_source sequencer.c: use commit-slab to associate todo items to commits sequencer.c: use commit-slab to mark seen commits shallow.c: use commit-slab for commit depth instead of commit->util describe: use commit-slab for commit names instead of commit->util blame: use commit-slab for blame suspects instead of commit->util commit-slab: support shared commit-slab commit-slab.h: code split
This commit is contained in:
@ -22,6 +22,7 @@
|
||||
#include "quote.h"
|
||||
#include "remote.h"
|
||||
#include "blob.h"
|
||||
#include "commit-slab.h"
|
||||
|
||||
static const char *fast_export_usage[] = {
|
||||
N_("git fast-export [rev-list-opts]"),
|
||||
@ -38,6 +39,7 @@ static int full_tree;
|
||||
static struct string_list extra_refs = STRING_LIST_INIT_NODUP;
|
||||
static struct refspec refspecs = REFSPEC_INIT_FETCH;
|
||||
static int anonymize;
|
||||
static struct revision_sources revision_sources;
|
||||
|
||||
static int parse_opt_signed_tag_mode(const struct option *opt,
|
||||
const char *arg, int unset)
|
||||
@ -589,7 +591,7 @@ static void handle_commit(struct commit *commit, struct rev_info *rev,
|
||||
if (!S_ISGITLINK(diff_queued_diff.queue[i]->two->mode))
|
||||
export_blob(&diff_queued_diff.queue[i]->two->oid);
|
||||
|
||||
refname = commit->util;
|
||||
refname = *revision_sources_at(&revision_sources, commit);
|
||||
if (anonymize) {
|
||||
refname = anonymize_refname(refname);
|
||||
anonymize_ident_line(&committer, &committer_end);
|
||||
@ -861,10 +863,11 @@ static void get_tags_and_duplicates(struct rev_cmdline_info *info)
|
||||
* This ref will not be updated through a commit, lets make
|
||||
* sure it gets properly updated eventually.
|
||||
*/
|
||||
if (commit->util || commit->object.flags & SHOWN)
|
||||
if (*revision_sources_at(&revision_sources, commit) ||
|
||||
commit->object.flags & SHOWN)
|
||||
string_list_append(&extra_refs, full_name)->util = commit;
|
||||
if (!commit->util)
|
||||
commit->util = full_name;
|
||||
if (!*revision_sources_at(&revision_sources, commit))
|
||||
*revision_sources_at(&revision_sources, commit) = full_name;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1028,8 +1031,9 @@ int cmd_fast_export(int argc, const char **argv, const char *prefix)
|
||||
git_config(git_default_config, NULL);
|
||||
|
||||
init_revisions(&revs, prefix);
|
||||
init_revision_sources(&revision_sources);
|
||||
revs.topo_order = 1;
|
||||
revs.show_source = 1;
|
||||
revs.sources = &revision_sources;
|
||||
revs.rewrite_parents = 1;
|
||||
argc = parse_options(argc, argv, prefix, options, fast_export_usage,
|
||||
PARSE_OPT_KEEP_ARGV0 | PARSE_OPT_KEEP_UNKNOWN);
|
||||
|
Reference in New Issue
Block a user