diff options
author | Stefan Beller <sbeller@google.com> | 2017-09-12 10:31:40 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2017-09-14 15:05:54 +0900 |
commit | 006f3f28af2afb8c567ef3ddf4f0a9110c6be437 (patch) | |
tree | 97d82789224c02b047491ce2b71c03963e048777 | |
parent | 3c96aa97232367a24eef8b3b387f5ddae5b0c10f (diff) | |
download | git-jn/per-repo-object-store-fixes.tar.gz |
replace-objects: evaluate replacement refs without using the object storejn/per-repo-object-store-fixes
Pass DO_FOR_EACH_INCLUDE_BROKEN when iterating over replacement refs
so that the iteration does not require opening the named objects from
the object store. This avoids a dependency cycle between object access
and replace ref iteration.
Moreover the ref subsystem has not been migrated yet to access the
object store via passed in repository objects. As a result, without
this patch, iterating over replace refs in a repository other than
the_repository it produces errors:
error: refs/replace/3afabef75c627b894cccc3bcae86837abc7c32fe does not point to a valid object!
Noticed while adapting the object store (and in particular its
evaluation of replace refs) to handle arbitrary repositories.
Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | refs.c | 2 |
1 files changed, 1 insertions, 1 deletions
@@ -1394,7 +1394,7 @@ int for_each_replace_ref(each_ref_fn fn, void *cb_data) return do_for_each_ref(get_main_ref_store(), git_replace_ref_base, fn, strlen(git_replace_ref_base), - 0, cb_data); + DO_FOR_EACH_INCLUDE_BROKEN, cb_data); } int for_each_namespaced_ref(each_ref_fn fn, void *cb_data) |