Patrick Steinhardt <ps@xxxxxx> writes: > With `refs_for_each_reflog_ent()` callers can iterate through all the > reflog entries for a given reference. The callback that is being invoked > for each such entry does not receive the name of the reference that we > are currently iterating through. This isn't really a limiting factor, as > callers can simply pass the name via the callback data. > > But this layout sometimes does make for a bit of an awkward calling > pattern. One example: when iterating through all reflogs, and for each > reflog we iterate through all refnames, we have to do some extra book > keeping to track which reference name we are currently yielding reflog > entries for. > > Change the signature of the callback function so that the reference name > of the reflog gets passed through to it. Adapt callers accordingly and > start using the new parameter in trivial cases. The next commit will > refactor the reference migration logic to make use of this parameter so > that we can simplify its logic a bit. > I remember hitting this issue with the migration code in 'refs.c', so I think this is a good improvement. The changes themselves look good. Nit: Changes suggested by clang-format in case you re-roll: diff --git a/refs.c b/refs.c index fd9a5f36b2..6ed0cd6ddc 100644 --- a/refs.c +++ b/refs.c @@ -1078,8 +1078,7 @@ static int read_ref_at_ent(const char *refname, oidcpy(cb->oid, noid); else if (!oideq(noid, cb->oid)) warning(_("log for ref %s unexpectedly ended on %s"), - refname, show_date(cb->date, cb->tz, - DATE_MODE(RFC2822))); + refname, show_date(cb->date, cb->tz, DATE_MODE(RFC2822))); cb->reccnt++; oidcpy(&cb->ooid, ooid); oidcpy(&cb->noid, noid); diff --git a/refs.h b/refs.h index a39f873b1f..5b0efaf752 100644 --- a/refs.h +++ b/refs.h @@ -559,10 +559,10 @@ int refs_delete_reflog(struct ref_store *refs, const char *refname); * functions. */ typedef int each_reflog_ent_fn( - const char *refname, - struct object_id *old_oid, struct object_id *new_oid, - const char *committer, timestamp_t timestamp, - int tz, const char *msg, void *cb_data); + const char *refname, + struct object_id *old_oid, struct object_id *new_oid, + const char *committer, timestamp_t timestamp, + int tz, const char *msg, void *cb_data); /* Iterate over reflog entries in the log for `refname`. */
Attachment:
signature.asc
Description: PGP signature