Thread (3 messages) flat view 3 messages, 2 authors, 2016-06-15

Re: [PATCH v2] diff: support --cached on unborn branches

From: Nguyen Thai Ngoc Duy <hidden>
Date: 2016-06-15 22:49:57
Subsystem: documentation, the rest · Maintainers: Jonathan Corbet, Linus Torvalds

Possibly related (same subject, not in this thread)

On Sat, Oct 30, 2010 at 08:12:27PM -0700, Junio C Hamano wrote:
Nguyễn Thái Ngọc Duy  [off-list ref] writes:
quoted
"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 still 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: Nguyễn Thái Ngọc Duy <redacted>
Will take a look at it, and queue.  Thanks.
quoted
 "git diff --cached HEAD" does fail, but I don't really care.
I _do_ care, and so should you.  And I think it _should_ fail, if the user
explicitly asked to compare the index with HEAD that does not exist yet.

As we are updating the semantics of a Porcelain command, there should be
an update that explains the new usage in the documentation, no?
Yes.

--8<--
diff --git a/Documentation/git-diff.txt b/Documentation/git-diff.txt
index dd1fb32..518e46b 100644
--- a/Documentation/git-diff.txt
+++ b/Documentation/git-diff.txt
@@ -32,7 +32,9 @@ directories. This behavior can be forced by --no-index.
 	This form is to view the changes you staged for the next
 	commit relative to the named <commit>.  Typically you
 	would want comparison with the latest commit, so if you
-	do not give <commit>, it defaults to HEAD.
+	do not give <commit>, it defaults to HEAD. If HEAD does
+	not exist (e.g. unborn branches) and <commit> is not
+	given, it shows all staged changes.
 	--staged is a synonym of --cached.
 
 'git diff' [--options] <commit> [--] [<path>...]::
--8<--
-- 
Duy
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help