Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>In Git and other DVCS merges are easy not because of some mystical <strong>series of changesets</strong> view (unless you are using Darcs, with its theory of patches, or some Darcs-inspired DVCS; they are minority, though) that Joel rambles about, but because of <strong><em>merge tracking</em></strong>, and the more fundamental fact that <strong>each revisions knows its parents</strong>. For that you need (I think) whole-tree / full-repository commits... which unfortunately limits ability to do partial checkouts, and making a commit about only subset of files.</p> <p>When each revision (each commit), including merge commits, know its parents (for merge commits that means having/remembering more than one parent, i.e. <em>merge tracking</em>), you can reconstruct diagram (DAG = Direct Acyclic Graph) of revision history. If you know graph of revisions, you can find common ancestor of the commits you want to merge. And when your DVCS knows itself how to <strong>find common ancestor</strong>, you don't need to provide it as an argument, as for example in CVS.</p> <p>Note that there might be more than one common ancestor of two (or more) commits. Git makes use of so called "recursive" merge strategy, which merges merge bases (common ancestor), till you are left with one virtual / effective common ancestor (in some simplification), and can the do simple 3-way merge.</p> <p>Git use of <strong>rename detection</strong> was created to be able to deal with merges involving file renames. (This supports <a href="https://stackoverflow.com/questions/2613525/what-makes-merging-in-dvcs-easy/2613595#2613595">Jörg W Mittag</a> argument that DVCS have better merge support because they had to have it, as merges are much more common than in CVCS with its merge hidden in 'update' command, in update-then-commit workflow, c.f. <a href="http://www.catb.org/~esr/writings/version-control/version-control.html" rel="nofollow noreferrer" title="Understanding Version-Control Systems (DRAFT)">Understanding Version Control</a> (WIP) by Eric S. Raymond).</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload