git-read-tree(1)
================

NAME
----
git-read-tree - Reads tree information into the index


SYNOPSIS
--------
'git-read-tree' (<tree-ish> | [-m [-u|-i]] <tree-ish1> [<tree-ish2> [<tree-ish3>]])


DESCRIPTION
-----------
Reads the tree information given by <tree-ish> into the index,
but does not actually *update* any of the files it "caches". (see:
git-checkout-index)

Optionally, it can merge a tree into the index, perform a
fast-forward (i.e. 2-way) merge, or a 3-way merge, with the -m
flag.  When used with -m, the -u flag causes it to also update
the files in the work tree with the result of the merge.

Trivial merges are done by "git-read-tree" itself.  Only conflicting paths
will be in unmerged state when "git-read-tree" returns.

OPTIONS
-------
-m::
	Perform a merge, not just a read.

-u::
	After a successful merge, update the files in the work
	tree with the result of the merge.

-i::
	Usually a merge requires the index file as well as the
	files in the working tree are up to date with the
	current head commit, in order not to lose local
	changes.  This flag disables the check with the working
	tree and is meant to be used when creating a merge of
	trees that are not directly related to the current
	working tree status into a temporary index file.


<tree-ish#>::
	The id of the tree object(s) to be read/merged.


Merging
-------
If '-m' is specified, "git-read-tree" can perform 3 kinds of
merge, a single tree merge if only 1 tree is given, a
fast-forward merge with 2 trees, or a 3-way merge if 3 trees are
provided.


Single Tree Merge
~~~~~~~~~~~~~~~~~
If only 1 tree is specified, git-read-tree operates as if the user did not
specify '-m', except that if the original index has an entry for a
given pathname, and the contents of the path matches with the tree
being read, the stat info from the index is used. (In other words, the
index's stat()s take precedence over the merged tree's).

That means that if you do a "git-read-tree -m <newtree>" followed by a
"git-checkout-index -f -u -a", the "git-checkout-index" only checks out
the stuff that really changed.

This is used to avoid unnecessary false hits when "git-diff-files" is
run after git-read-tree.


Two Tree Merge
~~~~~~~~~~~~~~

Typically, this is invoked as "git-read-tree -m $H $M", where $H
is the head commit of the current repository, and $M is the head
of a foreign tree, which is simply ahead of $H (i.e. we are in a
fast forward situation).

When two trees are specified, the user is telling git-read-tree
the following:

     1. The current index and work tree is derived from $H, but
        the user may have local changes in them since $H;

     2. The user wants to fast-forward to $M.

In this case, the "git-read-tree -m $H $M" command makes sure
that no local change is lost as the result of this "merge".
Here are the "carry forward" rules:

        I (index)           H        M        Result
       -------------------------------------------------------
      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

        clean I==H  I==M
       ------------------
      4 yes   N/A   N/A     nothing  nothing  keep index
      5 no    N/A   N/A     nothing  nothing  keep index

      6 yes   N/A   yes     nothing  exists   keep index
      7 no    N/A   yes     nothing  exists   keep index
      8 yes   N/A   no      nothing  exists   fail
      9 no    N/A   no      nothing  exists   fail

     10 yes   yes   N/A     exists   nothing  remove path from index
     11 no    yes   N/A     exists   nothing  fail
     12 yes   no    N/A     exists   nothing  fail
     13 no    no    N/A     exists   nothing  fail

        clean (H=M)
       ------
     14 yes                 exists   exists   keep index
     15 no                  exists   exists   keep index

        clean I==H  I==M (H!=M)
       ------------------
     16 yes   no    no      exists   exists   fail
     17 no    no    no      exists   exists   fail
     18 yes   no    yes     exists   exists   keep index
     19 no    no    yes     exists   exists   keep index
     20 yes   yes   no      exists   exists   use M
     21 no    yes   no      exists   exists   fail

In all "keep index" cases, the index entry stays as in the
original index file.  If the entry were not up to date,
git-read-tree keeps the copy in the work tree intact when
operating under the -u flag.

