From: Michael Haggerty <mhagger@xxxxxxxxxxxx> This is a re-roll of the patch series on top of v3 of "Tidying up references code", which in turn applies to gitster/master. This series conflicts with the "Checking full vs. partial refnames" series but not in a fundamental way. Unless there is an important reason to merge the latter to master before this patch series, I suggest that I reroll "Checking full vs. partial refnames" on top of these ref-api changes after they hit master. This patch series primarily has to do with using the refs API more consistently within refs.c itself. We want to minimize the surface area for accessing the ref_cache data structure so that when it is changed into a tree (we're on the verge of that change now, I promise!) we don't have to change callers more than necessary. There is also a bit of an eat-your-own-dogfood thing going on here; if for_each_ref() and its friends are good enough for "outsiders", they should be good enough for most internal use. The first two patches are trivial preparation cleanups. The third verifies that refnames read from packed-ref files are properly formatted. When the REFNAME_FULL changes become available, this check can be tightened up. The do_for_each_ref_in_{array,arrays}() functions provide an iterator-like interface to iterating over a single ref_array and iterating over two ref_arrays in parallel. These are useful abstractions in and of themselves (the former is used to reimplement repack_without_ref() and is_refname_available() in patches 9 and 12 respectively). And they will be even more useful when references are stored hierarchically. Michael Haggerty (12): Rename another local variable name -> refname repack_without_ref(): remove temporary parse_ref_line(): add a check that the refname is properly formatted create_ref_entry(): extract function from add_ref() add_ref(): take a (struct ref_entry *) parameter do_for_each_ref(): correctly terminate while processesing extra_refs do_for_each_ref_in_array(): new function do_for_each_ref_in_arrays(): new function repack_without_ref(): reimplement using do_for_each_ref_in_array() names_conflict(): new function, extracted from is_refname_available() names_conflict(): simplify implementation is_refname_available(): reimplement using do_for_each_ref_in_array() refs.c | 255 ++++++++++++++++++++++++++++++++++++++++------------------------ 1 files changed, 160 insertions(+), 95 deletions(-) -- 1.7.7 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html