Files
git/builtin
Junio C Hamano 0b10b8a3d5 merge: clarify collect_parents() logic
Clarify this small function in three ways.

 - The function initially collects all commits to be merged into a
   commit_list "remoteheads"; the "remotes" pointer always points at
   the tail of this list (either the remoteheads variable itself, or
   the ->next slot of the element at the end of the list) to help
   elongate the list by repeated calls to commit_list_insert().
   Because the new element appended by commit_list_insert() will
   always have its ->next slot NULLed out, there is no need for us
   to assign NULL to *remotes to terminate the list at the end.

 - The variable "head_subsumed" always confused me every time I read
   this code.  What is happening here is that we inspect what the
   caller told us to merge (including the current HEAD) and come up
   with the list of parents to be recorded for the resulting merge
   commit, omitting commits that are ancestor of other commits.
   This filtering may remove the current HEAD from the resulting
   parent list---and we signal that fact with this variable, so that
   we can later record it as the first parent when "--no-ff" is in
   effect.

 - The "parents" list is created for this function by reduce_heads()
   and was not deallocated after its use, even though the loop
   control was written in such a way to allow us to do so by taking
   the "next" element in a separate variable so that it can be used
   in the next-step part of the loop control.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2015-04-29 13:17:53 -07:00
..
2014-11-21 10:19:14 -08:00
2014-07-16 11:10:11 -07:00
2014-10-21 13:28:10 -07:00
2014-12-22 09:57:42 -08:00
2014-10-24 14:59:10 -07:00
2014-10-21 13:28:10 -07:00
2014-01-17 12:21:20 -08:00
2014-10-10 16:02:26 -07:00
2014-10-21 13:28:10 -07:00
2014-09-02 12:00:30 -07:00
2015-04-29 13:17:53 -07:00
2014-10-29 10:07:56 -07:00
2014-04-30 10:30:02 -07:00
2014-10-08 13:05:25 -07:00