All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Johannes Schindelin via GitGitGadget" <gitgitgadget@gmail.com>
To: git@vger.kernel.org
Cc: Srinidhi Kaushik <shrinidhi.kaushik@gmail.com>,
	Johannes Schindelin <johannes.schindelin@gmx.de>
Subject: [PATCH v2 0/3] Fix difftool problem with intent-to-add files
Date: Tue, 23 Jun 2020 12:48:02 +0000	[thread overview]
Message-ID: <pull.654.v2.git.1592916485.gitgitgadget@gmail.com> (raw)
In-Reply-To: <pull.654.git.1591879139.gitgitgadget@gmail.com>

This problem was reported in 
https://github.com/git-for-windows/git/issues/2677, but the problem actually
lies with git diff --raw, and it seems that the bug has been with us ever
since--intent-to-add was introduced.

Changes since v1:

 * Rebased onto sk/diff-files-show-i-t-a-as-new.
 * Verified that sk/diff-files-show-i-t-a-as-new does not completely resolve
   the issue (the --raw output still claims the empty blob as the
   post-image, although the difftool symptom "went away").
 * Amended the central patch of this PR to include a fix for the regression
   test that was introduced in sk/diff-files-show-i-t-a-as-new: it expected
   the raw diff to contain the hash of the empty tree object (which is
   incorrect no matter how you turn it: any hash in any raw diff should
   refer to blob objects).
 * Reordered the patches so that the central patch comes first (otherwise,
   the "empty tree" fix would cause a test failure in t2203).

Johannes Schindelin (3):
  diff-files --raw: handle intent-to-add files correctly
  diff-files: fix incorrect usage of an empty tree
  difftool -d: ensure that intent-to-add files are handled correctly

 diff-lib.c             | 16 +++++++++++++++-
 t/t2203-add-intent.sh  |  4 ++--
 t/t4000-diff-format.sh | 10 ++++++++++
 t/t7800-difftool.sh    |  8 ++++++++
 4 files changed, 35 insertions(+), 3 deletions(-)


base-commit: feea6946a5b746ff4ebf8ccdf959e303203a6011
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-654%2Fdscho%2Fdifftool-ita-v2
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-654/dscho/difftool-ita-v2
Pull-Request: https://github.com/gitgitgadget/git/pull/654

