From patchwork Thu Oct 17 12:10:45 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Wong X-Patchwork-Id: 11195501 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 7BB1314E5 for ; Thu, 17 Oct 2019 12:10:47 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 645FE2089C for ; Thu, 17 Oct 2019 12:10:47 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2393088AbfJQMKq (ORCPT ); Thu, 17 Oct 2019 08:10:46 -0400 Received: from dcvr.yhbt.net ([64.71.152.64]:55506 "EHLO dcvr.yhbt.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731634AbfJQMKq (ORCPT ); Thu, 17 Oct 2019 08:10:46 -0400 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id 9A7651F4C0; Thu, 17 Oct 2019 12:10:45 +0000 (UTC) Date: Thu, 17 Oct 2019 12:10:45 +0000 From: Eric Wong To: git@vger.kernel.org Cc: Johannes Schindelin , Thomas Gummerer Subject: [RFC/WIP] range-diff: show old/new blob OIDs in comments Message-ID: <20191017121045.GA15364@dcvr> MIME-Version: 1.0 Content-Disposition: inline Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org (WIP, mostly stream-of-concious notes + reasoning) When using "git format-patch --range-diff", the pre and post-image blob OIDs are in each email, while the exact commit OIDs are rarely shared via emails (only the tip commit from "git request-pull"). These blob OIDs make it easy to search for or lookup the full emails which create them, or the blob itself once it's fetched via git. public-inbox indexes and allows querying specifically for blob OIDs via dfpre:/dfpost: since June 2017. As of Jan 2019, public-inbox also supports recreating blobs out of patch emails (querying internally with dfpre:/dfpost: and doing "git apply") Searching on these blob OIDs also makes it easier to find previous versions of the patch sets using any mail search engine. Future changes to public-inbox may allow generating custom diffs out of any blobs it can find or recreate. Most of this is pretty public-inbox-specific and would've made some future changes to public-inbox much easier.... (if we had this from the start of range-diff). Unfortunately, it won't help with cases where range-diffs are already published, but range-diff isn't too old. I'm also still learning my way around git's C internals, but using patch.{old,new}_oid_prefix seems alright... FIXME: tests, t3206 needs updating Not-signed-off-by: Eric Wong --- range-diff.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/range-diff.c b/range-diff.c index 7fed5a3b4b..85d2f1f58f 100644 --- a/range-diff.c +++ b/range-diff.c @@ -118,13 +118,24 @@ static int read_patches(const char *range, struct string_list *list) die(_("could not parse git header '%.*s'"), (int)len, line); strbuf_addstr(&buf, " ## "); if (patch.is_new > 0) - strbuf_addf(&buf, "%s (new)", patch.new_name); + strbuf_addf(&buf, "%s (new %s)", + patch.new_name, + patch.new_oid_prefix); else if (patch.is_delete > 0) - strbuf_addf(&buf, "%s (deleted)", patch.old_name); + strbuf_addf(&buf, "%s (deleted %s)", + patch.old_name, + patch.old_oid_prefix); else if (patch.is_rename) - strbuf_addf(&buf, "%s => %s", patch.old_name, patch.new_name); + strbuf_addf(&buf, "%s => %s (%s..%s)", + patch.old_name, + patch.new_name, + patch.old_oid_prefix, + patch.new_oid_prefix); else - strbuf_addstr(&buf, patch.new_name); + strbuf_addf(&buf, "%s (%s..%s)", + patch.new_name, + patch.old_oid_prefix, + patch.new_oid_prefix); free(current_filename); if (patch.is_delete > 0)