Just tried this in Unix to see the behavior to see if Finder was following Unix behavior:
then ran “cp -r foo bar”
The results: Folder “bar/foo” was replaced by “foo”.
So, Mac OS X is merely following Unix behavior. Considering that Mac OS X is based upon BSD Unix, this should be expected.
However, there may be another reason why copying one version of a folder to another one will replace the other one. Some files, like the Applications, which are represented as a single file in the Finder are actually not files, but folders.
In Mac OS X, these are referred to as packages. If you have the Terminal application (it is under the Utilities folder in the Applications folder), open it, and type in the following:
Now, open a Finder window and go to your Applications folder. You’ll see that the Terminal window and the Finder Window will show identical folders and files. Now, in your Terminal window, do this:
CodeResources Safari Webpage Preview Fetcher
In Unix, the “cd” command means “change directories”. Thus, the Safari application is a folder that contains a bunch of files that Safari needs in order to run.
If you right click on the Safari.app icon in Finder, and select “Show Package Contents”, you’ll see the same thing.
Now, imagine I have an App called Fetch that is at version 4.3 and I want to replace it with a newer version of Fetch which is at version 5.1. In Finder, I drag the version 5.1 Fetch application into my Application folder and the newer version of Fetch will overwrite the older version of Fetch.
Since both of these applications (the 4.3 version and 5.1 version) are folders, the last thing I want is for the 5.3 version of the application (which is just a folder that contains program code to execute and other resource files) to merge with the older 4.3 version of the application.
Therefore, Finder has to replace a folder when you copy a new version and not merge them.
I hope this makes sense.