{"thread":{"id":"13813","subject":"[PATCH] use natural ordering to display list of branches.","startedAt":"2008-06-05T17:41:17Z","lastAt":"2008-06-15T23:26:03Z","messageCount":27,"participants":["Cedric Vivier","Johannes Schindelin","Junio C Hamano","Marius Storm-Olsen","Mike Ralphson","Paolo Bonzini","Sverre Rabbelier","Brandon Casey","しらいしななこ","Asheesh Laroia","Jeff King","Andreas Ericsson","Ask Bjørn Hansen"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"78786","messageId":"d45085aa0806051041y42ce467fq2e07371d225ccca3@mail.gmail.com","threadId":"13813","inReplyTo":null,"subject":"[PATCH] use natural ordering to display list of branches.","fromName":"Cedric Vivier","fromEmail":"cedricv@neonux.com","sentAt":"2008-06-05T17:41:17Z","receivedAt":"2008-06-05T17:41:17Z","isPatch":true,"sender":{"key":"cedricv@neonux.com","avatar":"https://gravatar.com/avatar/35912cb08339380c2cf2f38de9da49fa9a6699644865f63c310a64c436cc70a0?d=mp&s=160"},"body":"Hi everyone,\n\nThis small patch makes git display list of branches in natural order.\nThis way, when you name your branches against, for instance, a bug number from\nsome bug-tracking tool, the list will show up in a natural/human/logical order.\n\nCurrent behavior for \"git branch\":\nBUG-1040-doing-bar-is-too-slow\nBUG-84-calling-Z-with-null-segfaults\nBUG-900-program-freezes-when-user-click-on-button\nexperimental-feature-X\nmaster\n\nWith the patch:\nBUG-84-calling-Z-with-null-segfaults\nBUG-900-program-freezes-when-user-click-on-button\nBUG-1040-doing-bar-takes-too-much-time\nexperimental-feature-X\nmaster\n\n\nSigned-off-by: Cedric Vivier <cedricv@neonux.com>\n---\n Makefile         |    3 +\n builtin-branch.c |    3 +-\n strnatcmp.c      |  179 ++++++++++++++++++++++++++++++++++++++++++++++++++++++\n strnatcmp.h      |   32 ++++++++++\n 4 files changed, 216 insertions(+), 1 deletions(-)\n create mode 100644 strnatcmp.c\n create mode 100644 strnatcmp.h\n\ndiff --git a/Makefile b/Makefile\nindex cce5a6e..469b312 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -376,6 +376,7 @@ LIB_H += tree-walk.h\n LIB_H += unpack-trees.h\n LIB_H += utf8.h\n LIB_H += wt-status.h\n+LIB_H += strnatcmp.h\n\n LIB_OBJS += alias.o\n LIB_OBJS += alloc.o\n@@ -471,6 +472,7 @@ LIB_OBJS += write_or_die.o\n LIB_OBJS += ws.o\n LIB_OBJS += wt-status.o\n LIB_OBJS += xdiff-interface.o\n+LIB_OBJS += strnatcmp.o\n\n BUILTIN_OBJS += builtin-add.o\n BUILTIN_OBJS += builtin-annotate.o\n@@ -1141,6 +1143,7 @@ $(XDIFF_OBJS): xdiff/xinclude.h xdiff/xmacros.h\nxdiff/xdiff.h xdiff/xtypes.h \\\n $(XDIFF_LIB): $(XDIFF_OBJS)\n \t$(QUIET_AR)$(RM) $@ && $(AR) rcs $@ $(XDIFF_OBJS)\n\n+strnatcmp.o: strnatcmp.c\n\n doc:\n \t$(MAKE) -C Documentation all\ndiff --git a/builtin-branch.c b/builtin-branch.c\nindex d279702..c9c6788 100644\n--- a/builtin-branch.c\n+++ b/builtin-branch.c\n@@ -13,6 +13,7 @@\n #include \"remote.h\"\n #include \"parse-options.h\"\n #include \"branch.h\"\n+#include \"strnatcmp.h\"\n\n static const char * const builtin_branch_usage[] = {\n \t\"git-branch [options] [-r | -a] [--merged | --no-merged]\",\n@@ -279,7 +280,7 @@ static int ref_cmp(const void *r1, const void *r2)\n\n \tif (c1->kind != c2->kind)\n \t\treturn c1->kind - c2->kind;\n-\treturn strcmp(c1->name, c2->name);\n+\treturn strnatcmp(c1->name, c2->name);\n }\n\n static void print_ref_item(struct ref_item *item, int maxwidth, int verbose,\ndiff --git a/strnatcmp.c b/strnatcmp.c\nnew file mode 100644\nindex 0000000..46bae0f\n--- /dev/null\n+++ b/strnatcmp.c\n@@ -0,0 +1,179 @@\n+/* -*- mode: c; c-file-style: \"k&r\" -*-\n+\n+  strnatcmp.c -- Perform 'natural order' comparisons of strings in C.\n+  Copyright (C) 2000, 2004 by Martin Pool <mbp sourcefrog net>\n+\n+  This software is provided 'as-is', without any express or implied\n+  warranty.  In no event will the authors be held liable for any damages\n+  arising from the use of this software.\n+\n+  Permission is granted to anyone to use this software for any purpose,\n+  including commercial applications, and to alter it and redistribute it\n+  freely, subject to the following restrictions:\n+\n+  1. The origin of this software must not be misrepresented; you must not\n+     claim that you wrote the original software. If you use this software\n+     in a product, an acknowledgment in the product documentation would be\n+     appreciated but is not required.\n+  2. Altered source versions must be plainly marked as such, and must not be\n+     misrepresented as being the original software.\n+  3. This notice may not be removed or altered from any source distribution.\n+*/\n+\n+\n+/* partial change history:\n+ *\n+ * 2004-10-10 mbp: Lift out character type dependencies into macros.\n+ *\n+ * Eric Sosman pointed out that ctype functions take a parameter whose\n+ * value must be that of an unsigned int, even on platforms that have\n+ * negative chars in their default char type.\n+ */\n+\n+#include <ctype.h>\n+#include <string.h>\n+#include <assert.h>\n+#include <stdio.h>\n+\n+#include \"strnatcmp.h\"\n+\n+\n+/* These are defined as macros to make it easier to adapt this code to\n+ * different characters types or comparison functions. */\n+static inline int\n+nat_isdigit(nat_char a)\n+{\n+     return isdigit((unsigned char) a);\n+}\n+\n+\n+static inline int\n+nat_isspace(nat_char a)\n+{\n+     return isspace((unsigned char) a);\n+}\n+\n+\n+static inline nat_char\n+nat_toupper(nat_char a)\n+{\n+     return toupper((unsigned char) a);\n+}\n+\n+\n+\n+static int\n+compare_right(nat_char const *a, nat_char const *b)\n+{\n+     int bias = 0;\n+\n+     /* The longest run of digits wins.  That aside, the greatest\n+\tvalue wins, but we can't know that it will until we've scanned\n+\tboth numbers to know that they have the same magnitude, so we\n+\tremember it in BIAS. */\n+     for (;; a++, b++) {\n+\t  if (!nat_isdigit(*a)  &&  !nat_isdigit(*b))\n+\t       return bias;\n+\t  else if (!nat_isdigit(*a))\n+\t       return -1;\n+\t  else if (!nat_isdigit(*b))\n+\t       return +1;\n+\t  else if (*a < *b) {\n+\t       if (!bias)\n+\t\t    bias = -1;\n+\t  } else if (*a > *b) {\n+\t       if (!bias)\n+\t\t    bias = +1;\n+\t  } else if (!*a  &&  !*b)\n+\t       return bias;\n+     }\n+\n+     return 0;\n+}\n+\n+\n+static int\n+compare_left(nat_char const *a, nat_char const *b)\n+{\n+     /* Compare two left-aligned numbers: the first to have a\n+     different value wins. */\n+     for (;; a++, b++) {\n+\t  if (!nat_isdigit(*a)  &&  !nat_isdigit(*b))\n+\t       return 0;\n+\t  else if (!nat_isdigit(*a))\n+\t       return -1;\n+\t  else if (!nat_isdigit(*b))\n+\t       return +1;\n+\t  else if (*a < *b)\n+\t       return -1;\n+\t  else if (*a > *b)\n+\t       return +1;\n+     }\n+\n+     return 0;\n+}\n+\n+\n+static int strnatcmp0(nat_char const *a, nat_char const *b, int fold_case)\n+{\n+     int ai, bi;\n+     nat_char ca, cb;\n+     int fractional, result;\n+\n+     assert(a && b);\n+     ai = bi = 0;\n+     while (1) {\n+\t  ca = a[ai]; cb = b[bi];\n+\n+\t  /* skip over leading spaces or zeros */\n+\t  while (nat_isspace(ca))\n+\t       ca = a[++ai];\n+\n+\t  while (nat_isspace(cb))\n+\t       cb = b[++bi];\n+\n+\t  /* process run of digits */\n+\t  if (nat_isdigit(ca)  &&  nat_isdigit(cb)) {\n+\t       fractional = (ca == '0' || cb == '0');\n+\n+\t       if (fractional) {\n+\t\t    if ((result = compare_left(a+ai, b+bi)) != 0)\n+\t\t\t return result;\n+\t       } else {\n+\t\t    if ((result = compare_right(a+ai, b+bi)) != 0)\n+\t\t\t return result;\n+\t       }\n+\t  }\n+\n+\t  if (!ca && !cb) {\n+\t       /* The strings compare the same.  Perhaps the caller\n+\t       will want to call strcmp to break the tie. */\n+\t       return 0;\n+\t  }\n+\n+\t  if (fold_case) {\n+\t       ca = nat_toupper(ca);\n+\t       cb = nat_toupper(cb);\n+\t  }\n+\n+\t  if (ca < cb)\n+\t       return -1;\n+\t  else if (ca > cb)\n+\t       return +1;\n+\n+\t  ++ai; ++bi;\n+     }\n+}\n+\n+\n+\n+int strnatcmp(nat_char const *a, nat_char const *b) {\n+     return strnatcmp0(a, b, 0);\n+}\n+\n+\n+/* Compare, recognizing numeric string and ignoring case. */\n+int strnatcasecmp(nat_char const *a, nat_char const *b) {\n+     return strnatcmp0(a, b, 1);\n+}\n+\ndiff --git a/strnatcmp.h b/strnatcmp.h\nnew file mode 100644\nindex 0000000..7b2ca39\n--- /dev/null\n+++ b/strnatcmp.h\n@@ -0,0 +1,32 @@\n+/* -*- mode: c; c-file-style: \"k&r\" -*-\n+\n+  strnatcmp.c -- Perform 'natural order' comparisons of strings in C.\n+  Copyright (C) 2000, 2004 by Martin Pool <mbp sourcefrog net>\n+\n+  This software is provided 'as-is', without any express or implied\n+  warranty.  In no event will the authors be held liable for any damages\n+  arising from the use of this software.\n+\n+  Permission is granted to anyone to use this software for any purpose,\n+  including commercial applications, and to alter it and redistribute it\n+  freely, subject to the following restrictions:\n+\n+  1. The origin of this software must not be misrepresented; you must not\n+     claim that you wrote the original software. If you use this software\n+     in a product, an acknowledgment in the product documentation would be\n+     appreciated but is not required.\n+  2. Altered source versions must be plainly marked as such, and must not be\n+     misrepresented as being the original software.\n+  3. This notice may not be removed or altered from any source distribution.\n+*/\n+\n+\n+/* CUSTOMIZATION SECTION\n+ *\n+ * You can change this typedef, but must then also change the inline\n+ * functions in strnatcmp.c */\n+typedef char nat_char;\n+\n+int strnatcmp(nat_char const *a, nat_char const *b);\n+int strnatcasecmp(nat_char const *a, nat_char const *b);\n+\n-- \n1.5.6.rc1.12.g7f71.dirty\n"},{"id":"78797","messageId":"alpine.DEB.1.00.0806051946100.21190@racer","threadId":"13813","inReplyTo":"d45085aa0806051041y42ce467fq2e07371d225ccca3@mail.gmail.com","subject":"Re: [PATCH] use natural ordering to display list of branches.","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2008-06-05T18:47:26Z","receivedAt":"2008-06-05T18:47:26Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Thu, 5 Jun 2008, Cedric Vivier wrote:\n\n> Hi everyone,\n> \n> This small patch makes git display list of branches in natural order.\n> This way, when you name your branches against, for instance, a bug number from\n> some bug-tracking tool, the list will show up in a natural/human/logical order.\n> \n> Current behavior for \"git branch\":\n> BUG-1040-doing-bar-is-too-slow\n> BUG-84-calling-Z-with-null-segfaults\n> BUG-900-program-freezes-when-user-click-on-button\n> experimental-feature-X\n> master\n> \n> With the patch:\n> BUG-84-calling-Z-with-null-segfaults\n> BUG-900-program-freezes-when-user-click-on-button\n> BUG-1040-doing-bar-takes-too-much-time\n> experimental-feature-X\n> master\n> \n> \n> Signed-off-by: Cedric Vivier <cedricv@neonux.com>\n> ---\n\nThis is not a good commit message.\n\n> @@ -279,7 +280,7 @@ static int ref_cmp(const void *r1, const void *r2)\n> \n>  \tif (c1->kind != c2->kind)\n>  \t\treturn c1->kind - c2->kind;\n> -\treturn strcmp(c1->name, c2->name);\n> +\treturn strnatcmp(c1->name, c2->name);\n>  }\n> \n>  static void print_ref_item(struct ref_item *item, int maxwidth, int verbose,\n\nWhat about people preferring the status quo?  I think a command line \noption would be in order.\n\nAlso, you _might_ want to provide a test case, so that it does not get \nbroken by accident.\n\nOther than that: nice.\n\nCiao,\nDscho\n"},{"id":"78802","messageId":"7vprqv1y0w.fsf@gitster.siamese.dyndns.org","threadId":"13813","inReplyTo":"alpine.DEB.1.00.0806051946100.21190@racer","subject":"Re: [PATCH] use natural ordering to display list of branches.","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2008-06-05T19:29:03Z","receivedAt":"2008-06-05T19:29:03Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:\n\n> Hi,\n>\n> On Thu, 5 Jun 2008, Cedric Vivier wrote:\n>\n>> Hi everyone,\n>> \n>> This small patch makes git display list of branches in natural order.\n>> This way, when you name your branches against, for instance, a bug number from\n>> some bug-tracking tool, the list will show up in a natural/human/logical order.\n>> \n>> Current behavior for \"git branch\":\n>> BUG-1040-doing-bar-is-too-slow\n>> BUG-84-calling-Z-with-null-segfaults\n>> BUG-900-program-freezes-when-user-click-on-button\n>> experimental-feature-X\n>> master\n>> \n>> With the patch:\n>> BUG-84-calling-Z-with-null-segfaults\n>> BUG-900-program-freezes-when-user-click-on-button\n>> BUG-1040-doing-bar-takes-too-much-time\n>> experimental-feature-X\n>> master\n>> \n>> \n>> Signed-off-by: Cedric Vivier <cedricv@neonux.com>\n>> ---\n>\n> This is not a good commit message.\n>\n>> @@ -279,7 +280,7 @@ static int ref_cmp(const void *r1, const void *r2)\n>> \n>>  \tif (c1->kind != c2->kind)\n>>  \t\treturn c1->kind - c2->kind;\n>> -\treturn strcmp(c1->name, c2->name);\n>> +\treturn strnatcmp(c1->name, c2->name);\n>>  }\n>> \n>>  static void print_ref_item(struct ref_item *item, int maxwidth, int verbose,\n>\n> What about people preferring the status quo?  I think a command line \n> option would be in order.\n>\n> Also, you _might_ want to provide a test case, so that it does not get \n> broken by accident.\n>\n> Other than that: nice.\n\nPerhaps, as long as we somehow mark clearly the new files added with this\npatch as \"borrowed code\" and not part of git proper, so that people do not\nimitate tons of style issues these files have (header inclusion, Emacs\nstyle -*- mode -*- line at the top, useless typedef of nat_char, macros\nwhose sole purpose to cast arguments given toupper() to (unsigned char),\n\"partial change history\" in comments, short function definition header\nsplit across two lines, multi-line comments).\n\nWhat the big license notice comment at the top says sounded Ok to me as\nwell.\n"},{"id":"78804","messageId":"alpine.DEB.1.00.0806052042341.21190@racer","threadId":"13813","inReplyTo":"7vprqv1y0w.fsf@gitster.siamese.dyndns.org","subject":"Re: [PATCH] use natural ordering to display list of branches.","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2008-06-05T19:43:02Z","receivedAt":"2008-06-05T19:43:02Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Thu, 5 Jun 2008, Junio C Hamano wrote:\n\n> Perhaps, as long as we somehow mark clearly the new files added with this\n> patch as \"borrowed code\" and not part of git proper, so that people do not\n> imitate tons of style issues these files have.\n\nRight.  Maybe compat/?\n\nCiao,\nDscho\n"},{"id":"78806","messageId":"d45085aa0806051308y16bcca95xad126022fd3ee053@mail.gmail.com","threadId":"13813","inReplyTo":"alpine.DEB.1.00.0806051946100.21190@racer","subject":"Re: [PATCH] use natural ordering to display list of branches.","fromName":"Cedric Vivier","fromEmail":"cedricv@neonux.com","sentAt":"2008-06-05T20:08:13Z","receivedAt":"2008-06-05T20:08:13Z","isPatch":true,"sender":{"key":"cedricv@neonux.com","avatar":"https://gravatar.com/avatar/35912cb08339380c2cf2f38de9da49fa9a6699644865f63c310a64c436cc70a0?d=mp&s=160"},"body":"On Thu, Jun 5, 2008 at 8:47 PM, Johannes Schindelin\n<Johannes.Schindelin@gmx.de> wrote:\n> What about people preferring the status quo?  I think a command line\n> option would be in order.\n\nIs there really people preferring the status quo ? ;)\nOf course we probably need some debate about making it default or not\nbut you're completely right there should be an option about that - and\nmaybe a config variable as well?\nHow about --sort=ascending|descending|natural (with branch.sort as the\ncorresponding config var) ?\n\n\n> Also, you _might_ want to provide a test case, so that it does not get\n> broken by accident.\n\nOkay.\n\n\n> Other than that: nice.\n\nThanks,\n\n\nJunio, about the borrowed code, indeed I was not sure where to put it,\ninitialliy I thought using directory strnatcmp/ like it's done for\nmozilla-sha1/ and xdiff/, but well... probably a more general\ndirectory that will be used for other 'borrowed' stuff in the future\nmakes sense.\n\n\nRegards,\n"},{"id":"78807","messageId":"48484E42.8050209@trolltech.com","threadId":"13813","inReplyTo":"d45085aa0806051308y16bcca95xad126022fd3ee053@mail.gmail.com","subject":"Re: [PATCH] use natural ordering to display list of branches.","fromName":"Marius Storm-Olsen","fromEmail":"marius@trolltech.com","sentAt":"2008-06-05T20:36:18Z","receivedAt":"2008-06-05T20:36:18Z","isPatch":true,"sender":{"key":"marius@trolltech.com","avatar":"https://gravatar.com/avatar/a40071d8f651862c6ab10bd7996f0ad84d94f06c0399de9e3fa4f06beb390a71?d=mp&s=160"},"body":"Cedric Vivier said the following on 05.06.2008 22:08:\n> On Thu, Jun 5, 2008 at 8:47 PM, Johannes Schindelin \n> <Johannes.Schindelin@gmx.de> wrote:\n>> What about people preferring the status quo?  I think a command\n>> line option would be in order.\n> \n> Is there really people preferring the status quo ? ;) Of course we\n> probably need some debate about making it default or not but you're\n> completely right there should be an option about that - and maybe a\n> config variable as well? How about\n> --sort=ascending|descending|natural (with branch.sort as the \n> corresponding config var) ?\n\nIMO, we now need to step back, and start considering the ever \nexpanding complexity of all the Git command line options. Is there \n_really_ a need for a command line option to control this? Will people \n_really_, for that _one_ invocation change the order of file listing? \nOr, will they simply prefer one particular order, set it, and forget it?\n\nWe really need to analyze the use-cases, and do everything we can to \navoid confusing clutter.\n\nIMO this feature falls into the \"configuration-variable, but not \ncommand-line option\" category. (People who _really_ want a different \norder, for that _one_ invocation, are most probable also in the group \nthat can write their own little 3-line script to do this.)\n\nJust my 10NOK..\n\n--\n.marius\n"},{"id":"78880","messageId":"e2b179460806060142y7edc92e4y7cbad6b3cfad1eac@mail.gmail.com","threadId":"13813","inReplyTo":"d45085aa0806051041y42ce467fq2e07371d225ccca3@mail.gmail.com","subject":"Re: [PATCH] use natural ordering to display list of branches.","fromName":"Mike Ralphson","fromEmail":"mike.ralphson@gmail.com","sentAt":"2008-06-06T08:42:58Z","receivedAt":"2008-06-06T08:42:58Z","isPatch":true,"sender":{"key":"mike.ralphson@gmail.com","avatar":"https://avatars.githubusercontent.com/u/21603?v=4"},"body":"2008/6/5 Cedric Vivier <cedricv@neonux.com>:\n>\n> This small patch makes git display list of branches in natural order.\n> This way, when you name your branches against, for instance, a bug number from\n> some bug-tracking tool, the list will show up in a natural/human/logical order.\n\n[Included as part of patch:]\n\n> +\n> +  strnatcmp.c -- Perform 'natural order' comparisons of strings in C.\n> +  Copyright (C) 2000, 2004 by Martin Pool <mbp sourcefrog net>\n> +\n> +  This software is provided 'as-is', without any express or implied\n> +  warranty.  In no event will the authors be held liable for any damages\n> +  arising from the use of this software.\n> +\n> +  Permission is granted to anyone to use this software for any purpose,\n> +  including commercial applications, and to alter it and redistribute it\n> +  freely, subject to the following restrictions:\n> +\n> +  1. The origin of this software must not be misrepresented; you must not\n> +     claim that you wrote the original software. If you use this software\n> +     in a product, an acknowledgment in the product documentation would be\n> +     appreciated but is not required.\n> +  2. Altered source versions must be plainly marked as such, and must not be\n> +     misrepresented as being the original software.\n> +  3. This notice may not be removed or altered from any source distribution.\n\n2008/6/5 Junio C Hamano <gitster@pobox.com>:\n> Perhaps, as long as we somehow mark clearly the new files added with this\n> patch as \"borrowed code\" and not part of git proper...\n>...\n>\n> What the big license notice comment at the top says sounded Ok to me as\n> well.\n\nIANAL, but I'm not 100% sure clauses 2a or 3 are strictly GPL\ncompatible (especially as \"altered from\" is unlikely to be interpreted\nin only one way).\n\nPerhaps we can ask the original author (cc'd) if he is prepared to\nlicense it under GPL2?\n\nI also think the license policy for inclusion in git should be spelt\nout in the documentation, i.e. GPL (2+), GPL2 only, GPL2 compatible\netc. SubmittingPatches touches on this area, but only in terms of the\nDCoO.  README merely states \"Git is an Open Source project covered by\nthe GNU General Public License.\"\n\nSome c files state GPL v2 only, others v2 with the \"any later version\" wording.\n\nI had the same issue when the replacement qsort() implementations came up.\n\nAs to the patch, I like the intent, but for consistency should it not\nalso apply to tags?\n\nMike\n"},{"id":"78882","messageId":"d45085aa0806060154p58e7e87dk636d519cbdcf2dc7@mail.gmail.com","threadId":"13813","inReplyTo":"e2b179460806060142y7edc92e4y7cbad6b3cfad1eac@mail.gmail.com","subject":"Re: [PATCH] use natural ordering to display list of branches.","fromName":"Cedric Vivier","fromEmail":"cedricv@neonux.com","sentAt":"2008-06-06T08:54:51Z","receivedAt":"2008-06-06T08:54:51Z","isPatch":true,"sender":{"key":"cedricv@neonux.com","avatar":"https://gravatar.com/avatar/35912cb08339380c2cf2f38de9da49fa9a6699644865f63c310a64c436cc70a0?d=mp&s=160"},"body":"On Fri, Jun 6, 2008 at 10:42 AM, Mike Ralphson <mike.ralphson@gmail.com> wrote:\n> 2008/6/5 Cedric Vivier <cedricv@neonux.com>:\n>> +  strnatcmp.c -- Perform 'natural order' comparisons of strings in C.\n>> +  Copyright (C) 2000, 2004 by Martin Pool <mbp sourcefrog net>\n>\n> IANAL, but I'm not 100% sure clauses 2a or 3 are strictly GPL\n> compatible (especially as \"altered from\" is unlikely to be interpreted\n> in only one way).\n>\n> Perhaps we can ask the original author (cc'd) if he is prepared to\n> license it under GPL2?\n>\n\nI've found a discussion on the Apache mailing-list where the author,\nMartin Pool seems to ack that this is ok to include his code in GPL'ed\ncode or even to relicense it :\nhttp://lists.debian.org/debian-glibc/2003/10/msg00016.html\n\nAlso maybe we could use glibc's strverscmp instead, but am not sure of\nits portability ?\n"},{"id":"78883","messageId":"e2b179460806060206p32a50c6bx16510214c230d517@mail.gmail.com","threadId":"13813","inReplyTo":"d45085aa0806060154p58e7e87dk636d519cbdcf2dc7@mail.gmail.com","subject":"Re: [PATCH] use natural ordering to display list of branches.","fromName":"Mike Ralphson","fromEmail":"mike.ralphson@gmail.com","sentAt":"2008-06-06T09:06:06Z","receivedAt":"2008-06-06T09:06:06Z","isPatch":true,"sender":{"key":"mike.ralphson@gmail.com","avatar":"https://avatars.githubusercontent.com/u/21603?v=4"},"body":"2008/6/6 Cedric Vivier <cedricv@neonux.com>:\n> On Fri, Jun 6, 2008 at 10:42 AM, Mike Ralphson <mike.ralphson@gmail.com> wrote:\n>> 2008/6/5 Cedric Vivier <cedricv@neonux.com>:\n>>> +  strnatcmp.c -- Perform 'natural order' comparisons of strings in C.\n>>> +  Copyright (C) 2000, 2004 by Martin Pool <mbp sourcefrog net>\n>>\n>> IANAL, but I'm not 100% sure clauses 2a or 3 are strictly GPL\n>> compatible (especially as \"altered from\" is unlikely to be interpreted\n>> in only one way).\n>>\n>> Perhaps we can ask the original author (cc'd) if he is prepared to\n>> license it under GPL2?\n>>\n>\n> I've found a discussion on the Apache mailing-list where the author,\n> Martin Pool seems to ack that this is ok to include his code in GPL'ed\n> code or even to relicense it :\n> http://lists.debian.org/debian-glibc/2003/10/msg00016.html\n>\n> Also maybe we could use glibc's strverscmp instead, but am not sure of\n> its portability ?\n\nAh ok, I didn't recognise the zlib license. A quick google suggests it\nis GPL compatible. Sorry for the noise.\n\nMike\n"},{"id":"78930","messageId":"484969F0.1030704@gnu.org","threadId":"13813","inReplyTo":"alpine.DEB.1.00.0806051946100.21190@racer","subject":"Re: [PATCH] use natural ordering to display list of branches.","fromName":"Paolo Bonzini","fromEmail":"bonzini@gnu.org","sentAt":"2008-06-06T16:46:40Z","receivedAt":"2008-06-06T16:46:40Z","isPatch":true,"sender":{"key":"bonzini@gnu.org","avatar":"https://avatars.githubusercontent.com/u/42082?v=4"},"body":"\n> What about people preferring the status quo?  I think a command line \n> option would be in order.'\n\nconfig option seems more useful.\n\nPaolo\n"},{"id":"78937","messageId":"alpine.DEB.1.00.0806061911300.1783@racer","threadId":"13813","inReplyTo":"484969F0.1030704@gnu.org","subject":"Re: [PATCH] use natural ordering to display list of branches.","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2008-06-06T18:11:54Z","receivedAt":"2008-06-06T18:11:54Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Fri, 6 Jun 2008, Paolo Bonzini wrote:\n\n> > What about people preferring the status quo?  I think a command line \n> > option would be in order.'\n> \n> config option seems more useful.\n\nExcept, of course, if you have a script that wants to override whatever \nthe user set in her config.\n\nHth,\nDscho\n"},{"id":"78938","messageId":"bd6139dc0806061136o3830c826va416edca16550fa9@mail.gmail.com","threadId":"13813","inReplyTo":"alpine.DEB.1.00.0806061911300.1783@racer","subject":"Re: [PATCH] use natural ordering to display list of branches.","fromName":"Sverre Rabbelier","fromEmail":"alturin@gmail.com","sentAt":"2008-06-06T18:36:01Z","receivedAt":"2008-06-06T18:36:01Z","isPatch":true,"sender":{"key":"alturin@gmail.com","avatar":null},"body":"On Fri, Jun 6, 2008 at 8:11 PM, Johannes Schindelin\n<Johannes.Schindelin@gmx.de> wrote:\n> Except, of course, if you have a script that wants to override whatever\n> the user set in her config.\n\nI think this is why stuff like GDB has both a CLI and a MI. In order\nto keep the CLI clean you have to make choices, similar to how we\nalready separate plumbing from porcelain. I guess in that sense our MI\nis the plumbing, and the porcelain is our CLI. Of course, in that case\nthere needn't be such an option in the porcelain, as long as there is\none in the plumbing ;).\nConclusion, go for the config option but make sure there's a switch\nfor scripts in the plumbing?\n\n-- \nCheers,\n\nSverre Rabbelier\n"},{"id":"78939","messageId":"48498A17.5000202@gnu.org","threadId":"13813","inReplyTo":"bd6139dc0806061136o3830c826va416edca16550fa9@mail.gmail.com","subject":"Re: [PATCH] use natural ordering to display list of branches.","fromName":"Paolo Bonzini","fromEmail":"bonzini@gnu.org","sentAt":"2008-06-06T19:03:51Z","receivedAt":"2008-06-06T19:03:51Z","isPatch":true,"sender":{"key":"bonzini@gnu.org","avatar":"https://avatars.githubusercontent.com/u/42082?v=4"},"body":"Sverre Rabbelier wrote:\n> On Fri, Jun 6, 2008 at 8:11 PM, Johannes Schindelin\n> <Johannes.Schindelin@gmx.de> wrote:\n>> Except, of course, if you have a script that wants to override whatever\n>> the user set in her config.\n> \n> I think this is why stuff like GDB has both a CLI and a MI. In order\n> to keep the CLI clean you have to make choices, similar to how we\n> already separate plumbing from porcelain. I guess in that sense our MI\n> is the plumbing, and the porcelain is our CLI. Of course, in that case\n> there needn't be such an option in the porcelain, as long as there is\n> one in the plumbing ;).\n> Conclusion, go for the config option but make sure there's a switch\n> for scripts in the plumbing?\n\nOr do the natural sorting only in the porcelain, even if that means \nsorting twice, and use a config option in the porcelain?\n\n(Now, \"git branch\" is porcelain isn't it?  Plumbing is git-for-each-ref, \nand it has sorting options).\n\nPaolo\n"},{"id":"78957","messageId":"Jx4nZtFGdU-iUxlX24G6lzMyWe99Z53jtjQp9T9qkMJ1iZC0eZW6xg@cipher.nrlssc.navy.mil","threadId":"13813","inReplyTo":"alpine.DEB.1.00.0806061911300.1783@racer","subject":"Re: [PATCH] use natural ordering to display list of branches.","fromName":"Brandon Casey","fromEmail":"casey@nrlssc.navy.mil","sentAt":"2008-06-06T21:04:10Z","receivedAt":"2008-06-06T21:04:10Z","isPatch":true,"sender":{"key":"drafnel@gmail.com","avatar":"https://avatars.githubusercontent.com/u/921167?v=4"},"body":"Johannes Schindelin wrote:\n> Hi,\n> \n> On Fri, 6 Jun 2008, Paolo Bonzini wrote:\n> \n>>> What about people preferring the status quo?  I think a command line \n>>> option would be in order.'\n>> config option seems more useful.\n> \n> Except, of course, if you have a script that wants to override whatever \n> the user set in her config.\n\nBut can't that be just as easily done by piping through sort? (I understand\nthere is a platform which lacks the sort utility, boohoo)\n\nIs there some legitimate function that depends on the order of listed\nbranches (or tags)?\n\nRather this seems like one of those things where everyone should either\nwelcome the functionality or be indifferent to it. Adding yet another\ntoggle for this sort of user-interface tweak seems like over-kill. It is\nnot costless, it adds complexity to the code and to the user interface.\n\nIf someone wants to list their branches alphabetically, or reverse\nalphabetically, or if they only want to see branches beginning with 'BUG-',\nwhy isn't it enough to just use the functionality provided by the command line?\n\nbikeshedmode = off\n\n-brandon\n"},{"id":"78958","messageId":"d45085aa0806061417ue3f1f51i6580acbb51070e5b@mail.gmail.com","threadId":"13813","inReplyTo":"Jx4nZtFGdU-iUxlX24G6lzMyWe99Z53jtjQp9T9qkMJ1iZC0eZW6xg@cipher.nrlssc.navy.mil","subject":"Re: [PATCH] use natural ordering to display list of branches.","fromName":"Cedric Vivier","fromEmail":"cedricv@neonux.com","sentAt":"2008-06-06T21:17:30Z","receivedAt":"2008-06-06T21:17:30Z","isPatch":true,"sender":{"key":"cedricv@neonux.com","avatar":"https://gravatar.com/avatar/35912cb08339380c2cf2f38de9da49fa9a6699644865f63c310a64c436cc70a0?d=mp&s=160"},"body":"On Fri, Jun 6, 2008 at 11:04 PM, Brandon Casey <casey@nrlssc.navy.mil> wrote:\n> But can't that be just as easily done by piping through sort? (I understand\n> there is a platform which lacks the sort utility, boohoo)\n\nYes, but sort does not have a natural sort option afaik.\nIf natural sort is the default order though then piping through sort\nto get things in \"non-natural\" order is easy enough indeed.\n"},{"id":"78960","messageId":"BxRFEBn7RnPYtqjijr1wmeVSsVQ66p-LzwRJ9L0uPfzz4tAN1SeHsw@cipher.nrlssc.navy.mil","threadId":"13813","inReplyTo":"d45085aa0806061417ue3f1f51i6580acbb51070e5b@mail.gmail.com","subject":"Re: [PATCH] use natural ordering to display list of branches.","fromName":"Brandon Casey","fromEmail":"casey@nrlssc.navy.mil","sentAt":"2008-06-06T21:23:03Z","receivedAt":"2008-06-06T21:23:03Z","isPatch":true,"sender":{"key":"drafnel@gmail.com","avatar":"https://avatars.githubusercontent.com/u/921167?v=4"},"body":"Cedric Vivier wrote:\n> On Fri, Jun 6, 2008 at 11:04 PM, Brandon Casey <casey@nrlssc.navy.mil> wrote:\n>> But can't that be just as easily done by piping through sort? (I understand\n>> there is a platform which lacks the sort utility, boohoo)\n> \n> Yes, but sort does not have a natural sort option afaik.\n> If natural sort is the default order though then piping through sort\n> to get things in \"non-natural\" order is easy enough indeed.\n\nYes, that's what I meant.\n\n-brandon\n"},{"id":"78962","messageId":"200806062147.m56LlK5Q030355@mi0.bluebottle.com","threadId":"13813","inReplyTo":"alpine.DEB.1.00.0806061911300.1783@racer","subject":"Re: [PATCH] use natural ordering to display list of branches.","fromName":"しらいしななこ","fromEmail":"nanako3@bluebottle.com","sentAt":"2008-06-06T21:46:34Z","receivedAt":"2008-06-06T21:46:34Z","isPatch":true,"sender":{"key":"nanako3@lavabit.com","avatar":"https://gravatar.com/avatar/3777b9e201c5883a62b1a6fdf7c53f2d712d1d80989146063ea861e33aad72a8?d=mp&s=160"},"body":"Quoting Johannes Schindelin <Johannes.Schindelin@gmx.de>:\n\n> Hi,\n>\n> On Fri, 6 Jun 2008, Paolo Bonzini wrote:\n>\n>> > What about people preferring the status quo?  I think a command line \n>> > option would be in order.'\n>> \n>> config option seems more useful.\n>\n> Except, of course, if you have a script that wants to override whatever \n> the user set in her config.\n\nBut I think that is not an issue.  Isn't \"git branch\" a Porcelain?\n\n-- \nNanako Shiraishi\nhttp://ivory.ap.teacup.com/nanako3/\n\n----------------------------------------------------------------------\nGet a free email account with anti spam protection.\nhttp://www.bluebottle.com/tag/2\n"},{"id":"78973","messageId":"alpine.DEB.1.00.0806070006150.1783@racer","threadId":"13813","inReplyTo":"d45085aa0806061417ue3f1f51i6580acbb51070e5b@mail.gmail.com","subject":"Re: [PATCH] use natural ordering to display list of branches.","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2008-06-06T23:06:30Z","receivedAt":"2008-06-06T23:06:30Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Fri, 6 Jun 2008, Cedric Vivier wrote:\n\n> On Fri, Jun 6, 2008 at 11:04 PM, Brandon Casey <casey@nrlssc.navy.mil> wrote:\n> > But can't that be just as easily done by piping through sort? (I \n> > understand there is a platform which lacks the sort utility, boohoo)\n> \n> Yes, but sort does not have a natural sort option afaik.\n\nsort -n\n\nHth,\nDscho\n"},{"id":"78976","messageId":"7v4p86rwfi.fsf@gitster.siamese.dyndns.org","threadId":"13813","inReplyTo":"alpine.DEB.1.00.0806070006150.1783@racer","subject":"Re: [PATCH] use natural ordering to display list of branches.","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2008-06-06T23:11:13Z","receivedAt":"2008-06-06T23:11:13Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:\n\n> On Fri, 6 Jun 2008, Cedric Vivier wrote:\n>\n>> On Fri, Jun 6, 2008 at 11:04 PM, Brandon Casey <casey@nrlssc.navy.mil> wrote:\n>> > But can't that be just as easily done by piping through sort? (I \n>> > understand there is a platform which lacks the sort utility, boohoo)\n>> \n>> Yes, but sort does not have a natural sort option afaik.\n>\n> sort -n\n\nThat's Numeric sort, isn't it?\n\nI sometimes dreamed of having \"sort --random\" for testing purposes ;-)\n"},{"id":"78977","messageId":"alpine.DEB.1.10.0806061613300.886@sf.creativecommons.org","threadId":"13813","inReplyTo":"7v4p86rwfi.fsf@gitster.siamese.dyndns.org","subject":"Re: [PATCH] use natural ordering to display list of branches.","fromName":"Asheesh Laroia","fromEmail":"asheesh@asheesh.org","sentAt":"2008-06-06T23:13:48Z","receivedAt":"2008-06-06T23:13:48Z","isPatch":true,"sender":{"key":"asheesh@asheesh.org","avatar":"https://avatars.githubusercontent.com/u/25457?v=4"},"body":"On Fri, 6 Jun 2008, Junio C Hamano wrote:\n\n> Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:\n>\n>> On Fri, 6 Jun 2008, Cedric Vivier wrote:\n>>\n>>> On Fri, Jun 6, 2008 at 11:04 PM, Brandon Casey <casey@nrlssc.navy.mil> wrote:\n>>>> But can't that be just as easily done by piping through sort? (I\n>>>> understand there is a platform which lacks the sort utility, boohoo)\n>>>\n>>> Yes, but sort does not have a natural sort option afaik.\n>>\n>> sort -n\n>\n> That's Numeric sort, isn't it?\n>\n> I sometimes dreamed of having \"sort --random\" for testing purposes ;-)\n\nI use \"bogosort -n\" for that.\n\n-- Asheesh.\n\n-- \nWe are the people our parents warned us about.\n"},{"id":"78992","messageId":"d45085aa0806061713k72108a87qa6635a5935732f20@mail.gmail.com","threadId":"13813","inReplyTo":"alpine.DEB.1.00.0806070006150.1783@racer","subject":"Re: [PATCH] use natural ordering to display list of branches.","fromName":"Cedric Vivier","fromEmail":"cedricv@neonux.com","sentAt":"2008-06-07T00:13:36Z","receivedAt":"2008-06-07T00:13:36Z","isPatch":true,"sender":{"key":"cedricv@neonux.com","avatar":"https://gravatar.com/avatar/35912cb08339380c2cf2f38de9da49fa9a6699644865f63c310a64c436cc70a0?d=mp&s=160"},"body":"On Sat, Jun 7, 2008 at 1:06 AM, Johannes Schindelin\n<Johannes.Schindelin@gmx.de> wrote:\n>> On Fri, Jun 6, 2008 at 11:04 PM, Brandon Casey <casey@nrlssc.navy.mil> wrote:\n>> > But can't that be just as easily done by piping through sort? (I\n>> > understand there is a platform which lacks the sort utility, boohoo)\n>>\n>> Yes, but sort does not have a natural sort option afaik.\n>\n> sort -n\n\nHi!\n\nIt is not natural sort but usual boring non-natural numeric sort ;)\nWith the use-case in original post the list would appear exactly the\nsame than with strcmp sort.\n"},{"id":"78994","messageId":"7vej7aqetd.fsf@gitster.siamese.dyndns.org","threadId":"13813","inReplyTo":"d45085aa0806061713k72108a87qa6635a5935732f20@mail.gmail.com","subject":"Re: [PATCH] use natural ordering to display list of branches.","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2008-06-07T00:17:02Z","receivedAt":"2008-06-07T00:17:02Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"\"Cedric Vivier\" <cedricv@neonux.com> writes:\n\n> On Sat, Jun 7, 2008 at 1:06 AM, Johannes Schindelin\n> <Johannes.Schindelin@gmx.de> wrote:\n>>> On Fri, Jun 6, 2008 at 11:04 PM, Brandon Casey <casey@nrlssc.navy.mil> wrote:\n>>> > But can't that be just as easily done by piping through sort? (I\n>>> > understand there is a platform which lacks the sort utility, boohoo)\n>>>\n>>> Yes, but sort does not have a natural sort option afaik.\n>>\n>> sort -n\n>\n> Hi!\n>\n> It is not natural sort but usual boring non-natural numeric sort ;)\n> With the use-case in original post the list would appear exactly the\n> same than with strcmp sort.\n\nSomebody suggested strvercmp(); how does the natcmp() compare with it?\n"},{"id":"78999","messageId":"d45085aa0806061743w65df3cd7pe4cf5fa29f83930a@mail.gmail.com","threadId":"13813","inReplyTo":"7vej7aqetd.fsf@gitster.siamese.dyndns.org","subject":"Re: [PATCH] use natural ordering to display list of branches.","fromName":"Cedric Vivier","fromEmail":"cedricv@neonux.com","sentAt":"2008-06-07T00:43:29Z","receivedAt":"2008-06-07T00:43:29Z","isPatch":true,"sender":{"key":"cedricv@neonux.com","avatar":"https://gravatar.com/avatar/35912cb08339380c2cf2f38de9da49fa9a6699644865f63c310a64c436cc70a0?d=mp&s=160"},"body":"On Sat, Jun 7, 2008 at 2:17 AM, Junio C Hamano <gitster@pobox.com> wrote:\n> Somebody suggested strvercmp(); how does the natcmp() compare with it?\n>\n\nYeah I did, as a heads-up from the discussion on the apache\nmailing-list linked earlier.\nI've just checked out glibc's implementation, the result would be the\nsame, the code seems better to me, and there is no doubt the license\nis 100% compatible this way [1], sounds cool.\n\n[1] as I guess we'd still have to borrow the code from glibc and put\nit into git's compat/ directory (or whatever name is choosen in the\nend for this kind of borrowed stuff) to make it work on non-glibc\nplatforms (?)\n"},{"id":"79012","messageId":"20080607044211.GA29096@sigill.intra.peff.net","threadId":"13813","inReplyTo":"7v4p86rwfi.fsf@gitster.siamese.dyndns.org","subject":"Re: [PATCH] use natural ordering to display list of branches.","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2008-06-07T04:42:12Z","receivedAt":"2008-06-07T04:42:12Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Fri, Jun 06, 2008 at 04:11:13PM -0700, Junio C Hamano wrote:\n\n> I sometimes dreamed of having \"sort --random\" for testing purposes ;-)\n\nperl -MList::Util=shuffle -e 'print shuffle <>'\n\n-Peff\n"},{"id":"79017","messageId":"7vfxrppwha.fsf@gitster.siamese.dyndns.org","threadId":"13813","inReplyTo":"d45085aa0806061743w65df3cd7pe4cf5fa29f83930a@mail.gmail.com","subject":"Re: [PATCH] use natural ordering to display list of branches.","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2008-06-07T06:53:05Z","receivedAt":"2008-06-07T06:53:05Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"\"Cedric Vivier\" <cedricv@neonux.com> writes:\n\n> On Sat, Jun 7, 2008 at 2:17 AM, Junio C Hamano <gitster@pobox.com> wrote:\n>> Somebody suggested strvercmp(); how does the natcmp() compare with it?\n>>\n>\n> Yeah I did, as a heads-up from the discussion on the apache\n> mailing-list linked earlier.\n> I've just checked out glibc's implementation, the result would be the\n> same, the code seems better to me, and there is no doubt the license\n> is 100% compatible this way [1], sounds cool.\n>\n> [1] as I guess we'd still have to borrow the code from glibc and put\n> it into git's compat/ directory (or whatever name is choosen in the\n> end for this kind of borrowed stuff) to make it work on non-glibc\n> platforms (?)\n\nYes, and we have precedents to it, like compat/strcasestr.c\n"},{"id":"79211","messageId":"484CE309.6000908@op5.se","threadId":"13813","inReplyTo":"d45085aa0806060154p58e7e87dk636d519cbdcf2dc7@mail.gmail.com","subject":"Re: [PATCH] use natural ordering to display list of branches.","fromName":"Andreas Ericsson","fromEmail":"ae@op5.se","sentAt":"2008-06-09T08:00:09Z","receivedAt":"2008-06-09T08:00:09Z","isPatch":true,"sender":{"key":"ae@op5.se","avatar":"https://gravatar.com/avatar/426e89595c75a8f5252dd0c989e5fabe5bcac616e68557427ad9aef6b0ca342a?d=mp&s=160"},"body":"Cedric Vivier wrote:\n> \n> I've found a discussion on the Apache mailing-list where the author,\n> Martin Pool seems to ack that this is ok to include his code in GPL'ed\n> code or even to relicense it :\n> http://lists.debian.org/debian-glibc/2003/10/msg00016.html\n> \n\nAFAIU, that's the same as putting it in the public domain.\n\n> Also maybe we could use glibc's strverscmp instead, but am not sure of\n> its portability ?\n\nglibc is extremely portable. In particular the code that doesn't require\nanything in particular from the OS (which strvercmp() really shouldn't).\n\n-- \nAndreas Ericsson                   andreas.ericsson@op5.se\nOP5 AB                             www.op5.se\nTel: +46 8-230225                  Fax: +46 8-230231\n"},{"id":"79993","messageId":"98E71E29-BDAD-4C80-AB44-37CC4D355053@develooper.com","threadId":"13813","inReplyTo":"alpine.DEB.1.00.0806051946100.21190@racer","subject":"Re: [PATCH] use natural ordering to display list of branches.","fromName":"Ask Bjørn Hansen","fromEmail":"ask@develooper.com","sentAt":"2008-06-15T23:26:03Z","receivedAt":"2008-06-15T23:26:03Z","isPatch":true,"sender":{"key":"ask@develooper.com","avatar":"https://gravatar.com/avatar/05ce68433216df7d04bb0d82b7d93b11957e2137e6ed23c4b5bc061d78635f2f?d=mp&s=160"},"body":"\nNot to pick on anyone in particular, but as a casual reader of the  \nlist just having read the 25 replies this patch got I feel compelled  \nto send a link to the original \"any colour of bikeshed will do\" mail.\n\n\thttp://xrl.us/b7g9d (Link to www.freebsd.org)\n\tor http://www.bikeshed.com/\t\n\n\n\n  - ask\n\n-- \nhttp://develooper.com/ - http://askask.com/\n"}]}