Junio C Hamano <gitster@xxxxxxxxx> writes: > You would perhaps define: > > #define DEFAULT_TWOHEAD (1<<0) > #define DEFAULT_OCTOPUS (1<<1) > #define NO_FAST_FORWARD (1<<2) > #define NO_TRIVIAL (1<<3) > > static struct strategy { > char *name; > unsigned attr; > } all_strategy[] = { > { "octopus", DEFAULT_OCTOPUS }, > { "ours", (NO_FAST_FORWARD | NO_TRIVIAL) }, > { "recur", NO_TRIVIAL }, > { "recursive", (DEFAULT_TWOHEAD | NO_TRIVIAL) }, > { "resolve", 0 }, > { "stupid", 0 }, > { "subtree", (NO_FAST_FORWARD | NO_TRIVIAL) }, > }; > > And "unsorted_path_list_lookup()" can now become much more natural, > perhaps: > > static struct strategy *get_strategy(const char *name); > > which has a more natural function signature and much better name. > > Then, you would keep an array of pointers into all_strategy[] array to > represent the list of "-s strategy" given by the user: > > static struct strategy *use_strategy; > static int use_strategy_alloc, use_strategy_nr; Sorry, I have an obvious typo here. "use_strategy" will be dynamic array of pointers into all_strategy[] so its definition would be: static struct strategy **use_strategy; > and have a function that use s the standard ALLOC_GROW() and friends to > grow this. The function will be named and written more naturally > (i.e. path_list_append_strategy() can go) --- this does not have anything > to do with path_list, but it is about "merge strategy". -- 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