From 78ec2268aca28653157a72bbebe42069f2fc903f Mon Sep 17 00:00:00 2001
From: Junio C Hamano
Date: Tue, 16 Sep 2008 19:17:31 +0000
Subject: [PATCH] Autogenerated HTML docs for v1.6.0.2-249-g97d7f
---
git-read-tree.html | 13 +++++++++++--
git-read-tree.txt | 11 ++++++++++-
2 files changed, 21 insertions(+), 3 deletions(-)
diff --git a/git-read-tree.html b/git-read-tree.html
index 31d8eed02..5582b864f 100644
--- a/git-read-tree.html
+++ b/git-read-tree.html
@@ -537,7 +537,10 @@ Here are the "carry forward" rules:
0 nothing nothing nothing (does not happen)
1 nothing nothing exists use M
2 nothing exists nothing remove path from index
-3 nothing exists exists use M
+3 nothing exists exists, use M if "initial checkout"
+ H == M keep index otherwise
+ exists fail
+ H != M
@@ -592,6 +595,12 @@ you picked it up via e-mail in a patch form), git diff-index
--cached $H would have told you about the change before this
merge, but it would not show in git diff-index --cached $M
output after two-tree merge.
+
Case #3 is slightly tricky and needs explanation. The result from this
+rule logically should be to remove the path if the user staged the removal
+of the path and then swiching to a new branch. That however will prevent
+the initial checkout from happening, so the rule is modified to use M (new
+tree) only when the contents of the index is empty. Otherwise the removal
+of the path is kept as long as $H and $M are the same.
3-Way Merge
Each "index" entry has two bits worth of "stage" state. stage 0 is the
normal one, and is the only one you'd see in any kind of normal use.
@@ -767,7 +776,7 @@ have finished your work-in-progress), attempt the merge again.