{"thread":{"id":"37088","subject":"[PATCH v2] tag: support configuring --sort via .gitconfig","startedAt":"2014-07-09T22:36:51Z","lastAt":"2014-07-10T22:46:04Z","messageCount":8,"participants":["Jacob Keller","Jeff King","Junio C Hamano","Keller, Jacob E"],"isPatch":true,"patchVersion":2,"patchTotal":null},"messages":[{"id":"245671","messageId":"1404945412-10197-1-git-send-email-jacob.e.keller@intel.com","threadId":"37088","inReplyTo":null,"subject":"[PATCH v2] tag: support configuring --sort via .gitconfig","fromName":"Jacob Keller","fromEmail":"jacob.e.keller@intel.com","sentAt":"2014-07-09T22:36:51Z","receivedAt":"2014-07-09T22:36:51Z","isPatch":true,"sender":{"key":"jacob.e.keller@intel.com","avatar":"https://avatars.githubusercontent.com/u/874719?v=4"},"body":"Add support for configuring default sort ordering for git tags. Command\nline option will override this configured value, using the exact same\nsyntax.\n\nCc: Jeff King <peff@peff.net>\nSigned-off-by: Jacob Keller <jacob.e.keller@intel.com>\n---\nRepost with changes suggested by Peff. These include fixing documentation to\nremove duplicatation, and having git-config reference git-tag. Directly assign\na tag_sort global that we use for the config and option variable. \n\n Documentation/config.txt  |  6 +++++\n Documentation/git-tag.txt |  1 +\n builtin/tag.c             | 60 ++++++++++++++++++++++++++++++-----------------\n t/t7004-tag.sh            | 21 +++++++++++++++++\n 4 files changed, 67 insertions(+), 21 deletions(-)\n\ndiff --git a/Documentation/config.txt b/Documentation/config.txt\nindex 1d718bdb9662..ad8e75fed988 100644\n--- a/Documentation/config.txt\n+++ b/Documentation/config.txt\n@@ -2354,6 +2354,12 @@ submodule.<name>.ignore::\n \t\"--ignore-submodules\" option. The 'git submodule' commands are not\n \taffected by this setting.\n \n+tag.sort::\n+\tThis variable is used to control the sort ordering of tags. It is\n+\tinterpreted precisely the same way as \"--sort=<value>\". If --sort is\n+\tgiven on the command line it will override the selection chosen in the\n+\tconfiguration. See linkgit:git-tag[1] for more details.\n+\n tar.umask::\n \tThis variable can be used to restrict the permission bits of\n \ttar archive entries.  The default is 0002, which turns off the\ndiff --git a/Documentation/git-tag.txt b/Documentation/git-tag.txt\nindex b424a1bc48bb..2d246725aeb5 100644\n--- a/Documentation/git-tag.txt\n+++ b/Documentation/git-tag.txt\n@@ -317,6 +317,7 @@ include::date-formats.txt[]\n SEE ALSO\n --------\n linkgit:git-check-ref-format[1].\n+linkgit:git-config[1].\n \n GIT\n ---\ndiff --git a/builtin/tag.c b/builtin/tag.c\nindex ef765563388c..a679e32db866 100644\n--- a/builtin/tag.c\n+++ b/builtin/tag.c\n@@ -18,6 +18,8 @@\n #include \"sha1-array.h\"\n #include \"column.h\"\n \n+static int tag_sort = 0;\n+\n static const char * const git_tag_usage[] = {\n \tN_(\"git tag [-a|-s|-u <key-id>] [-f] [-m <msg>|-F <file>] <tagname> [<head>]\"),\n \tN_(\"git tag -d <tagname>...\"),\n@@ -346,9 +348,39 @@ static const char tag_template_nocleanup[] =\n \t\"Lines starting with '%c' will be kept; you may remove them\"\n \t\" yourself if you want to.\\n\");\n \n+static int parse_sort_string(const char *arg)\n+{\n+\tint sort = 0;\n+\tint flags = 0;\n+\n+\tif (*arg == '-') {\n+\t\tflags |= REVERSE_SORT;\n+\t\targ++;\n+\t}\n+\tif (starts_with(arg, \"version:\")) {\n+\t\tsort = VERCMP_SORT;\n+\t\targ += 8;\n+\t} else if (starts_with(arg, \"v:\")) {\n+\t\tsort = VERCMP_SORT;\n+\t\targ += 2;\n+\t} else\n+\t\tsort = STRCMP_SORT;\n+\tif (strcmp(arg, \"refname\"))\n+\t\tdie(_(\"unsupported sort specification %s\"), arg);\n+\tsort |= flags;\n+\n+\treturn sort;\n+}\n+\n static int git_tag_config(const char *var, const char *value, void *cb)\n {\n-\tint status = git_gpg_config(var, value, cb);\n+\tint status;\n+\n+\tif (!strcmp(var, \"tag.sort\")) {\n+\t\ttag_sort = parse_sort_string(value);\n+\t}\n+\n+\tstatus = git_gpg_config(var, value, cb);\n \tif (status)\n \t\treturn status;\n \tif (starts_with(var, \"column.\"))\n@@ -522,23 +554,9 @@ static int parse_opt_points_at(const struct option *opt __attribute__((unused)),\n static int parse_opt_sort(const struct option *opt, const char *arg, int unset)\n {\n \tint *sort = opt->value;\n-\tint flags = 0;\n \n-\tif (*arg == '-') {\n-\t\tflags |= REVERSE_SORT;\n-\t\targ++;\n-\t}\n-\tif (starts_with(arg, \"version:\")) {\n-\t\t*sort = VERCMP_SORT;\n-\t\targ += 8;\n-\t} else if (starts_with(arg, \"v:\")) {\n-\t\t*sort = VERCMP_SORT;\n-\t\targ += 2;\n-\t} else\n-\t\t*sort = STRCMP_SORT;\n-\tif (strcmp(arg, \"refname\"))\n-\t\tdie(_(\"unsupported sort specification %s\"), arg);\n-\t*sort |= flags;\n+\t*sort = parse_sort_string(arg);\n+\n \treturn 0;\n }\n \n@@ -552,7 +570,7 @@ int cmd_tag(int argc, const char **argv, const char *prefix)\n \tstruct create_tag_options opt;\n \tchar *cleanup_arg = NULL;\n \tint annotate = 0, force = 0, lines = -1;\n-\tint cmdmode = 0, sort = 0;\n+\tint cmdmode = 0;\n \tconst char *msgfile = NULL, *keyid = NULL;\n \tstruct msg_arg msg = { 0, STRBUF_INIT };\n \tstruct commit_list *with_commit = NULL;\n@@ -578,7 +596,7 @@ int cmd_tag(int argc, const char **argv, const char *prefix)\n \t\tOPT__FORCE(&force, N_(\"replace the tag if exists\")),\n \t\tOPT_COLUMN(0, \"column\", &colopts, N_(\"show tag list in columns\")),\n \t\t{\n-\t\t\tOPTION_CALLBACK, 0, \"sort\", &sort, N_(\"type\"), N_(\"sort tags\"),\n+\t\t\tOPTION_CALLBACK, 0, \"sort\", &tag_sort, N_(\"type\"), N_(\"sort tags\"),\n \t\t\tPARSE_OPT_NONEG, parse_opt_sort\n \t\t},\n \n@@ -634,9 +652,9 @@ int cmd_tag(int argc, const char **argv, const char *prefix)\n \t\t\tcopts.padding = 2;\n \t\t\trun_column_filter(colopts, &copts);\n \t\t}\n-\t\tif (lines != -1 && sort)\n+\t\tif (lines != -1 && tag_sort)\n \t\t\tdie(_(\"--sort and -n are incompatible\"));\n-\t\tret = list_tags(argv, lines == -1 ? 0 : lines, with_commit, sort);\n+\t\tret = list_tags(argv, lines == -1 ? 0 : lines, with_commit, tag_sort);\n \t\tif (column_active(colopts))\n \t\t\tstop_column_filter();\n \t\treturn ret;\ndiff --git a/t/t7004-tag.sh b/t/t7004-tag.sh\nindex e4ab0f5b6419..1e8300f6ed7c 100755\n--- a/t/t7004-tag.sh\n+++ b/t/t7004-tag.sh\n@@ -1423,6 +1423,27 @@ EOF\n \ttest_cmp expect actual\n '\n \n+test_expect_success 'configured lexical sort' '\n+\tgit config tag.sort \"v:refname\" &&\n+\tgit tag -l \"foo*\" >actual &&\n+\tcat >expect <<EOF &&\n+foo1.3\n+foo1.6\n+foo1.10\n+EOF\n+\ttest_cmp expect actual\n+'\n+\n+test_expect_success 'option override configured sort' '\n+\tgit tag -l --sort=-refname \"foo*\" >actual &&\n+\tcat >expect <<EOF &&\n+foo1.6\n+foo1.3\n+foo1.10\n+EOF\n+\ttest_cmp expect actual\n+'\n+\n run_with_limited_stack () {\n \t(ulimit -s 64 && \"$@\")\n }\n-- \n2.0.1.475.g9b8d714\n"},{"id":"245676","messageId":"20140710040019.GC28401@sigill.intra.peff.net","threadId":"37088","inReplyTo":"1404945412-10197-1-git-send-email-jacob.e.keller@intel.com","subject":"Re: [PATCH v2] tag: support configuring --sort via .gitconfig","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2014-07-10T04:00:19Z","receivedAt":"2014-07-10T04:00:19Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Wed, Jul 09, 2014 at 03:36:51PM -0700, Jacob Keller wrote:\n\n> Add support for configuring default sort ordering for git tags. Command\n> line option will override this configured value, using the exact same\n> syntax.\n\nThanks, this version looks pretty good to me. A few minor comments:\n\n> +\tif (!strcmp(var, \"tag.sort\")) {\n> +\t\ttag_sort = parse_sort_string(value);\n> +\t}\n\nOur style is to usually avoid braces for a one-liner. However, I think\nwould actually make sense to \"return 0\" from this conditional.\n\n> +test_expect_success 'configured lexical sort' '\n> +\tgit config tag.sort \"v:refname\" &&\n> +\tgit tag -l \"foo*\" >actual &&\n> [...]\n\nPlease use:\n\n  test_config tag.sort \"v:refname\"\n\nhere, which will clean up the config value after the test ends (and thus\nnot pollute any later tests).\n\nThough you will need to add an extra \"test_config\" to the following\ntest:\n\n> +test_expect_success 'option override configured sort' '\n> +\tgit tag -l --sort=-refname \"foo*\" >actual &&\n> [...]\n\nI think that's a good thing, though (it makes it more clear in the\nsecond test what is being tested, rather than relying on the state left\nby the previous test).\n\n-Peff\n"},{"id":"245677","messageId":"20140710040731.GD28401@sigill.intra.peff.net","threadId":"37088","inReplyTo":"1404945412-10197-1-git-send-email-jacob.e.keller@intel.com","subject":"Re: [PATCH v2] tag: support configuring --sort via .gitconfig","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2014-07-10T04:07:32Z","receivedAt":"2014-07-10T04:07:32Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Wed, Jul 09, 2014 at 03:36:51PM -0700, Jacob Keller wrote:\n\n> +static int parse_sort_string(const char *arg)\n> +{\n> +\tint sort = 0;\n> +\tint flags = 0;\n> +\n> +\tif (*arg == '-') {\n> +\t\tflags |= REVERSE_SORT;\n> +\t\targ++;\n> +\t}\n> +\tif (starts_with(arg, \"version:\")) {\n> +\t\tsort = VERCMP_SORT;\n> +\t\targ += 8;\n> +\t} else if (starts_with(arg, \"v:\")) {\n> +\t\tsort = VERCMP_SORT;\n> +\t\targ += 2;\n> +\t} else\n> +\t\tsort = STRCMP_SORT;\n> +\tif (strcmp(arg, \"refname\"))\n> +\t\tdie(_(\"unsupported sort specification %s\"), arg);\n> +\tsort |= flags;\n> +\n> +\treturn sort;\n> +}\n\nI know this is existing code you are moving, but I noticed it looks ripe\nfor using skip_prefix. Perhaps while we are in the area we should do the\nfollowing on top of your patch (I'd also be happy for it be squashed\nin, but that may be too much in one patch).\n\n-- >8 --\nSubject: [PATCH] tag: use skip_prefix instead of magic numbers\n\nWe can make the parsing of the --sort parameter a bit more\nreadable by having skip_prefix keep our pointer up to date.\n\nSigned-off-by: Jeff King <peff@peff.net>\n---\n builtin/tag.c | 14 +++++---------\n 1 file changed, 5 insertions(+), 9 deletions(-)\n\ndiff --git a/builtin/tag.c b/builtin/tag.c\nindex a679e32..016df98 100644\n--- a/builtin/tag.c\n+++ b/builtin/tag.c\n@@ -353,18 +353,14 @@ static int parse_sort_string(const char *arg)\n \tint sort = 0;\n \tint flags = 0;\n \n-\tif (*arg == '-') {\n+\tif (skip_prefix(arg, \"-\", &arg))\n \t\tflags |= REVERSE_SORT;\n-\t\targ++;\n-\t}\n-\tif (starts_with(arg, \"version:\")) {\n-\t\tsort = VERCMP_SORT;\n-\t\targ += 8;\n-\t} else if (starts_with(arg, \"v:\")) {\n+\n+\tif (skip_prefix(arg, \"version:\", &arg) || skip_prefix(arg, \"v:\", &arg))\n \t\tsort = VERCMP_SORT;\n-\t\targ += 2;\n-\t} else\n+\telse\n \t\tsort = STRCMP_SORT;\n+\n \tif (strcmp(arg, \"refname\"))\n \t\tdie(_(\"unsupported sort specification %s\"), arg);\n \tsort |= flags;\n-- \n2.0.0.566.gfe3e6b2\n"},{"id":"245700","messageId":"xmqqa98h8587.fsf@gitster.dls.corp.google.com","threadId":"37088","inReplyTo":"20140710040731.GD28401@sigill.intra.peff.net","subject":"Re: [PATCH v2] tag: support configuring --sort via .gitconfig","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2014-07-10T17:59:36Z","receivedAt":"2014-07-10T17:59:36Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Jeff King <peff@peff.net> writes:\n\n> I know this is existing code you are moving, but I noticed it looks ripe\n> for using skip_prefix. Perhaps while we are in the area we should do the\n> following on top of your patch (I'd also be happy for it be squashed\n> in, but that may be too much in one patch).\n\nI am tempted to suggest going the other way around, i.e. queue (an\nequivalent of) this on jk/skip-prefix and merge it to 'next' and\nthen 'master' quickly.\n\nI can go either way, but I tend to prefer building new things on top\nof obviously correct clean-up, not the other way around.\n\n> -- >8 --\n> Subject: [PATCH] tag: use skip_prefix instead of magic numbers\n>\n> We can make the parsing of the --sort parameter a bit more\n> readable by having skip_prefix keep our pointer up to date.\n>\n> Signed-off-by: Jeff King <peff@peff.net>\n\n\n builtin/tag.c | 14 +++++---------\n 1 file changed, 5 insertions(+), 9 deletions(-)\n\ndiff --git a/builtin/tag.c b/builtin/tag.c\nindex c6e8a71..1101c19 100644\n--- a/builtin/tag.c\n+++ b/builtin/tag.c\n@@ -524,18 +524,14 @@ static int parse_opt_sort(const struct option *opt, const char *arg, int unset)\n \tint *sort = opt->value;\n \tint flags = 0;\n \n-\tif (*arg == '-') {\n+\tif (skip_prefix(arg, \"-\", &arg))\n \t\tflags |= REVERSE_SORT;\n-\t\targ++;\n-\t}\n-\tif (starts_with(arg, \"version:\")) {\n-\t\t*sort = VERCMP_SORT;\n-\t\targ += 8;\n-\t} else if (starts_with(arg, \"v:\")) {\n+\n+\tif (skip_prefix(arg, \"version:\", &arg) || skip_prefix(arg, \"v:\", &arg))\n \t\t*sort = VERCMP_SORT;\n-\t\targ += 2;\n-\t} else\n+\telse\n \t\t*sort = STRCMP_SORT;\n+\n \tif (strcmp(arg, \"refname\"))\n \t\tdie(_(\"unsupported sort specification %s\"), arg);\n \t*sort |= flags;\n"},{"id":"245704","messageId":"20140710193404.GA15615@sigill.intra.peff.net","threadId":"37088","inReplyTo":"xmqqa98h8587.fsf@gitster.dls.corp.google.com","subject":"Re: [PATCH v2] tag: support configuring --sort via .gitconfig","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2014-07-10T19:34:04Z","receivedAt":"2014-07-10T19:34:04Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Thu, Jul 10, 2014 at 10:59:36AM -0700, Junio C Hamano wrote:\n\n> Jeff King <peff@peff.net> writes:\n> \n> > I know this is existing code you are moving, but I noticed it looks ripe\n> > for using skip_prefix. Perhaps while we are in the area we should do the\n> > following on top of your patch (I'd also be happy for it be squashed\n> > in, but that may be too much in one patch).\n> \n> I am tempted to suggest going the other way around, i.e. queue (an\n> equivalent of) this on jk/skip-prefix and merge it to 'next' and\n> then 'master' quickly.\n> \n> I can go either way, but I tend to prefer building new things on top\n> of obviously correct clean-up, not the other way around.\n\nMe too. I just didn't want to make more work for Jacob (in having to\nrebase on top of mine) or for you (in having to do a non-obvious merge a\nfew days from now).\n\n-Peff\n"},{"id":"245714","messageId":"1405024718.4925.0.camel@jekeller-desk1.amr.corp.intel.com","threadId":"37088","inReplyTo":"20140710040731.GD28401@sigill.intra.peff.net","subject":"Re: [PATCH v2] tag: support configuring --sort via .gitconfig","fromName":"Keller, Jacob E","fromEmail":"jacob.e.keller@intel.com","sentAt":"2014-07-10T20:38:38Z","receivedAt":"2014-07-10T20:38:38Z","isPatch":true,"sender":{"key":"jacob.e.keller@intel.com","avatar":"https://avatars.githubusercontent.com/u/874719?v=4"},"body":"On Thu, 2014-07-10 at 00:07 -0400, Jeff King wrote:\n> On Wed, Jul 09, 2014 at 03:36:51PM -0700, Jacob Keller wrote:\n> \n> > +static int parse_sort_string(const char *arg)\n> > +{\n> > +\tint sort = 0;\n> > +\tint flags = 0;\n> > +\n> > +\tif (*arg == '-') {\n> > +\t\tflags |= REVERSE_SORT;\n> > +\t\targ++;\n> > +\t}\n> > +\tif (starts_with(arg, \"version:\")) {\n> > +\t\tsort = VERCMP_SORT;\n> > +\t\targ += 8;\n> > +\t} else if (starts_with(arg, \"v:\")) {\n> > +\t\tsort = VERCMP_SORT;\n> > +\t\targ += 2;\n> > +\t} else\n> > +\t\tsort = STRCMP_SORT;\n> > +\tif (strcmp(arg, \"refname\"))\n> > +\t\tdie(_(\"unsupported sort specification %s\"), arg);\n> > +\tsort |= flags;\n> > +\n> > +\treturn sort;\n> > +}\n> \n> I know this is existing code you are moving, but I noticed it looks ripe\n> for using skip_prefix. Perhaps while we are in the area we should do the\n> following on top of your patch (I'd also be happy for it be squashed\n> in, but that may be too much in one patch).\n> \n\nI am fine with this being another patch or squashed in. I didn't even\nknow that was available :) I also like putting the two equivalent\nconditionals into the same if block.\n\nThanks,\nJake\n\n> -- >8 --\n> Subject: [PATCH] tag: use skip_prefix instead of magic numbers\n> \n> We can make the parsing of the --sort parameter a bit more\n> readable by having skip_prefix keep our pointer up to date.\n> \n> Signed-off-by: Jeff King <peff@peff.net>\n> ---\n>  builtin/tag.c | 14 +++++---------\n>  1 file changed, 5 insertions(+), 9 deletions(-)\n> \n> diff --git a/builtin/tag.c b/builtin/tag.c\n> index a679e32..016df98 100644\n> --- a/builtin/tag.c\n> +++ b/builtin/tag.c\n> @@ -353,18 +353,14 @@ static int parse_sort_string(const char *arg)\n>  \tint sort = 0;\n>  \tint flags = 0;\n>  \n> -\tif (*arg == '-') {\n> +\tif (skip_prefix(arg, \"-\", &arg))\n>  \t\tflags |= REVERSE_SORT;\n> -\t\targ++;\n> -\t}\n> -\tif (starts_with(arg, \"version:\")) {\n> -\t\tsort = VERCMP_SORT;\n> -\t\targ += 8;\n> -\t} else if (starts_with(arg, \"v:\")) {\n> +\n> +\tif (skip_prefix(arg, \"version:\", &arg) || skip_prefix(arg, \"v:\", &arg))\n>  \t\tsort = VERCMP_SORT;\n> -\t\targ += 2;\n> -\t} else\n> +\telse\n>  \t\tsort = STRCMP_SORT;\n> +\n>  \tif (strcmp(arg, \"refname\"))\n>  \t\tdie(_(\"unsupported sort specification %s\"), arg);\n>  \tsort |= flags;\n\n\n"},{"id":"245725","messageId":"1405029028.4925.32.camel@jekeller-desk1.amr.corp.intel.com","threadId":"37088","inReplyTo":"20140710193404.GA15615@sigill.intra.peff.net","subject":"Re: [PATCH v2] tag: support configuring --sort via .gitconfig","fromName":"Keller, Jacob E","fromEmail":"jacob.e.keller@intel.com","sentAt":"2014-07-10T21:50:29Z","receivedAt":"2014-07-10T21:50:29Z","isPatch":true,"sender":{"key":"jacob.e.keller@intel.com","avatar":"https://avatars.githubusercontent.com/u/874719?v=4"},"body":"On Thu, 2014-07-10 at 15:34 -0400, Jeff King wrote:\n> On Thu, Jul 10, 2014 at 10:59:36AM -0700, Junio C Hamano wrote:\n> \n> > Jeff King <peff@peff.net> writes:\n> > \n> > > I know this is existing code you are moving, but I noticed it looks ripe\n> > > for using skip_prefix. Perhaps while we are in the area we should do the\n> > > following on top of your patch (I'd also be happy for it be squashed\n> > > in, but that may be too much in one patch).\n> > \n> > I am tempted to suggest going the other way around, i.e. queue (an\n> > equivalent of) this on jk/skip-prefix and merge it to 'next' and\n> > then 'master' quickly.\n> > \n> > I can go either way, but I tend to prefer building new things on top\n> > of obviously correct clean-up, not the other way around.\n> \n> Me too. I just didn't want to make more work for Jacob (in having to\n> rebase on top of mine) or for you (in having to do a non-obvious merge a\n> few days from now).\n> \n> -Peff\n\nI'm perfectly fine rebasing. :)\n\nThanks,\nJake\n"},{"id":"245730","messageId":"xmqq38e87ryr.fsf@gitster.dls.corp.google.com","threadId":"37088","inReplyTo":"1405029028.4925.32.camel@jekeller-desk1.amr.corp.intel.com","subject":"Re: [PATCH v2] tag: support configuring --sort via .gitconfig","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2014-07-10T22:46:04Z","receivedAt":"2014-07-10T22:46:04Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"\"Keller, Jacob E\" <jacob.e.keller@intel.com> writes:\n\n> On Thu, 2014-07-10 at 15:34 -0400, Jeff King wrote:\n>> On Thu, Jul 10, 2014 at 10:59:36AM -0700, Junio C Hamano wrote:\n>> \n>> > Jeff King <peff@peff.net> writes:\n>> > \n>> > > I know this is existing code you are moving, but I noticed it looks ripe\n>> > > for using skip_prefix. Perhaps while we are in the area we should do the\n>> > > following on top of your patch (I'd also be happy for it be squashed\n>> > > in, but that may be too much in one patch).\n>> > \n>> > I am tempted to suggest going the other way around, i.e. queue (an\n>> > equivalent of) this on jk/skip-prefix and merge it to 'next' and\n>> > then 'master' quickly.\n>> > \n>> > I can go either way, but I tend to prefer building new things on top\n>> > of obviously correct clean-up, not the other way around.\n>> \n>> Me too. I just didn't want to make more work for Jacob (in having to\n>> rebase on top of mine) or for you (in having to do a non-obvious merge a\n>> few days from now).\n>> \n>> -Peff\n>\n> I'm perfectly fine rebasing. :)\n\nAlright, thanks.\n\nI am still not ready to push out today's integration result, but\nwhen it happens, Peff's \"tag: use skip_prefix\" should appear at\nce85604, as a direct follow-up to the tip of already merged\njk/skip-prefix topic which was 67a31f61 (http-push: refactor parsing\nof remote object names, 2014-06-19).\n"}]}