I am learning the two source code control systems and discovered that their branching strategies are very different.
That Perforce copies all of its original file to the new branch, although it does adapt some tricks (e.g. lazy copy, "p4 -v") to prevent space grow, but eventually it will consume more space and leave more meta data. Instead, that in GIT, branching is basically moving of pointers around. I am wondering why Perforce cannot adapt that same approach? Is that because it comes with the burden of storing snapshots(as in git) instead of file difference(as in Perforce)?
Also, why GIT stores the snapshots of files instead of the difference? Is there any necessity of doing so? Does it mean that in general case GIT code repository will be larger than that of Perforce? If the same thing are to be stored in both systems? Will committing takes longer for GIT?