From <http://svnbook.red-bean.com/en/1.2/svn.branchmerge.using.html>

Cheap Copies

Subversion's repository has a special design. When you copy a  
directory, you don't need to worry about the repository growing huge— 
Subversion doesn't actually duplicate any data. Instead, it creates a  
new directory entry that points to an existing tree. If you're a Unix  
user, this is the same concept as a hard-link. From there, the copy is  
said to be “lazy”. That is, if you commit a change to one file within  
the copied directory, then only that file changes—the rest of the  
files continue to exist as links to the original files in the original  
directory.

This is why you'll often hear Subversion users talk about “cheap  
copies”. It doesn't matter how large the directory is—it takes a very  
tiny, constant amount of time to make a copy of it. In fact, this  
feature is the basis of how commits work in Subversion: each revision  
is a “cheap copy” of the previous revision, with a few items lazily  
changed within. (To read more about this, visit Subversion's website  
and read about the “bubble up” method in Subversion's design documents.)

Of course, these internal mechanics of copying and sharing data are  
hidden from the user, who simply sees copies of trees. The main point  
here is that copies are cheap, both in time and space. Make branches  
as often as you want.

Paul


On 12 Feb 2009, at 16:50, Nick wrote:

>
> Can someone explain this further? Why would files copied at the WC
> level, then committed be any different than files copies at the repo
> level? Either way, the files are captured in thy state and committed.
>
> On Feb 11, 7:58 am, Philip M <philip.mor...@gmail.com> wrote:
>> Yeah, that's correct. A tag/branch in the repository is a cheap copy,
>> while the same in the working copy is a full copy.
>>
>> +1 for merge here too!
>>
>> On Jan 18, 11:16 pm, kiddailey <kiddai...@gmail.com> wrote:
>>
>>> Just for clarification...
>>
>>> There's a big difference between copying at the repository and  
>>> copying
>>> at the working copy.  I would imagine that Versions behaves
>>> differently depending on what you're dragging.  In other words, if  
>>> you
>>> option+drag on folders in a repository bookmark, it performs a tag/
>>> branch.  If you perform an option+drag within a working copy  
>>> bookmark,
>>> it copies the local files and adds them as new items for the next
>>> commit.
>>
>>> Can anyone verify that this assumption is correct?
>>
>>> On Jan 15, 5:24 pm, Kieren Eaton <circle...@gmail.com> wrote:
>>
>>>> option-Drag the folder you  want to tag to its destination and  
>>>> fill in
>>>> the resulting dialog,
> >


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Versions" group.
To post to this group, send email to versions@googlegroups.com
To unsubscribe from this group, send email to 
versions+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/versions?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to