From: Karthik Nayak Date: Sat, 23 May 2015 17:52:51 GMT Subject: Re: [PATCH 2/4] ref-filter: add ref-filter API Message-ID: <5560BE73.8020801@gmail.com> In-Reply-To: > > But it also contains struct ref_filter_item **items, which as I > understand it contains a list of refs (with name, sha1 & such). > > That's the part I do not find natural: the same structure contains both > the list of refs and the way it should be filtered. > > Re-reading the patch, I seem to understand that you're putting both on > the same struct because of the API of for_each_ref() which takes one > 'data' pointer to be casted, so you want both the input (filter > description) and the output (list of refs after filtering) to be > contained in the same struct. Was kinda confused, This clears out things, Thanks. > > But I think this could be clearer in the code (and/or comment + commit > message). Perhaps stg like: > > struct ref_filter_data /* Probably not the best name */ { > struct ref_list list; > struct ref_filter filter; > }; > > struct ref_list { > int count, alloc; > struct ref_filter_item **items; > const char **name_patterns; > }; > > struct ref_filter { > const char **name_patterns; > /* There will be more here later */ > }; > This seems cleaner, agreed. > > I agree that it might be clearer to separate both. In this case > instead of "ref_list" the struct might be called "ref_filter_array" as > we already have "argv_array" in argv-array.h and "sha1_array" in > "sha1-array.h". > Somehow ref_list seems more real to me, list of refs. > > And I do not think an array of things that are operated on should > not be named "ref_filter_item". > > Surely, the latter "set of operations to be applied" may currently > be only filtering, but who says it has to stay that way? "I have a > set of refs that represent my local branches I am interested > in. Please map them to their corresponding @{upstream}" is a > reasonable request once you have an infrastructure to represent "set > of refs to be worked on" and "set of operations to apply", and at > that point, the items are no longer filter-items (map-items?). > That's also a good point to consider, I shall rename and restructure the code as discussed here, thanks. -- Regards, Karthik