Range-diff vs v1:

 2:  6d423928512 ! 1:  640e2255508 diff-files --raw: handle intent-to-add files correctly
     @@ Commit message
      
          This fixes https://github.com/git-for-windows/git/issues/2677
      
     +    This patch _also_ fixes the expectations set by the regression test
     +    introduced in feea6946a5b (diff-files: treat "i-t-a" files as
     +    "not-in-index", 2020-06-20).
     +
          Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
      
       ## diff-lib.c ##
      @@ diff-lib.c: int run_diff_files(struct rev_info *revs, unsigned int option)
     - 					       the_hash_algo->empty_blob, 0,
     + 					       !is_null_oid(&ce->oid),
       					       ce->name, 0);
       				continue;
      +			} else if (ce_intent_to_add(ce) &&
     @@ diff-lib.c: int run_diff_files(struct rev_info *revs, unsigned int option)
      +				diff_addremove(&revs->diffopt, '+', ce->ce_mode,
      +					       &oid, ret >= 0, ce->name, 0);
      +				continue;
     - 			}
     + 			} else if (revs->diffopt.ita_invisible_in_index &&
     + 				   ce_intent_to_add(ce)) {
     + 				diff_addremove(&revs->diffopt, '+', ce->ce_mode,
     +
     + ## t/t2203-add-intent.sh ##
     +@@ t/t2203-add-intent.sh: test_expect_success 'i-t-a files shown as new for "diff", "diff-files"; not-new
     + 	 create mode 100644 not-empty
     + 	EOF
     + 	cat >expect.diff_a <<-EOF &&
     +-	:000000 100644 0000000 $(git rev-parse --short $hash_t) A$(printf "\t")empty
     +-	:000000 100644 0000000 $(git rev-parse --short $hash_t) A$(printf "\t")not-empty
     ++	:000000 100644 0000000 $(git rev-parse --short $hash_e) A$(printf "\t")empty
     ++	:000000 100644 0000000 $(git rev-parse --short $hash_n) A$(printf "\t")not-empty
     + 	EOF
       
     - 			changed = match_stat_with_submodule(&revs->diffopt, ce, &st,
     + 	git add -N empty not-empty &&
      
       ## t/t4000-diff-format.sh ##
      @@ t/t4000-diff-format.sh: test_expect_success 'git diff-files --patch --no-patch does not show the patch'
 1:  9c96c43f3d7 ! 2:  b9633315a2f diff-files: fix incorrect usage of an empty tree
     @@ Commit message
      
          In c26022ea8f5 (diff: convert diff_addremove to struct object_id,
          2017-05-30), the OID to use for intent-to-add files was inadvertently
     -    changed from the empty blob to the empty tree. Let's revert that.
     +    changed from the empty blob to the empty tree.
     +
     +    Let's revert that.
     +
     +    To be able to do that, we just taught the regression test introduced in
     +    feea6946a5b (diff-files: treat "i-t-a" files as "not-in-index",
     +    2020-06-20) to _not_ expect the raw diff to contain the hash of the
     +    empty tree (we also had to fix the code to actually produce the expected
     +    output, but for the sake of this here patch, that's beside the point).
      
          Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
      
 3:  a1c889e2cd1 = 3:  d2e9f704c9e difftool -d: ensure that intent-to-add files are handled correctly

-- 
gitgitgadget

  parent reply	other threads:[~2020-06-23 12:48 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-06-11 12:38 [PATCH 0/3] Fix difftool problem with intent-to-add files Johannes Schindelin via GitGitGadget
2020-06-11 12:38 ` [PATCH 1/3] diff-files: fix incorrect usage of an empty tree Johannes Schindelin via GitGitGadget
2020-06-11 12:38 ` [PATCH 2/3] diff-files --raw: handle intent-to-add files correctly Johannes Schindelin via GitGitGadget
2020-06-11 12:38 ` [PATCH 3/3] difftool -d: ensure that intent-to-add files are handled correctly Johannes Schindelin via GitGitGadget
2020-06-23 12:48 ` Johannes Schindelin via GitGitGadget [this message]
2020-06-23 12:48   ` [PATCH v2 1/3] diff-files --raw: handle intent-to-add files correctly Johannes Schindelin via GitGitGadget
2020-06-24  0:09     ` Junio C Hamano
2020-06-24 13:26       ` Johannes Schindelin
2020-06-24 15:26         ` Junio C Hamano
2020-06-24 18:41           ` Junio C Hamano
2020-06-25 17:52           ` Johannes Schindelin
2020-06-24  7:11     ` Srinidhi Kaushik
2020-06-24 13:34       ` Johannes Schindelin
2020-06-24 15:51         ` Junio C Hamano
2020-06-23 12:48   ` [PATCH v2 2/3] diff-files: fix incorrect usage of an empty tree Johannes Schindelin via GitGitGadget
2020-06-24  0:10     ` Junio C Hamano
2020-06-23 12:48   ` [PATCH v2 3/3] difftool -d: ensure that intent-to-add files are handled correctly Johannes Schindelin via GitGitGadget
2020-06-24 14:47   ` [PATCH v3 0/3] Fix difftool problem with intent-to-add files Johannes Schindelin via GitGitGadget
2020-06-24 14:47     ` [PATCH v3 1/3] diff-files --raw: handle intent-to-add files correctly Johannes Schindelin via GitGitGadget
2020-06-24 14:47     ` [PATCH v3 2/3] diff-files: fix incorrect usage of an empty tree Johannes Schindelin via GitGitGadget
2020-06-24 14:47     ` [PATCH v3 3/3] difftool -d: ensure that intent-to-add files are handled correctly Johannes Schindelin via GitGitGadget
2020-06-25 17:53     ` [PATCH v4 0/2] Fix difftool problem with intent-to-add files Johannes Schindelin via GitGitGadget
2020-06-25 17:53       ` [PATCH v4 1/2] diff-files --raw: show correct post-image of " Johannes Schindelin via GitGitGadget
2020-06-25 18:08         ` Junio C Hamano
2020-07-01  9:46           ` Johannes Schindelin
2020-07-01 21:02             ` Junio C Hamano
2020-06-25 18:21         ` Junio C Hamano
2020-07-01  9:52           ` Johannes Schindelin
2020-06-26 17:49         ` Srinidhi Kaushik
2020-06-25 17:53       ` [PATCH v4 2/2] difftool -d: ensure that intent-to-add files are handled correctly Johannes Schindelin via GitGitGadget
2020-06-25 18:11         ` Junio C Hamano
2020-07-01 10:01           ` Johannes Schindelin
2020-07-01 21:03             ` Junio C Hamano
2020-07-01 21:20               ` Johannes Schindelin
2020-07-01 21:19       ` [PATCH v5 0/2] Fix difftool problem with intent-to-add files Johannes Schindelin via GitGitGadget
2020-07-01 21:19         ` [PATCH v5 1/2] diff-files --raw: show correct post-image of " Johannes Schindelin via GitGitGadget
2020-07-01 21:19         ` [PATCH v5 2/2] difftool -d: ensure that intent-to-add files are handled correctly Johannes Schindelin via GitGitGadget

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=pull.654.v2.git.1592916485.gitgitgadget@gmail.com \
    --to=gitgitgadget@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=johannes.schindelin@gmx.de \
    --cc=shrinidhi.kaushik@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.