> From: "Philip Oakley" <philipoak...@iee.org>
> > How, then, do merges handle this information?  If the "delta" is that
> > ./a/123 was moved into ./b/456, does the merging process understand
> > that, and move the same file in the destination directory?  Or does it
> > only do so if ./a/123 in the destination directory is similar enough
> > to ./a/123 in the delta?
> Git doesn't do deltas. It does complete snapshots.

The question isn't how Git stores things internally, but how it
merges.  And any merge process implictly contains a concept of a
"delta", how the change between state 1 and state 2 is "described" so
that it can be applied to state 3.  It's easier to use a version
control system if you understand the *concept* of delta and merge that
it uses; you're less surprised by the messy cases.

> Merging is done filename by filename (you specifically add files by name 
> and location in the directory tree).

OK, so merging is done by matching filenames (or position within the
tree), not by matching the *contents* of files.  And so deltas are a
set of specific changes in a set of specific filenames.

> By making branching easy and commits easy and local, the merging is in 
> general almost automatic - distinct line changes slot into the merged 
> file without conflict for the slot. Auto-merging won't spot other 
> structural changes such as changing a function definition - you still 
> need a developer with brains in such cases!

Yeah, "almost automatic"...

But that gets me oriented.  Thanks!



Reply via email to