diff options
author | Junio C Hamano <gitster@pobox.com> | 2018-10-16 07:15:59 (GMT) |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2018-10-16 07:15:59 (GMT) |
commit | 6d8f8ebb74d21b51cfbf427a436094134af36ee2 (patch) | |
tree | 0b50647db06413e2f43487b2bfca167105b7f701 /builtin | |
parent | 36d767d02e12c1ff991511b7bd8c1d023340f2ca (diff) | |
parent | 829a321569d8e8f2c582aef9f0c990df976ab842 (diff) | |
download | git-6d8f8ebb74d21b51cfbf427a436094134af36ee2.zip git-6d8f8ebb74d21b51cfbf427a436094134af36ee2.tar.gz git-6d8f8ebb74d21b51cfbf427a436094134af36ee2.tar.bz2 |
Merge branch 'ds/commit-graph-with-grafts'
The recently introduced commit-graph auxiliary data is incompatible
with mechanisms such as replace & grafts that "breaks" immutable
nature of the object reference relationship. Disable optimizations
based on its use (and updating existing commit-graph) when these
incompatible features are in use in the repository.
* ds/commit-graph-with-grafts:
commit-graph: close_commit_graph before shallow walk
commit-graph: not compatible with uninitialized repo
commit-graph: not compatible with grafts
commit-graph: not compatible with replace objects
test-repository: properly init repo
commit-graph: update design document
refs.c: upgrade for_each_replace_ref to be a each_repo_ref_fn callback
refs.c: migrate internal ref iteration to pass thru repository argument
Diffstat (limited to 'builtin')
-rw-r--r-- | builtin/commit-graph.c | 4 | ||||
-rw-r--r-- | builtin/replace.c | 8 |
2 files changed, 8 insertions, 4 deletions
diff --git a/builtin/commit-graph.c b/builtin/commit-graph.c index bc0fa9b..22b974f 100644 --- a/builtin/commit-graph.c +++ b/builtin/commit-graph.c @@ -120,6 +120,8 @@ static int graph_read(int argc, const char **argv) return 0; } +extern int read_replace_refs; + static int graph_write(int argc, const char **argv) { struct string_list *pack_indexes = NULL; @@ -150,6 +152,8 @@ static int graph_write(int argc, const char **argv) if (!opts.obj_dir) opts.obj_dir = get_object_directory(); + read_replace_refs = 0; + if (opts.reachable) { write_commit_graph_reachable(opts.obj_dir, opts.append, 1); return 0; diff --git a/builtin/replace.c b/builtin/replace.c index 8e67e09..30a661e 100644 --- a/builtin/replace.c +++ b/builtin/replace.c @@ -39,7 +39,8 @@ struct show_data { enum replace_format format; }; -static int show_reference(const char *refname, const struct object_id *oid, +static int show_reference(struct repository *r, const char *refname, + const struct object_id *oid, int flag, void *cb_data) { struct show_data *data = cb_data; @@ -56,9 +57,8 @@ static int show_reference(const char *refname, const struct object_id *oid, if (get_oid(refname, &object)) return error(_("failed to resolve '%s' as a valid ref"), refname); - obj_type = oid_object_info(the_repository, &object, - NULL); - repl_type = oid_object_info(the_repository, oid, NULL); + obj_type = oid_object_info(r, &object, NULL); + repl_type = oid_object_info(r, oid, NULL); printf("%s (%s) -> %s (%s)\n", refname, type_name(obj_type), oid_to_hex(oid), type_name(repl_type)); |