When this form of git-read-tree returns successfully, you can
see what "local changes" you made are carried forward by running
"git-diff-index --cached $M".  Note that this does not
necessarily match "git-diff-index --cached $H" would have
produced before such a two tree merge.  This is because of cases
18 and 19 --- if you already had the changes in $M (e.g. maybe
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.


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.

However, when you do "git-read-tree" with three trees, the "stage"
starts out at 1.

This means that you can do

	git-read-tree -m <tree1> <tree2> <tree3>

and you will end up with an index with all of the <tree1> entries in
"stage1", all of the <tree2> entries in "stage2" and all of the
<tree3> entries in "stage3".

Furthermore, "git-read-tree" has special-case logic that says: if you see
a file that matches in all respects in the following states, it
"collapses" back to "stage0":

   - stage 2 and 3 are the same; take one or the other (it makes no
     difference - the same work has been done on stage 2 and 3)

   - stage 1 and stage 2 are the same and stage 3 is different; take
     stage 3 (some work has been done on stage 3)

   - stage 1 and stage 3 are the same and stage 2 is different take
     stage 2 (some work has been done on stage 2)

The "git-write-tree" command refuses to write a nonsensical tree, and it
will complain about unmerged entries if it sees a single entry that is not
stage 0.

Ok, this all sounds like a collection of totally nonsensical rules,
but it's actually exactly what you want in order to do a fast
merge. The different stages represent the "result tree" (stage 0, aka
"merged"), the original tree (stage 1, aka "orig"), and the two trees
you are trying to merge (stage 2 and 3 respectively).

The order of stages 1, 2 and 3 (hence the order of three
<tree-ish> command line arguments) are significant when you
start a 3-way merge with an index file that is already
populated.  Here is an outline of how the algorithm works:

- if a file exists in identical format in all three trees, it will
  automatically collapse to "merged" state by git-read-tree.

- a file that has _any_ difference what-so-ever in the three trees
  will stay as separate entries in the index. It's up to "porcelain
  policy" to determine how to remove the non-0 stages, and insert a
  merged version.

- the index file saves and restores with all this information, so you
  can merge things incrementally, but as long as it has entries in
  stages 1/2/3 (ie "unmerged entries") you can't write the result. So
  now the merge algorithm ends up being really simple:

  * you walk the index in order, and ignore all entries of stage 0,
    since they've already been done.

  * if you find a "stage1", but no matching "stage2" or "stage3", you
    know it's been removed from both trees (it only existed in the
    original tree), and you remove that entry.

  * if you find a matching "stage2" and "stage3" tree, you remove one
    of them, and turn the other into a "stage0" entry. Remove any
    matching "stage1" entry if it exists too.  .. all the normal
    trivial rules ..

You would normally use "git-merge-index" with supplied
"git-merge-one-file" to do this last step.  The script
does not touch the files in the work tree, and the entire merge
happens in the index file.  In other words, there is no need to
worry about what is in the working directory, since it is never
shown and never used.

When you start a 3-way merge with an index file that is already
populated, it is assumed that it represents the state of the
files in your work tree, and you can even have files with
changes unrecorded in the index file.  It is further assumed
that this state is "derived" from the stage 2 tree.  The 3-way
merge refuses to run if it finds an entry in the original index
file that does not match stage 2.

This is done to prevent you from losing your work-in-progress
changes.  To illustrate, suppose you start from what has been
commited last to your repository:

    $ JC=`cat .git/HEAD`
    $ git-checkout-index -f -u -a $JC

You do random edits, without running git-update-index.  And then
you notice that the tip of your "upstream" tree has advanced
since you pulled from him:

    $ git-fetch rsync://.... linus
    $ LT=`cat .git/MERGE_HEAD`

Your work tree is still based on your HEAD ($JC), but you have
some edits since.  Three-way merge makes sure that you have not
added or modified index entries since $JC, and if you haven't,
then does the right thing.  So with the following sequence:

    $ git-read-tree -m -u `git-merge-base $JC $LT` $JC $LT
    $ git-merge-index git-merge-one-file -a
    $ echo "Merge with Linus" | \
      git-commit-tree `git-write-tree` -p $JC -p $LT

what you would commit is a pure merge between $JC and LT without
your work-in-progress changes, and your work tree would be
updated to the result of the merge.


See Also
--------
gitlink:git-write-tree[1]; gitlink:git-ls-files[1]


Author
------
Written by Linus Torvalds <torvalds@osdl.org>

Documentation
--------------
Documentation by David Greaves, Junio C Hamano and the git-list <git@vger.kernel.org>.

GIT
---
Part of the gitlink:git[7] suite

