On 7/25/2014 2:52 AM, Ramsay Jones wrote: > On 24/07/14 20:54, Junio C Hamano wrote: >> Tanay Abhra <tanayabh@xxxxxxxxx> writes: >> >>> If we take the easy way out, fixing UI mistakes would be easier, >>> just replace git_config_cache() with git_config_raw() for such cases. >> >> I do not think that would fly well. >> >> The kind of "let's migrate funcname users to xfuncname while still >> supporting the old uses" change will be done in the callback >> functions like userdiff_config(). But it is very typical that >> multiple config callback functions are cascaded (e.g. many >> eventually end up calling git_default_core_config()); in order to a >> workaround you suggest to help a callback in deep in a cascade chain >> would require you to see which ones among all the callback functions >> will eventually call the callback you are updating for migration and >> update all git_config() calls to git_config_raw(). >> >> If you fix it properly (assuming it is feasible; I haven't heard if >> you even tried to see how much work it would involve), you do not >> need to introduce "git_config_cached()" (or "_raw()" for that >> matter), which is a huge plus. git_config() would instead do the >> right thing automatically, giving the same semantics except that it >> does not read the same file twice when it is known that the file has >> not changed. >> > > I haven't been following this conversation too closely, so if I have > grasped the wrong end of this stick, please accept my apologies! ;-) > > Usually if you need to iterate the values in a hash-table in the order > of key insertion, you would simply link the hash-table entries into a > linked list. This assumes that the keys are distinct, or if not, that > you are using a 'multi-map' type of hash-table. Here, if memory serves > me, you are doing the 'multi' bit yourself within the single hash-table > entry for a given key; so its not quite so easy. > > However, I think it you could create a list of <pointer to hash-table > entry, string-list index> pairs in the config_set and use that to do > the iteration. A bit ugly, but it should work. > Thanks for the advice, that is exactly what I am doing. > HTH > > ATB, > Ramsay Jones > > > -- 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