Add support to sort by version using the "v:refname" and "version:refname" option. This is achieved by using the 'version_cmp()' function as the comparing function for qsort. Mentored-by: Christian Couder <christian.couder@xxxxxxxxx> Mentored-by: Matthieu Moy <matthieu.moy@xxxxxxxxxxxxxxx> Signed-off-by: Karthik Nayak <karthik.188@xxxxxxxxx> --- ref-filter.c | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/ref-filter.c b/ref-filter.c index 57a5cfb..e307fab 100644 --- a/ref-filter.c +++ b/ref-filter.c @@ -10,8 +10,9 @@ #include "quote.h" #include "ref-filter.h" #include "revision.h" +#include "version.h" -typedef enum { FIELD_STR, FIELD_ULONG, FIELD_TIME } cmp_type; +typedef enum { FIELD_STR, FIELD_ULONG, FIELD_TIME, FIELD_VER } cmp_type; static struct { const char *name; @@ -53,6 +54,8 @@ static struct { { "flag" }, { "HEAD" }, { "color" }, + { "version", FIELD_VER }, + { "v", FIELD_VER }, }; /* @@ -629,7 +632,9 @@ static void populate_value(struct ref_array_item *ref) name++; } - if (starts_with(name, "refname")) + if (starts_with(name, "refname") || + starts_with(name, "version:") || + starts_with(name, "v:")) refname = ref->refname; else if (starts_with(name, "symref")) refname = ref->symref ? ref->symref : ""; @@ -695,7 +700,13 @@ static void populate_value(struct ref_array_item *ref) int num_ours, num_theirs; formatp++; - if (starts_with(formatp, "lalign")) { + if (starts_with(name, "version") || starts_with(name, "v")) { + if (strcmp(formatp, "refname")) + die("unknown %.*s format %s", + (int)(formatp - name), name, formatp); + v->s = refname; + continue; + } else if (starts_with(formatp, "lalign")) { const char *valp; int val; @@ -1165,6 +1176,9 @@ static int cmp_ref_sorting(struct ref_sorting *s, struct ref_array_item *a, stru case FIELD_STR: cmp = strcmp(va->s, vb->s); break; + case FIELD_VER: + cmp = versioncmp(va->s, vb->s); + break; default: if (va->ul < vb->ul) cmp = -1; -- 2.4.4 -- 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