{"thread":{"id":"48219","subject":"commit -> public-inbox link helper","startedAt":"2018-04-04T16:36:06Z","lastAt":"2018-04-20T19:40:48Z","messageCount":7,"participants":["Johannes Schindelin","Jeff King","Mike Rappazzo","Eric Wong"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"343790","messageId":"nycvar.QRO.7.76.6.1804041821420.55@ZVAVAG-6OXH6DA.rhebcr.pbec.zvpebfbsg.pbz","threadId":"48219","inReplyTo":null,"subject":"commit -> public-inbox link helper","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2018-04-04T16:35:59Z","receivedAt":"2018-04-04T16:36:06Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi team,\n\nI found myself in dear need to quickly look up mails in the public-inbox\nmail archive corresponding to any given commit in git.git. Some time ago,\nI wrote a shell script to help me with that, and I found myself using it a\ncouple of times, so I think it might be useful for others, too.\n\nThis script (I call it lookup-commit.sh) needs to be dropped into a *bare*\nclone of http://public-inbox.org/git, and called with its absolute or\nrelative path from a git.git worktree, e.g.\n\n\t~/public-inbox-git.git/lookup-commit.sh \\\n\t\tfea16b47b603e7e4fa7fca198bd49229c0e5da3d\n\nThis will take a while initially, or when the `master` branch of the\npublic-inbox mirror was updated, as it will generate two files with\nplain-text mappings.\n\nIn its default mode, it will print the Message-ID of the mail (if found).\n\nWith --open, it opens the mail in a browser (macOS support is missing,\nmainly because I cannot test: just add an `open` alternative to\n`xdg-open`).\n\nWith --reply, it puts the mail into the `from-public-inbox` folder of a\nmaildir-formatted ~/Mail/, so it is pretty specific to my setup here.\n\nNote: the way mails are matched is by timestamp. In practice, this works\namazingly often (although not always, I reported findings short after\nGitMerge 2017). My plan was to work on this when/as needed.\n\nNote also: the script is very much in a 'works-for-me' state, and I could\nimagine that others might want to modify it to their needs. I would be\ndelighted if somebody would take custody of it (as in: start a repository\non GitHub, adding a README.md, adding a config setting to point to the\nlocation of the public-inbox mirror without having to copy the script,\nadding an option to install an alias to run the script, etc).\n\nAnd now, without further ado, here it is, the script, in its current glory:\n\n-- snipsnap --\n#!/bin/sh\n\n# This is a very simple helper to assist with finding the mail (if any)\n# corresponding to a given commit in git.git.\n\ndie () {\n\techo \"$*\" >&2\n\texit 1\n}\n\nmode=print\nwhile case \"$1\" in\n--open) mode=open;;\n--reply) mode=reply;;\n-*) die \"Unknown option: $1\";;\n*) break;;\nesac; do shift; done\n\ntest $# = 1 ||\ndie \"Usage: $0 ( [--open] | [--reply] ) <commit>\"\n\ntest reply != $mode ||\ntest -d \"$HOME/Mail\" ||\ndie \"Need $HOME/Mail to reply\"\n\ncommit=\"$1\"\ntae=\"$(git show -s --format='%at %an <%ae>' \"$1\")\" ||\ndie \"Could not get Timestamp/Author/Email triplet from $1\"\n\n# We try to match the timestamp first; the author name and author email are\n# not as reliable: they might have been overridden via a \"From:\" line in the\n# mail's body\ntimestamp=${tae%% *}\n\ncd \"$(dirname \"$0\")\" ||\ndie \"Could not cd to the public-inbox directory\"\n\ngit rev-parse --quiet --verify \\\n\tb60d038730d2c2bb8ab2b48c117db917ad529cf7 >/dev/null 2>&1 ||\ndie \"Not a public-inbox directory: $(pwd)\"\n\nhead=\"$(git rev-parse --verify master)\" ||\ndie \"Could not determine tip of master\"\n\nprevhead=\ntest ! -f map.latest-rev ||\nprevhead=\"$(cat map.latest-rev)\"\n\nif test $head != \"$prevhead\"\nthen\n\trange=${prevhead:+$prevhead..}$head\n\techo \"Inserting records for $range\" >&2\n\tgit log --format=\"%at %h %an <%ae>\" $range >map.txt.add ||\n\tdie \"Could not enumerate $range\"\n\n\tcat map.txt map.txt.add 2>/dev/null | sort -n >map.txt.new &&\n\tmv -f map.txt.new map.txt ||\n\tdie \"Could not insert new records\"\n\n\techo $head >map.latest-rev\nfi\n\nlines=\"$(grep \"^$timestamp \" <map.txt)\"\nif test 1 != $(echo \"$lines\" | wc -l)\nthen\n\ttest -n \"$lines\" ||\n\tdie \"No records found for timestamp $timestamp\"\n\n\techo \"Multiple records found:\"\n\n\tfor h in $(echo \"$lines\" | cut -d ' ' -f 2)\n\tdo\n\t\tgit show -s --format=\"%nOn %ad, %an <%ae> sent\" $h\n\t\tgit show $h |\n\t\tsed -n -e 's/^+Message-Id: <\\(.*\\)>/\\1/ip' \\\n\t\t\t-e 's/^+Subject: //ip'\n\tdone\n\n\texit 1\nfi\n\n# We found exactly one record: print the message ID\nh=${lines#$timestamp }\nh=${h%% *}\nmessageid=\"$(git show $h | sed -n 's/^+Message-Id: <\\(.*\\)>/\\1/ip')\" ||\ndie \"Could not determine Message-Id from $h\"\n\ncase $mode in\nprint) echo $messageid;;\nopen)\n\turl=https://public-inbox.org/git/$messageid\n\tcase \"$(uname -s)\" in\n\tLinux) xdg-open \"$url\";;\n\tMINGW*|MSYS*) start \"$url\";;\n\t*) die \"Need to learn how to open URLs on $(uname -s)\";;\n\tesac\n\t;;\nreply)\n\tmkdir -p \"$HOME/Mail/from-public-inbox/new\" &&\n\tmkdir -p \"$HOME/Mail/from-public-inbox/cur\" &&\n\tmkdir -p \"$HOME/Mail/from-public-inbox/tmp\" ||\n\tdie \"Could not set up mail folder 'from-public-inbox'\"\n\n\tpath=$(git diff --name-only $h^!) &&\n\tmail=\"$(printf \"%s_%09d.%s:2,\" $(date +%s.%N) $$ $(hostname -f))\"\n&&\n\tgit show $h:$path >\"$HOME/Mail/from-public-inbox/new/$mail\" ||\n\tdie \"Could not write mail\"\n\t;;\n*)\n\tdie \"Unhandled mode: $mode\"\n\t;;\nesac\n"},{"id":"343800","messageId":"20180404183620.GC9055@sigill.intra.peff.net","threadId":"48219","inReplyTo":"nycvar.QRO.7.76.6.1804041821420.55@ZVAVAG-6OXH6DA.rhebcr.pbec.zvpebfbsg.pbz","subject":"Re: commit -> public-inbox link helper","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2018-04-04T18:36:20Z","receivedAt":"2018-04-04T18:36:36Z","isPatch":false,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Wed, Apr 04, 2018 at 06:35:59PM +0200, Johannes Schindelin wrote:\n\n> Hi team,\n> \n> I found myself in dear need to quickly look up mails in the public-inbox\n> mail archive corresponding to any given commit in git.git. Some time ago,\n> I wrote a shell script to help me with that, and I found myself using it a\n> couple of times, so I think it might be useful for others, too.\n> \n> This script (I call it lookup-commit.sh) needs to be dropped into a *bare*\n> clone of http://public-inbox.org/git, and called with its absolute or\n> relative path from a git.git worktree, e.g.\n> \n> \t~/public-inbox-git.git/lookup-commit.sh \\\n> \t\tfea16b47b603e7e4fa7fca198bd49229c0e5da3d\n> \n> This will take a while initially, or when the `master` branch of the\n> public-inbox mirror was updated, as it will generate two files with\n> plain-text mappings.\n\nJunio publishes a git-notes ref with the mapping you want. So you can\ndo:\n\n  git fetch git://github.com/gitster/git.git refs/notes/amlog:refs/notes/amlog\n  mid=$(git notes --ref amlog show $commit | perl -lne '/<(.*)>/ and print $1')\n  echo \"https://public-inbox.org/git/$mid\"\n\nwithout having to download the gigantic list archive repo at all (though\nI do keep my own copy of the archive and index it with mairix, so I can\nuse \"mairix -t m:$mid\" and then view the whole thing locally in mutt).\n\n-Peff\n"},{"id":"343812","messageId":"CANoM8SX_+UwSjFUgW77mW25d6Z1CxJJwbDduNqAkygGeKwru6A@mail.gmail.com","threadId":"48219","inReplyTo":"nycvar.QRO.7.76.6.1804041821420.55@ZVAVAG-6OXH6DA.rhebcr.pbec.zvpebfbsg.pbz","subject":"Re: commit -> public-inbox link helper","fromName":"Mike Rappazzo","fromEmail":"rappazzo@gmail.com","sentAt":"2018-04-04T19:58:41Z","receivedAt":"2018-04-04T19:59:08Z","isPatch":false,"sender":{"key":"rappazzo@gmail.com","avatar":"https://avatars.githubusercontent.com/u/525287?v=4"},"body":"On Wed, Apr 4, 2018 at 12:35 PM, Johannes Schindelin\n<Johannes.Schindelin@gmx.de> wrote:\n> Hi team,\n>\n> I found myself in dear need to quickly look up mails in the public-inbox\n> mail archive corresponding to any given commit in git.git. Some time ago,\n> I wrote a shell script to help me with that, and I found myself using it a\n> couple of times, so I think it might be useful for others, too.\n>\n> This script (I call it lookup-commit.sh) needs to be dropped into a *bare*\n> clone of http://public-inbox.org/git, and called with its absolute or\n> relative path from a git.git worktree, e.g.\n>\n>         ~/public-inbox-git.git/lookup-commit.sh \\\n>                 fea16b47b603e7e4fa7fca198bd49229c0e5da3d\n>\n> This will take a while initially, or when the `master` branch of the\n> public-inbox mirror was updated, as it will generate two files with\n> plain-text mappings.\n>\n> In its default mode, it will print the Message-ID of the mail (if found).\n>\n> With --open, it opens the mail in a browser (macOS support is missing,\n> mainly because I cannot test: just add an `open` alternative to\n> `xdg-open`).\n>\n> With --reply, it puts the mail into the `from-public-inbox` folder of a\n> maildir-formatted ~/Mail/, so it is pretty specific to my setup here.\n>\n> Note: the way mails are matched is by timestamp. In practice, this works\n> amazingly often (although not always, I reported findings short after\n> GitMerge 2017). My plan was to work on this when/as needed.\n>\n> Note also: the script is very much in a 'works-for-me' state, and I could\n> imagine that others might want to modify it to their needs. I would be\n> delighted if somebody would take custody of it (as in: start a repository\n> on GitHub, adding a README.md, adding a config setting to point to the\n> location of the public-inbox mirror without having to copy the script,\n> adding an option to install an alias to run the script, etc).\n>\n> And now, without further ado, here it is, the script, in its current glory:\n>\n> -- snipsnap --\n> #!/bin/sh\n>\n> # This is a very simple helper to assist with finding the mail (if any)\n> # corresponding to a given commit in git.git.\n>\n> die () {\n>         echo \"$*\" >&2\n>         exit 1\n> }\n>\n> mode=print\n> while case \"$1\" in\n> --open) mode=open;;\n> --reply) mode=reply;;\n> -*) die \"Unknown option: $1\";;\n> *) break;;\n> esac; do shift; done\n>\n> test $# = 1 ||\n> die \"Usage: $0 ( [--open] | [--reply] ) <commit>\"\n>\n> test reply != $mode ||\n> test -d \"$HOME/Mail\" ||\n> die \"Need $HOME/Mail to reply\"\n>\n> commit=\"$1\"\n> tae=\"$(git show -s --format='%at %an <%ae>' \"$1\")\" ||\n> die \"Could not get Timestamp/Author/Email triplet from $1\"\n>\n> # We try to match the timestamp first; the author name and author email are\n> # not as reliable: they might have been overridden via a \"From:\" line in the\n> # mail's body\n> timestamp=${tae%% *}\n>\n> cd \"$(dirname \"$0\")\" ||\n> die \"Could not cd to the public-inbox directory\"\n>\n> git rev-parse --quiet --verify \\\n>         b60d038730d2c2bb8ab2b48c117db917ad529cf7 >/dev/null 2>&1 ||\n> die \"Not a public-inbox directory: $(pwd)\"\n>\n> head=\"$(git rev-parse --verify master)\" ||\n> die \"Could not determine tip of master\"\n>\n> prevhead=\n> test ! -f map.latest-rev ||\n> prevhead=\"$(cat map.latest-rev)\"\n>\n> if test $head != \"$prevhead\"\n> then\n>         range=${prevhead:+$prevhead..}$head\n>         echo \"Inserting records for $range\" >&2\n>         git log --format=\"%at %h %an <%ae>\" $range >map.txt.add ||\n>         die \"Could not enumerate $range\"\n>\n>         cat map.txt map.txt.add 2>/dev/null | sort -n >map.txt.new &&\n>         mv -f map.txt.new map.txt ||\n>         die \"Could not insert new records\"\n>\n>         echo $head >map.latest-rev\n> fi\n>\n> lines=\"$(grep \"^$timestamp \" <map.txt)\"\n> if test 1 != $(echo \"$lines\" | wc -l)\n> then\n>         test -n \"$lines\" ||\n>         die \"No records found for timestamp $timestamp\"\n>\n>         echo \"Multiple records found:\"\n>\n>         for h in $(echo \"$lines\" | cut -d ' ' -f 2)\n>         do\n>                 git show -s --format=\"%nOn %ad, %an <%ae> sent\" $h\n>                 git show $h |\n>                 sed -n -e 's/^+Message-Id: <\\(.*\\)>/\\1/ip' \\\n>                         -e 's/^+Subject: //ip'\n>         done\n>\n>         exit 1\n> fi\n>\n> # We found exactly one record: print the message ID\n> h=${lines#$timestamp }\n> h=${h%% *}\n> messageid=\"$(git show $h | sed -n 's/^+Message-Id: <\\(.*\\)>/\\1/ip')\" ||\n> die \"Could not determine Message-Id from $h\"\n>\n> case $mode in\n> print) echo $messageid;;\n> open)\n>         url=https://public-inbox.org/git/$messageid\n>         case \"$(uname -s)\" in\n>         Linux) xdg-open \"$url\";;\n>         MINGW*|MSYS*) start \"$url\";;\n\n         Darwin*) open \"$url\";;\n\n>         *) die \"Need to learn how to open URLs on $(uname -s)\";;\n>         esac\n>         ;;\n> reply)\n>         mkdir -p \"$HOME/Mail/from-public-inbox/new\" &&\n>         mkdir -p \"$HOME/Mail/from-public-inbox/cur\" &&\n>         mkdir -p \"$HOME/Mail/from-public-inbox/tmp\" ||\n>         die \"Could not set up mail folder 'from-public-inbox'\"\n>\n>         path=$(git diff --name-only $h^!) &&\n>         mail=\"$(printf \"%s_%09d.%s:2,\" $(date +%s.%N) $$ $(hostname -f))\"\n> &&\n>         git show $h:$path >\"$HOME/Mail/from-public-inbox/new/$mail\" ||\n>         die \"Could not write mail\"\n>         ;;\n> *)\n>         die \"Unhandled mode: $mode\"\n>         ;;\n> esac\n"},{"id":"343817","messageId":"nycvar.QRO.7.76.6.1804042257040.55@ZVAVAG-6OXH6DA.rhebcr.pbec.zvpebfbsg.pbz","threadId":"48219","inReplyTo":"20180404183620.GC9055@sigill.intra.peff.net","subject":"Re: commit -> public-inbox link helper","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2018-04-04T20:59:08Z","receivedAt":"2018-04-04T20:59:22Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi Peff,\n\nOn Wed, 4 Apr 2018, Jeff King wrote:\n\n> On Wed, Apr 04, 2018 at 06:35:59PM +0200, Johannes Schindelin wrote:\n> \n> > I found myself in dear need to quickly look up mails in the public-inbox\n> > mail archive corresponding to any given commit in git.git. Some time ago,\n> > I wrote a shell script to help me with that, and I found myself using it a\n> > couple of times, so I think it might be useful for others, too.\n> > \n> > This script (I call it lookup-commit.sh) needs to be dropped into a *bare*\n> > clone of http://public-inbox.org/git, and called with its absolute or\n> > relative path from a git.git worktree, e.g.\n> > \n> > \t~/public-inbox-git.git/lookup-commit.sh \\\n> > \t\tfea16b47b603e7e4fa7fca198bd49229c0e5da3d\n> > \n> > This will take a while initially, or when the `master` branch of the\n> > public-inbox mirror was updated, as it will generate two files with\n> > plain-text mappings.\n> \n> Junio publishes a git-notes ref with the mapping you want. So you can\n> do:\n> \n>   git fetch git://github.com/gitster/git.git refs/notes/amlog:refs/notes/amlog\n>   mid=$(git notes --ref amlog show $commit | perl -lne '/<(.*)>/ and print $1')\n>   echo \"https://public-inbox.org/git/$mid\"\n> \n> without having to download the gigantic list archive repo at all (though\n> I do keep my own copy of the archive and index it with mairix, so I can\n> use \"mairix -t m:$mid\" and then view the whole thing locally in mutt).\n\nGood to know! Thanks for the script.\n\nAnd thanks also for the `--ref` trick: I had a look at the man page of\ngit-notes, and it was not immediately obvious that it supports options\nbefore the sub-subcommand. The `--ref` description is buried pretty deep\nin there.\n\nThanks,\nDscho\n"},{"id":"343818","messageId":"nycvar.QRO.7.76.6.1804042259250.55@ZVAVAG-6OXH6DA.rhebcr.pbec.zvpebfbsg.pbz","threadId":"48219","inReplyTo":"CANoM8SX_+UwSjFUgW77mW25d6Z1CxJJwbDduNqAkygGeKwru6A@mail.gmail.com","subject":"Re: commit -> public-inbox link helper","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2018-04-04T21:02:10Z","receivedAt":"2018-04-04T21:02:17Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi Mike,\n\nas I said here:\n\nOn Wed, 4 Apr 2018, Mike Rappazzo wrote:\n\n> On Wed, Apr 4, 2018 at 12:35 PM, Johannes Schindelin\n> <Johannes.Schindelin@gmx.de> wrote:\n> >\n> > [...]\n> >\n> > With --open, it opens the mail in a browser (macOS support is missing,\n> > mainly because I cannot test: just add an `open` alternative to\n> > `xdg-open`).\n> >\n> > [...]\n> > open)\n> >         url=https://public-inbox.org/git/$messageid\n> >         case \"$(uname -s)\" in\n> >         Linux) xdg-open \"$url\";;\n> >         MINGW*|MSYS*) start \"$url\";;\n> \n>          Darwin*) open \"$url\";;\n\nI am aware of this alternative, but as I do not currently develop on macOS\napart from headless build agents, I did not add support for that.\n\nFeel free to adopt the script, publish it in a GitHub repository, adapt it\nto use refs/notes/amlog instead of a public-inbox mirror, and then tell me\nwhere I can clone it ;-)\n\nCiao,\nJohannes\n"},{"id":"345201","messageId":"20180420083934.GA696@dcvr","threadId":"48219","inReplyTo":"nycvar.QRO.7.76.6.1804041821420.55@ZVAVAG-6OXH6DA.rhebcr.pbec.zvpebfbsg.pbz","subject":"Re: commit -> public-inbox link helper","fromName":"Eric Wong","fromEmail":"e@80x24.org","sentAt":"2018-04-20T08:39:34Z","receivedAt":"2018-04-20T08:39:38Z","isPatch":false,"sender":{"key":"e@80x24.org","avatar":null},"body":"Johannes Schindelin <Johannes.Schindelin@gmx.de> wrote:\n> Hi team,\n> \n> I found myself in dear need to quickly look up mails in the public-inbox\n> mail archive corresponding to any given commit in git.git. Some time ago,\n> I wrote a shell script to help me with that, and I found myself using it a\n> couple of times, so I think it might be useful for others, too.\n\nHello, I think you can dump all the info you need more quickly\nwithout cloning 1G of data by dumping NNTP OVER(view)\ninformation instead.\n\nI've attached a short Perl script which dumps the tab-delimited\nfile to stdout so you can process it with whatever.  Columns\nrelevant to you would probably be 2-5:\n\n\tNUM\tSubject\tFrom\tDate\tMessage-ID\n\nOn public-inbox-nntpd, Dates are normalized to UTC in the OVER\nresponse right now, so you'd need to use TZ=UTC with --date=rfc-local\n\nIt works with both nntp://news.gmane.org/gmane.comp.version-control.git\nnntp://news.public-inbox.org/inbox.comp.version-control.git\n\n> Note: the way mails are matched is by timestamp. In practice, this works\n> amazingly often (although not always, I reported findings short after\n> GitMerge 2017). My plan was to work on this when/as needed.\n\nThanks for that.  I've added dt: (date-time) searching to public-inbox\n(d: (date-only) has been there forever):\n\n        d:       date range as YYYYMMDD  e.g. d:19931002..20101002\n                 Open-ended ranges such as d:19931002.. and d:..20101002\n                 are also supported\n        dt:      date-time range as YYYYMMDDhhmmss (e.g. dt:19931002011000..19931002011200)\n\nTo match an exact timestamp, both the begining and end range should\nbe the same.\n\n(It'd be nice if Xapian + Perl bindings could get date parsing as\n good as git's.  Too bad C++ / XS overwhelms my tiny brain and\n waiting for builds overwhelm my patience)\n\n> git rev-parse --quiet --verify \\\n> \tb60d038730d2c2bb8ab2b48c117db917ad529cf7 >/dev/null 2>&1 ||\n> die \"Not a public-inbox directory: $(pwd)\"\n\nEep.  I'd don't think it's good to put such a hard dependency on\na particular mirror I started.  Somebody could start another one\nwhich wasn't sourced from gmane and the Received: headers would\nbe different.\n\n...And I'm pondering a conversion of what's running on\nhttps://public-inbox.org/git/ to the new v2 repository format:\n\n\thttps://public-inbox.org/meta/20180419015813.GA20051@dcvr/\n\thttps://public-inbox.org/meta/20180209205140.GA11047@dcvr/\n\thttps://public-inbox.org/meta/20180215105509.GA22409@dcvr/\n\n\n#!/usr/bin/perl -w\nuse strict;\nuse warnings;\nuse IO::Socket::INET;\nmy $usage = \"$0 news://example.com/group.name [MIN] [MAX]\\n\";\nmy $url = shift or die $usage;\nmy $umin = shift;\nmy $umax = shift;\nmy ($host, $port, $group) = ($url =~ m!://([^/]+)?(?::(\\d+))?/(.+)!);\n$port ||= 119;\ndefined $group or die \"missing group in $url\\n\";\nmy %opts = ( Proto => 'tcp', PeerHost => $host, PeerPort => $port );\nmy $s = IO::Socket::INET->new(%opts) or die \"connect to $host:$port: $!\\n\";\nmy $l = $s->getline;\n$l =~ /\\A2\\d\\d / or die \"bad greeting: $l\\n\";\n\n$s->print(\"GROUP $group\\n\") or die \"print $!\";\n$l = $s->getline;\n$l =~ /\\A211 \\d+ (\\d+) (\\d+) / or die \"bad GROUP response: $l\\n\";\nmy ($min, $max) = ($1, $2);\n$min = $umin if $umin;\n$max = $umax if $umax;\n\n$s->print(\"OVER $min-$max\\n\") or die \"print $!\";\n$l = $s->getline;\n$l =~ /\\A224 / or die \"bad OVER response: $l\\n\";\n\nwhile ($l = $s->getline) {\n\tlast if $l eq \".\\r\\n\";\n\tprint $l;\n}\n"},{"id":"345258","messageId":"nycvar.QRO.7.76.6.1804202137310.4241@ZVAVAG-6OXH6DA.rhebcr.pbec.zvpebfbsg.pbz","threadId":"48219","inReplyTo":"20180420083934.GA696@dcvr","subject":"Re: commit -> public-inbox link helper","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2018-04-20T19:40:24Z","receivedAt":"2018-04-20T19:40:48Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi Eric,\n\nOn Fri, 20 Apr 2018, Eric Wong wrote:\n\n> Johannes Schindelin <Johannes.Schindelin@gmx.de> wrote:\n> > \n> > I found myself in dear need to quickly look up mails in the\n> > public-inbox mail archive corresponding to any given commit in\n> > git.git. Some time ago, I wrote a shell script to help me with that,\n> > and I found myself using it a couple of times, so I think it might be\n> > useful for others, too.\n> \n> Hello, I think you can dump all the info you need more quickly\n> without cloning 1G of data by dumping NNTP OVER(view)\n> information instead.\n\nThat might be true for the current state of affairs.\n\nHowever, there *are* cases (I think I even linked to my original mail with\nmy post-GitMerge 2017 analysis) where the triplet Date/Author/Email is not\nenough, where even some patch series have the identical triplet for every\nsingle patch.\n\nEven if I did not hit those cases yet, and therefore did not implement\nthat part, I needed to keep the door open for that. So I need a clone.\n\nCiao,\nDscho\n"}]}