> 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!