Che cosa significa copia / diramazione economica per un sistema di controllo delle versioni come SVN?

2

Uno dei vantaggi di SVN su CVS come indicato qui è copia e ramificazione a basso costo . Che cosa significa " copia e ramificazione a basso costo " nel linguaggio SVN? In che modo è diverso dalla copia e dalla ramificazione CVS?

    
posta Geek 04.09.2012 - 16:31
fonte

3 risposte

3

Se ho letto bene "copia e diramazione economica" equivale a "copia e ramificazione pigra".

In questi schemi il file non viene effettivamente copiato finché non diventa diverso dal file principale. Il sistema crea un segnaposto per il file ma quando leggi il contenuto torna al tronco principale per i contenuti.

Questo ha il vantaggio principale di risparmiare spazio su disco sul tuo server. Se hai eseguito una copia completa del trunk, raddoppierai la quantità di spazio su disco necessaria sul tuo server. Copiando davvero solo i file che hai modificato, riduci drasticamente questo requisito. Un tipico ramo modificherà solo una manciata o qualche centinaio di file al massimo.

Un altro vantaggio significativo è che, poiché i file non vengono copiati fino a quando non è necessario, la creazione del ramo è un'operazione molto rapida. Ciò incoraggia la ramificazione poiché ora è considerata un'operazione economica / rapida piuttosto che costosa / lenta. (Grazie ad Andres F. e Murph per averlo indicato)

    
risposta data 04.09.2012 - 16:39
fonte
2

SVN "copie e rami economici" è spiegato nel manuale ( link ). Sezione pertinente:

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.

Si noti che non è così che funziona CVS. Le copie in CVS sono "costose", sia nel tempo necessario per creare il ramo, sia nello spazio su disco che occupa.

    
risposta data 04.09.2012 - 17:22
fonte
0

Quello che capisco per processo economico in termini di creazione di un ramo di un tag in SVN quando si esegue il comando (svn tag o branch), il comando itselft non crea una nuova cartella fisica con il contenuto di tutti i tuoi progetto, tutto il sistema fa replicare la struttura base dell'istantanea del tuo trunk che è abbastanza diversa da copiare e incollare tutti i file nella nuova cartella, portare la conseguenza che l'applicazione che il processo è più veloce.

    
risposta data 04.09.2012 - 17:09
fonte

Leggi altre domande sui tag