On Sat, May 30, 2015 at 1:53 PM, Karthik Nayak <karthik.188@xxxxxxxxx> wrote: > Create 'ref-filter.h', also add ref-filter to the Makefile. > This completes movement of creation of 'ref-filter' from > 'for-each-ref'. It's important that the project can be built successfully and function correctly at each stage of a patch series. Unfortunately, the way this series is organized, the build breaks after application of patch 7/8 since for-each-ref.c is trying to access functionality which was moved to ref-filter.c, but there is no header at that stage which advertises the functionality. Fixing this may be as simple as swapping patches 7/8 and 8/8, along with whatever minor adjustments they might need to keep them sane. (The alternative would be to combine patches 7/8 and 8/8, however, Matthieu didn't seem to favor that approach[1].) Overall, this round has been a more pleasant read than previous rounds. [1]: http://article.gmane.org/gmane.comp.version-control.git/270192 > Mentored-by: Christian Couder <christian.couder@xxxxxxxxx> > Mentored-by: Matthieu Moy <matthieu.moy@xxxxxxxxxxxxxxx> > Signed-off-by: Karthik Nayak <karthik.188@xxxxxxxxx> > --- > Makefile | 1 + > builtin/for-each-ref.c | 41 +------------------------------ > ref-filter.c | 1 + > ref-filter.h | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++ > 4 files changed, 69 insertions(+), 40 deletions(-) > create mode 100644 ref-filter.h > > diff --git a/Makefile b/Makefile > index 323c401..ad455a3 100644 > --- a/Makefile > +++ b/Makefile > @@ -762,6 +762,7 @@ LIB_OBJS += reachable.o > LIB_OBJS += read-cache.o > LIB_OBJS += reflog-walk.o > LIB_OBJS += refs.o > +LIB_OBJS += ref-filter.o > LIB_OBJS += remote.o > LIB_OBJS += replace_object.o > LIB_OBJS += rerere.o > diff --git a/builtin/for-each-ref.c b/builtin/for-each-ref.c > index 65ed954..2f11c01 100644 > --- a/builtin/for-each-ref.c > +++ b/builtin/for-each-ref.c > @@ -2,46 +2,7 @@ > #include "cache.h" > #include "refs.h" > #include "parse-options.h" > - > -/* Quoting styles */ > -#define QUOTE_NONE 0 > -#define QUOTE_SHELL 1 > -#define QUOTE_PERL 2 > -#define QUOTE_PYTHON 4 > -#define QUOTE_TCL 8 > - > -struct atom_value { > - const char *s; > - unsigned long ul; /* used for sorting when not FIELD_STR */ > -}; > - > -struct ref_sort { > - struct ref_sort *next; > - int atom; /* index into used_atom array */ > - unsigned reverse : 1; > -}; > - > -struct ref_array_item { > - unsigned char objectname[20]; > - int flag; > - const char *symref; > - struct atom_value *value; > - char *refname; > -}; > - > -struct ref_array { > - int nr, alloc; > - struct ref_array_item **items; > -}; > - > -struct ref_filter { > - const char **name_patterns; > -}; > - > -struct ref_filter_cbdata { > - struct ref_array array; > - struct ref_filter filter; > -}; > +#include "ref-filter.h" > > static char const * const for_each_ref_usage[] = { > N_("git for-each-ref [<options>] [<pattern>]"), > diff --git a/ref-filter.c b/ref-filter.c > index 2a8f504..1c73750 100644 > --- a/ref-filter.c > +++ b/ref-filter.c > @@ -2,6 +2,7 @@ > #include "cache.h" > #include "parse-options.h" > #include "refs.h" > +#include "ref-filter.h" > #include "wildmatch.h" > #include "commit.h" > #include "remote.h" > diff --git a/ref-filter.h b/ref-filter.h > new file mode 100644 > index 0000000..dacae59 > --- /dev/null > +++ b/ref-filter.h > @@ -0,0 +1,66 @@ > +#ifndef REF_FILTER_H > +#define REF_FILTER_H > + > +#include "sha1-array.h" > +#include "refs.h" > +#include "commit.h" > +#include "parse-options.h" > + > +/* Quoting styles */ > +#define QUOTE_NONE 0 > +#define QUOTE_SHELL 1 > +#define QUOTE_PERL 2 > +#define QUOTE_PYTHON 4 > +#define QUOTE_TCL 8 > + > +struct atom_value { > + const char *s; > + unsigned long ul; /* used for sorting when not FIELD_STR */ > +}; > + > +struct ref_sort { > + struct ref_sort *next; > + int atom; /* index into used_atom array */ > + unsigned reverse : 1; > +}; > + > +struct ref_array_item { > + unsigned char objectname[20]; > + int flag; > + const char *symref; > + struct atom_value *value; > + char *refname; > +}; > + > +struct ref_array { > + int nr, alloc; > + struct ref_array_item **items; > +}; > + > +struct ref_filter { > + const char **name_patterns; > +}; > + > +struct ref_filter_cbdata { > + struct ref_array array; > + struct ref_filter filter; > +}; > + > +/* Callback function for for_each_*ref(). This filters the refs based on the filters set */ > +int ref_filter_handler(const char *refname, const unsigned char *sha1, int flag, void *cb_data); > +/* Clear all memory allocated to ref_filter_data */ > +void ref_filter_clear_data(struct ref_filter_cbdata *ref_cbdata); > +/* Parse format string and sort specifiers */ > +int parse_ref_filter_atom(const char *atom, const char *ep); > +/* Used to verify if the given format is correct and to parse out the used atoms */ > +int verify_ref_format(const char *format); > +/* Sort the given ref_array as per the ref_sort provided */ > +void sort_ref_array(struct ref_sort *sort, struct ref_array *array); > +/* Print the ref using the given format and quote_style */ > +void show_ref_array_item(struct ref_array_item *info, const char *format, int quote_style); > +/* Callback function for parsing the sort option */ > +int opt_parse_ref_sort(const struct option *opt, const char *arg, int unset); > +/* Default sort option based on refname */ > +struct ref_sort *ref_default_sort(void); > + > +#endif /* REF_FILTER_H */ > -- > 2.4.2 -- 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