diff options
author | Nguyễn Thái Ngọc Duy <pclouds@gmail.com> | 2011-02-03 13:23:34 +0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2011-02-07 15:04:30 -0800 |
commit | a2b7a3b3a966c5801efe968d4b5656fa5a885409 (patch) | |
tree | 10fa9f1407f71ccec95459533dddf9c956f3559d /builtin | |
parent | 2e9c8789b7b0d4d3cd2f951e1694387686e2d740 (diff) | |
download | git-a2b7a3b3a966c5801efe968d4b5656fa5a885409.tar.gz git-a2b7a3b3a966c5801efe968d4b5656fa5a885409.tar.xz |
diff: support --cached on unborn branches
"git diff --cached" (without revision) used to mean "git diff --cached
HEAD" (i.e. the user was too lazy to type HEAD). This "correctly"
failed when there was no commit yet. But was that correctness useful?
This patch changes the definition of what particular command means.
It is a request to show what _would_ be committed without further "git
add". The internal implementation is the same "git diff --cached HEAD"
when HEAD exists, but when there is no commit yet, it compares the index
with an empty tree object to achieve the desired result.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin')
-rw-r--r-- | builtin/diff.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/builtin/diff.c b/builtin/diff.c index 945e7583a..42822cd53 100644 --- a/builtin/diff.c +++ b/builtin/diff.c @@ -330,8 +330,11 @@ int cmd_diff(int argc, const char **argv, const char *prefix) else if (!strcmp(arg, "--cached") || !strcmp(arg, "--staged")) { add_head_to_pending(&rev); - if (!rev.pending.nr) - die("No HEAD commit to compare with (yet)"); + if (!rev.pending.nr) { + struct tree *tree; + tree = lookup_tree((const unsigned char*)EMPTY_TREE_SHA1_BIN); + add_pending_object(&rev, &tree->object, "HEAD"); + } break; } } |