One of the advantages of SVN over CVS as given here is cheap copying and branching. What does "cheap copying and branching" mean in SVN parlance? How is it different from CVS copying and branching?
- Anybody can ask a question
- Anybody can answer
- The best answers are voted up and rise to the top
If I read it right "cheap copying and branching" is the same as "lazy copying and branching".
In these schemes the file isn't actually copied until it becomes different from the parent file. The system creates a placeholder for the file but when you read the contents it goes back to the main trunk for the contents.
This has the main advantage of saving disk space on your server. If you did a full copy of the trunk then you would double the amount of disk space you need on your server. By only actually copying the files that have changed you drastically reduce this requirement. A typical branch will only actually modify a handful or a few hundred files at most.
Another significant advantage is that as the files aren't copied until needed the creation of the branch is a very quick operation. This encourages branching as it's now seen as a cheap/quick operation rather than an expensive/slow one. (Thanks to Andres F. and Murph for pointing that out)
SVN "cheap copies and branches" is explained in the manual ( http://svnbook.red-bean.com/en/1.1/ch04s02.html ). Relevant section:
Note that this isn't how CVS works. Copies in CVS are "expensive", both in the time it takes to create the branch, and the disk space it takes up.
What I understand for cheap process in terms of create a branch of a tag in SVN in when you execute the command(svn tag or branch), the command itselft ins't creating a new physical folders with the content of all your project, all the system do it's replicate the structure base of the snapshot of you trunk which is pretty different than copy and paste all the files in the new folder, bring the consequence that the application that the process it's faster.