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 <junkio@xxxxxxx> --- * 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 - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html