{"thread":{"id":"34732","subject":"[PATCH] mailmap: fix check for freeing memory","startedAt":"2013-08-20T13:22:38Z","lastAt":"2013-08-20T17:45:05Z","messageCount":12,"participants":["Stefan Beller","Thomas Rast","Jeff King","Junio C Hamano"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"225505","messageId":"1377004958-14489-1-git-send-email-stefanbeller@googlemail.com","threadId":"34732","inReplyTo":null,"subject":"[PATCH] mailmap: fix check for freeing memory","fromName":"Stefan Beller","fromEmail":"stefanbeller@googlemail.com","sentAt":"2013-08-20T13:22:38Z","receivedAt":"2013-08-20T13:22:38Z","isPatch":true,"sender":{"key":"stefanbeller@gmail.com","avatar":"https://avatars.githubusercontent.com/u/455868?v=4"},"body":"The condition as it is written in that line was most likely intended to\ncheck for the pointer passed to free(), rather than checking for the\n'repo_abbrev', which is already checked against being non null at the\nbeginning of the function.\n\nSigned-off-by: Stefan Beller <stefanbeller@googlemail.com>\n---\n mailmap.c | 2 +-\n 1 file changed, 1 insertion(+), 1 deletion(-)\n\ndiff --git a/mailmap.c b/mailmap.c\nindex 44614fc..36d2a7a 100644\n--- a/mailmap.c\n+++ b/mailmap.c\n@@ -139,35 +139,35 @@ static char *parse_name_and_email(char *buffer, char **name,\n static void read_mailmap_line(struct string_list *map, char *buffer,\n \t\t\t      char **repo_abbrev)\n {\n \tchar *name1 = NULL, *email1 = NULL, *name2 = NULL, *email2 = NULL;\n \tif (buffer[0] == '#') {\n \t\tstatic const char abbrev[] = \"# repo-abbrev:\";\n \t\tint abblen = sizeof(abbrev) - 1;\n \t\tint len = strlen(buffer);\n \n \t\tif (!repo_abbrev)\n \t\t\treturn;\n \n \t\tif (len && buffer[len - 1] == '\\n')\n \t\t\tbuffer[--len] = 0;\n \t\tif (!strncmp(buffer, abbrev, abblen)) {\n \t\t\tchar *cp;\n \n-\t\t\tif (repo_abbrev)\n+\t\t\tif (*repo_abbrev)\n \t\t\t\tfree(*repo_abbrev);\n \t\t\t*repo_abbrev = xmalloc(len);\n \n \t\t\tfor (cp = buffer + abblen; isspace(*cp); cp++)\n \t\t\t\t; /* nothing */\n \t\t\tstrcpy(*repo_abbrev, cp);\n \t\t}\n \t\treturn;\n \t}\n \tif ((name2 = parse_name_and_email(buffer, &name1, &email1, 0)) != NULL)\n \t\tparse_name_and_email(name2, &name2, &email2, 1);\n \n \tif (email1)\n \t\tadd_mapping(map, name1, email1, name2, email2);\n }\n \n static int read_mailmap_file(struct string_list *map, const char *filename,\n-- \n1.8.4.rc3.1.gc1ebd90\n"},{"id":"225507","messageId":"878uzw7a6l.fsf@linux-k42r.v.cablecom.net","threadId":"34732","inReplyTo":"1377004958-14489-1-git-send-email-stefanbeller@googlemail.com","subject":"Re: [PATCH] mailmap: fix check for freeing memory","fromName":"Thomas Rast","fromEmail":"trast@inf.ethz.ch","sentAt":"2013-08-20T13:40:02Z","receivedAt":"2013-08-20T13:40:02Z","isPatch":true,"sender":{"key":"tr@thomasrast.ch","avatar":"https://avatars.githubusercontent.com/u/153510?v=4"},"body":"Stefan Beller <stefanbeller@googlemail.com> writes:\n\n> The condition as it is written in that line was most likely intended to\n> check for the pointer passed to free(), rather than checking for the\n> 'repo_abbrev', which is already checked against being non null at the\n> beginning of the function.\n[...]\n> -\t\t\tif (repo_abbrev)\n> +\t\t\tif (*repo_abbrev)\n>  \t\t\t\tfree(*repo_abbrev);\n\nBut now the test is useless, because free(NULL) is defined to be a\nno-op.\n\n-- \nThomas Rast\ntrast@{inf,student}.ethz.ch\n"},{"id":"225508","messageId":"20130820135230.GA32370@sigill.intra.peff.net","threadId":"34732","inReplyTo":"878uzw7a6l.fsf@linux-k42r.v.cablecom.net","subject":"Re: [PATCH] mailmap: fix check for freeing memory","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2013-08-20T13:52:30Z","receivedAt":"2013-08-20T13:52:30Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Tue, Aug 20, 2013 at 03:40:02PM +0200, Thomas Rast wrote:\n\n> Stefan Beller <stefanbeller@googlemail.com> writes:\n> \n> > The condition as it is written in that line was most likely intended to\n> > check for the pointer passed to free(), rather than checking for the\n> > 'repo_abbrev', which is already checked against being non null at the\n> > beginning of the function.\n> [...]\n> > -\t\t\tif (repo_abbrev)\n> > +\t\t\tif (*repo_abbrev)\n> >  \t\t\t\tfree(*repo_abbrev);\n> \n> But now the test is useless, because free(NULL) is defined to be a\n> no-op.\n\nYeah, I think we should just drop the conditional completely.\n\nI am not sure of the complete back-story. The earlier check for\nrepo_abbrev to be non-NULL was added by 8503ee4, after this check on\nfree() already existed. So that was when this conditional became\nredundant.\n\nBut the line right after this one unconditionally assigns to\n\"*repo_abbrev\", so we would always segfault in such a case anyway (which\nis what 8503ee4 was fixing).\n\nSo I think it was either a misguided \"don't pass NULL to free\" check\nthat was simply wrong, or it was an incomplete \"make sure repo_abbrev is\nnot NULL\" check. And the first is useless, and the second is now\nredundant due to 8503ee4. So it should simply be free().\n\n-Peff\n"},{"id":"225512","messageId":"52137A63.3010609@googlemail.com","threadId":"34732","inReplyTo":"878uzw7a6l.fsf@linux-k42r.v.cablecom.net","subject":"Re: [PATCH] mailmap: fix check for freeing memory","fromName":"Stefan Beller","fromEmail":"stefanbeller@googlemail.com","sentAt":"2013-08-20T14:17:07Z","receivedAt":"2013-08-20T14:17:07Z","isPatch":true,"sender":{"key":"stefanbeller@gmail.com","avatar":"https://avatars.githubusercontent.com/u/455868?v=4"},"body":"On 08/20/2013 03:40 PM, Thomas Rast wrote:\n> Stefan Beller <stefanbeller@googlemail.com> writes:\n> \n>> The condition as it is written in that line was most likely intended to\n>> check for the pointer passed to free(), rather than checking for the\n>> 'repo_abbrev', which is already checked against being non null at the\n>> beginning of the function.\n> [...]\n>> -\t\t\tif (repo_abbrev)\n>> +\t\t\tif (*repo_abbrev)\n>>  \t\t\t\tfree(*repo_abbrev);\n> \n> But now the test is useless, because free(NULL) is defined to be a\n> no-op.\n> \n\nYes, indeed. Thanks for reviewing.\n\nStepping two steps back, I am trying to figure out, what this repo_abrev\nthing is doing, as I could find no documentation.\n\nIt's passed as a double pointer as declared in mailmap.h:\nint read_mailmap(struct string_list *map, char **repo_abbrev);\n\nHowever grepping for \"read_mailmap(\" (bracket to prevent finding \nread_mailmap_XXX as often used in mailmap.c itself) \n\tgrep -nHIirF --exclude-dir=.git -- \"read_mailmap(\"\nthroughout all the sources I just find one occurence having the\nsecond argument not being 'NULL' and that is in \n\tbuiltin/shortlog.c:212:\tread_mailmap(&log->mailmap, &log->common_repo_prefix);\n\nwhich turns out to be:\n\nvoid shortlog_init(struct shortlog *log)\n{\n\tmemset(log, 0, sizeof(*log));\n\n\tread_mailmap(&log->mailmap, &log->common_repo_prefix);\n\t...\n\nSo we're passing there an address, which was just set to zero.\nThis is the only occurence of passing a value at all and the value\nbeing passed is 0, so the free in the original patch doesn't need \nthat check either.\n\nAs I am resending the patch, could somebody please explain me\nthe mechanism of the \"# repo-abbrev:\" line? Even git itself doesn't\nuse it in the .mailmap file, but a quick google search shows up only\nkernel repositories.\n\nStefan\n\n\n"},{"id":"225513","messageId":"1377008280-17230-1-git-send-email-stefanbeller@googlemail.com","threadId":"34732","inReplyTo":"52137A63.3010609@googlemail.com","subject":"[PATCH] mailmap: remove redundant check for freeing memory","fromName":"Stefan Beller","fromEmail":"stefanbeller@googlemail.com","sentAt":"2013-08-20T14:18:00Z","receivedAt":"2013-08-20T14:18:00Z","isPatch":true,"sender":{"key":"stefanbeller@gmail.com","avatar":"https://avatars.githubusercontent.com/u/455868?v=4"},"body":"The condition as it is written in that line has already been checked\nin the beginning of the function, which was introduced in\n8503ee4 (2007-05-01, Fix read_mailmap to handle a caller uninterested\nin repo abbreviation)\n\nHelped-by: Jeff King <peff@peff.net>\nHelped-by: Thomas Rast <trast@inf.ethz.ch>\nSigned-off-by: Stefan Beller <stefanbeller@googlemail.com>\n---\n mailmap.c | 3 +--\n 1 file changed, 1 insertion(+), 2 deletions(-)\n\ndiff --git a/mailmap.c b/mailmap.c\nindex 44614fc..7d5caa6 100644\n--- a/mailmap.c\n+++ b/mailmap.c\n@@ -153,8 +153,7 @@ static void read_mailmap_line(struct string_list *map, char *buffer,\n \t\tif (!strncmp(buffer, abbrev, abblen)) {\n \t\t\tchar *cp;\n \n-\t\t\tif (repo_abbrev)\n-\t\t\t\tfree(*repo_abbrev);\n+\t\t\tfree(*repo_abbrev);\n \t\t\t*repo_abbrev = xmalloc(len);\n \n \t\t\tfor (cp = buffer + abblen; isspace(*cp); cp++)\n-- \n1.8.4.rc3.1.gc1ebd90\n"},{"id":"225515","messageId":"871u5o785o.fsf@linux-k42r.v.cablecom.net","threadId":"34732","inReplyTo":"52137A63.3010609@googlemail.com","subject":"Re: [PATCH] mailmap: fix check for freeing memory","fromName":"Thomas Rast","fromEmail":"trast@inf.ethz.ch","sentAt":"2013-08-20T14:23:47Z","receivedAt":"2013-08-20T14:23:47Z","isPatch":true,"sender":{"key":"tr@thomasrast.ch","avatar":"https://avatars.githubusercontent.com/u/153510?v=4"},"body":"Stefan Beller <stefanbeller@googlemail.com> writes:\n\n> As I am resending the patch, could somebody please explain me\n> the mechanism of the \"# repo-abbrev:\" line? Even git itself doesn't\n> use it in the .mailmap file, but a quick google search shows up only\n> kernel repositories.\n\nI had no idea (we really lack documentation on this), but some history\ndigging shows this:\n\n  commit 7595e2ee6ef9b35ebc8dc45543723e1d89765ce3\n  Author: Junio C Hamano <junkio@cox.net>\n  Date:   Sat Nov 25 00:07:54 2006 -0800\n\n      git-shortlog: make common repository prefix configurable with .mailmap\n      \n      The code had \"/pub/scm/linux/kernel/git/\" hardcoded which was\n      too specific to the kernel project.\n      \n      With this, a line in the .mailmap file:\n      \n          # repo-abbrev: /pub/scm/linux/kernel/git/\n      \n      can be used to cause the substring to be abbreviated to /.../\n      on the title line of the commit message.\n      \n      Signed-off-by: Junio C Hamano <junkio@cox.net>\n\nIt apparently serves to abbreviate commits coming from pull requests,\nwith a subject like\n\n  Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux\n\n-- \nThomas Rast\ntrast@{inf,student}.ethz.ch\n"},{"id":"225516","messageId":"20130820142755.GA839@sigill.intra.peff.net","threadId":"34732","inReplyTo":"52137A63.3010609@googlemail.com","subject":"Re: [PATCH] mailmap: fix check for freeing memory","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2013-08-20T14:27:55Z","receivedAt":"2013-08-20T14:27:55Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Tue, Aug 20, 2013 at 04:17:07PM +0200, Stefan Beller wrote:\n\n> Stepping two steps back, I am trying to figure out, what this repo_abrev\n> thing is doing, as I could find no documentation.\n\nIt's meant to abbreviate long pathnames in subject lines. As you noted,\nthe kernel .mailmap has:\n\n  # repo-abbrev: /pub/scm/linux/kernel/git/\n\nTry \"git shortlog\" in the kernel and grep for \"...\" to see its effect.\n\nIt is IMHO a misfeature to have it as part of .mailmap, but it is there\nfor historical reasons. And I think it is not really needed these days\nanyway, as the messages created by git-merge are nicer to read in the\nfirst place (and people tend to use nice readable URLs for accessing\none-off git pulls, too).\n\n> So we're passing there an address, which was just set to zero.\n> This is the only occurence of passing a value at all and the value\n> being passed is 0, so the free in the original patch doesn't need\n> that check either.\n\nRight. I think the intent was to free a previously found repo-abbrev\nline to avoid leaking memory (although arguably, it would make sense to\nkeep a list and abbreviate all that we find, I don't think anybody cares\nanymore for the reasons I stated above).\n\n-Peff\n"},{"id":"225517","messageId":"20130820142842.GB839@sigill.intra.peff.net","threadId":"34732","inReplyTo":"1377008280-17230-1-git-send-email-stefanbeller@googlemail.com","subject":"Re: [PATCH] mailmap: remove redundant check for freeing memory","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2013-08-20T14:28:42Z","receivedAt":"2013-08-20T14:28:42Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Tue, Aug 20, 2013 at 04:18:00PM +0200, Stefan Beller wrote:\n\n> The condition as it is written in that line has already been checked\n> in the beginning of the function, which was introduced in\n> 8503ee4 (2007-05-01, Fix read_mailmap to handle a caller uninterested\n> in repo abbreviation)\n> \n> Helped-by: Jeff King <peff@peff.net>\n> Helped-by: Thomas Rast <trast@inf.ethz.ch>\n> Signed-off-by: Stefan Beller <stefanbeller@googlemail.com>\n> ---\n\nThis version looks good to me.  Thanks.\n\n-Peff\n"},{"id":"225519","messageId":"52137F59.2030103@googlemail.com","threadId":"34732","inReplyTo":"871u5o785o.fsf@linux-k42r.v.cablecom.net","subject":"Re: [PATCH] mailmap: fix check for freeing memory","fromName":"Stefan Beller","fromEmail":"stefanbeller@googlemail.com","sentAt":"2013-08-20T14:38:17Z","receivedAt":"2013-08-20T14:38:17Z","isPatch":true,"sender":{"key":"stefanbeller@gmail.com","avatar":"https://avatars.githubusercontent.com/u/455868?v=4"},"body":"On 08/20/2013 04:23 PM, Thomas Rast wrote:\n> Stefan Beller <stefanbeller@googlemail.com> writes:\n> \n>> As I am resending the patch, could somebody please explain me\n>> the mechanism of the \"# repo-abbrev:\" line? Even git itself doesn't\n>> use it in the .mailmap file, but a quick google search shows up only\n>> kernel repositories.\n> \n> I had no idea (we really lack documentation on this), but some history\n> digging shows this:\n> \n>   commit 7595e2ee6ef9b35ebc8dc45543723e1d89765ce3\n>   Author: Junio C Hamano <junkio@cox.net>\n>   Date:   Sat Nov 25 00:07:54 2006 -0800\n> \n>       git-shortlog: make common repository prefix configurable with .mailmap\n>       \n>       The code had \"/pub/scm/linux/kernel/git/\" hardcoded which was\n>       too specific to the kernel project.\n>       \n>       With this, a line in the .mailmap file:\n>       \n>           # repo-abbrev: /pub/scm/linux/kernel/git/\n>       \n>       can be used to cause the substring to be abbreviated to /.../\n>       on the title line of the commit message.\n>       \n>       Signed-off-by: Junio C Hamano <junkio@cox.net>\n> \n> It apparently serves to abbreviate commits coming from pull requests,\n> with a subject like\n> \n>   Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux\n> \n\nThanks for looking through the history, I need to adapt my search patterns. ;)\n\nPersonally I have the feel this is a very kernel specific, but also \nuseful thing to have. So I would definitely not drop it, but maybe move\nit to another place, such as in the .git/config file. \nThen anybody can configure it themselves and maybe even have multiple\nabbreviation lines possible.\nIt's very likely nowadays that there are repos at various different\nhosting sites, so just one abbreviation would not cut it anymore.\n\nOr as Jeff just mentioned in his email, it's there for historical\npurpose, but not needed anymore as git-merge produces nicer commit\nmessages there.\n\nAs proposed I checked recent kernel history and saw:\n\n$ git log --min-parents=2 --oneline \nd6a5e06 Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-3.0-fixes\n7067552 Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\ne91dade Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\nfbf2184 Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux\n3387ed8 Merge tag 'drm-intel-fixes-2013-08-15' of git://people.freedesktop.org/~danvet/drm-intel\nd2b2c08 Merge branch 'drm-fixes-3.11' of git://people.freedesktop.org/~agd5f/linux\n50e37cc Merge branch 'for-3.11-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup\na08797e Merge tag 'ext4_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4\n2620bf0 Merge branch 'fixes' of git://git.linaro.org/people/rmk/linux-arm\n359d16c Merge branch 'for-3.11' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k\n0f7dd1a Merge tag 'clk-fixes-for-linus' of git://git.linaro.org/people/mturquette/linux\n2d2843e Merge tag 'pm-3.11-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm\nf43c606 Merge tag 'sound-3.11' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound\n89cb9ae Merge tag 'usb-3.11-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb\n\nin their .mailmap it read:\n\t# repo-abbrev: /pub/scm/linux/kernel/git/\n\nSo the abbreviation doesn't take place, can this feature be turned off?\nI'm still confused by that feature.\n\nThanks,\nStefan\n\n\n\n"},{"id":"225526","messageId":"20130820161237.GA4332@sigill.intra.peff.net","threadId":"34732","inReplyTo":"52137F59.2030103@googlemail.com","subject":"Re: [PATCH] mailmap: fix check for freeing memory","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2013-08-20T16:12:37Z","receivedAt":"2013-08-20T16:12:37Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Tue, Aug 20, 2013 at 04:38:17PM +0200, Stefan Beller wrote:\n\n> As proposed I checked recent kernel history and saw:\n> \n> $ git log --min-parents=2 --oneline \n> d6a5e06 Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-3.0-fixes\n> 7067552 Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\n> e91dade Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\n> fbf2184 Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux\n> 3387ed8 Merge tag 'drm-intel-fixes-2013-08-15' of git://people.freedesktop.org/~danvet/drm-intel\n> d2b2c08 Merge branch 'drm-fixes-3.11' of git://people.freedesktop.org/~agd5f/linux\n> 50e37cc Merge branch 'for-3.11-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup\n> a08797e Merge tag 'ext4_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4\n> 2620bf0 Merge branch 'fixes' of git://git.linaro.org/people/rmk/linux-arm\n> 359d16c Merge branch 'for-3.11' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k\n> 0f7dd1a Merge tag 'clk-fixes-for-linus' of git://git.linaro.org/people/mturquette/linux\n> 2d2843e Merge tag 'pm-3.11-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm\n> f43c606 Merge tag 'sound-3.11' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound\n> 89cb9ae Merge tag 'usb-3.11-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb\n> \n> in their .mailmap it read:\n> \t# repo-abbrev: /pub/scm/linux/kernel/git/\n> \n> So the abbreviation doesn't take place, can this feature be turned off?\n> I'm still confused by that feature.\n\nIt _only_ impacts git-shortlog, not git-log or other traversals. Making\nit an even more dubious feature, IMHO.\n\n-Peff\n"},{"id":"225527","messageId":"xmqqob8s7033.fsf@gitster.dls.corp.google.com","threadId":"34732","inReplyTo":"20130820161237.GA4332@sigill.intra.peff.net","subject":"Re: [PATCH] mailmap: fix check for freeing memory","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2013-08-20T17:18:08Z","receivedAt":"2013-08-20T17:18:08Z","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> It _only_ impacts git-shortlog, not git-log or other traversals. Making\n> it an even more dubious feature, IMHO.\n\nI think this was done by an explicit end user request for shortlog.\n\nAs you mentioned, merge gives readable merge log messages, but it\ndeliberately uses the real URL, not your personal nickname for the\nremote when writing the title line of a merge, i.e.\n\n\tMerge [branch <x> of ]<repoURL>\n\nso it would be helped by the repository abbreviation.  It probably\nwas an oversight that we did not extend it to the rest of the log\nfamily.\n"},{"id":"225533","messageId":"20130820174505.GA10106@sigill.intra.peff.net","threadId":"34732","inReplyTo":"xmqqob8s7033.fsf@gitster.dls.corp.google.com","subject":"Re: [PATCH] mailmap: fix check for freeing memory","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2013-08-20T17:45:05Z","receivedAt":"2013-08-20T17:45:05Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Tue, Aug 20, 2013 at 10:18:08AM -0700, Junio C Hamano wrote:\n\n> As you mentioned, merge gives readable merge log messages, but it\n> deliberately uses the real URL, not your personal nickname for the\n> remote when writing the title line of a merge, i.e.\n> \n> \tMerge [branch <x> of ]<repoURL>\n> \n> so it would be helped by the repository abbreviation.  It probably\n> was an oversight that we did not extend it to the rest of the log\n> family.\n\nAh, yeah, I suppose git-pull will still do that. I was thinking of a\ndirect git-merge of a tracking branch, which would end up with:\n\n  Merge remote-tracking branch 'origin/master'\n\nwhereas \"git pull origin master\" in the same case would say:\n\n  Merge branch 'master' of git://github.com/gitster/git\n\nStill, I do not think anybody but the kernel is using it. Most people\nsimply have shorter URLs that do not need abbreviated (e.g., the GitHub\none shown above). And searching for instances on GitHub yields only the\nkernel:\n\n  https://github.com/search?q=repo-abbrev+path%3A.mailmap&type=Code\n\nAnyway, I am not proposing ripping the feature out. It just seems like\nit does not have a lot of users, and it is not worth worrying much about\ntrying to extend it.\n\n-Peff\n"}]}