Ævar Arnfjörð Bjarmason <avarab@xxxxxxxxx> writes: > Even though this modifies some of the same files as > mh/packed-ref-store it looks to me like this doesn't conflict with > that topic in any meaningful way, but I may be missing something. I > can't get a merge between this & gitster/mh/packed-ref-store > compiling,... That is because each ref backend is required to implement a new method by that topic. The following patch needs to be squashed in while merging the two topics, making the resulting commit an evil merge. FWIW, the result of applying these three patches on 'master' and merging the result to a commit on 'pu' that is just before the merge of previous round of the same topic, with the attached fix-up, exactly matches the commit on 'pu' that merges the previous round, iow, I see there is no meaningful change (perhaps other than log message? I didn't check) in this new round. Note that I am not complaining that this new round does not bring any improvements---I am not commending that you didn't screw up while rebasing to a new commit, either ;-). diff --git b/refs/packed-backend.c a/refs/packed-backend.c index dc09012300..96f9141656 100644 --- b/refs/packed-backend.c +++ a/refs/packed-backend.c @@ -794,6 +794,13 @@ static int packed_rename_ref(struct ref_store *ref_store, die("BUG: packed reference store does not support renaming references"); } +static int packed_copy_ref(struct ref_store *ref_store, + const char *oldrefname, const char *newrefname, + const char *logmsg) +{ + die("BUG: packed reference store does not support copying references"); +} + static struct ref_iterator *packed_reflog_iterator_begin(struct ref_store *ref_store) { return empty_ref_iterator_begin(); @@ -859,6 +866,7 @@ struct ref_storage_be refs_be_packed = { packed_create_symref, packed_delete_refs, packed_rename_ref, + packed_copy_ref, packed_ref_iterator_begin, packed_read_raw_ref,