[PATCH 2/2] diff [--cached] HEAD: catch updates to the current branch behind your back.
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:43:04
Subsystem:
the rest · Maintainer:
Linus Torvalds
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:43:04
Subsystem:
the rest · Maintainer:
Linus Torvalds
This makes "git-diff [--cached] HEAD" issue a warning message when it detects that your index is not based on the tip of the current branch (e.g. updated by gremlins running git-send-pack from elsewhere to update it, or from another working tree that shares the same $GIT_DIR/refs with your working tree). Signed-off-by: Junio C Hamano <redacted> --- * This is on top of 'next', which contains 'jc/checkout' aka "index base" topic. diff-lib.c | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/diff-lib.c b/diff-lib.c
index 5c5b05b..940c18a 100644
--- a/diff-lib.c
+++ b/diff-lib.c@@ -657,6 +657,14 @@ int run_diff_index(struct rev_info *revs, int cached) const char *tree_name; int match_missing = 0; + /* Check for gremlins */ + if (active_cache_base_valid && + revs->pending.objects->item->type == OBJ_COMMIT && + revs->pending.objects->name && + !strcmp(revs->pending.objects->name, "HEAD") && + hashcmp(active_cache_base, revs->pending.objects->item->sha1)) + revs->diffopt.warning = "WARNING: HEAD and index BASE do not match"; + /* * Backward compatibility wart - "diff-index -m" does * not mean "do not ignore merges", but totally different.
--
1.5.1.777.gd14d3