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