From: Junio C Hamano Date: Wed, 11 Apr 2007 20:58:17 GMT Subject: [PATCH 2/2] diff [--cached] HEAD: catch updates to the current branch behind your back. Message-ID: <7vabxeocgm.fsf@assigned-by-dhcp.cox.net> 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 --- * 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