On Sat, May 30, 2015 at 1:53 PM, Karthik Nayak <karthik....@gmail.com> 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.cou...@gmail.com>
> Mentored-by: Matthieu Moy <matthieu....@grenoble-inp.fr>
> Signed-off-by: Karthik Nayak <karthik....@gmail.com>
> ---
>  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 majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to