Domanda

Ho letto il libro di sovversione ed è chiaro per me che la sovversione non memorizza i singoli file, ma solo delta, al fine di ridurre al minimo lo spazio su disco. Subversion fa anche lo stesso con i file binari così (questo era un enorme debolezza del CVS).

Comunque non capisco l'esatto meccanismo. Quando ho commesso un file che cosa succede?

  1. Subversion memorizza solo la diff (e ha già la versione precedente)
  2. Subversion elimina la versione precedente, memorizza il nuovo file intatti e crea un diff inverso al fine di "ri-creare" la vecchia versione, se necessario.
  3. Un'altra cosa che non ho pensato.

Il primo caso potrebbe sembrare la più logica. Ciò solleva però un'altra domanda. Se ho in un repository subversion un file con 1000 commit e un nuovo sviluppatore estrae una copia pulita, poi la sovversione avrebbe dovuto recuperare la versione originale (importazione iniziale) e applicare 1000 diff su questo prima di restituire il risultato. È corretto? C'è una sorta di cache per file in cui la versione più recente è mantenuto così?

In pratica dove posso trovare informazioni sugli interni repository SVN?

Aggiornamento: A quanto pare il backend di sovversione gioca un ruolo importante in questo. Al tempo o scrivendo FSFS utilizza l'opzione 1, mentre BDB utilizza l'opzione 2. Grazie msemack!

È stato utile?

Soluzione

A causa formato repository di Subversion è del tutto interno, sono liberi di modificare la rappresentazione da una revisione a quella successiva. Credo che l'attuale revisione memorizza generalmente delta inversa (la vostra opzione 2), ma anche negozi istantanee complete periodicamente in modo che non ha bisogno di risolvere i 1000 diff prima di restituire un risultato.

eversione 1,6 note di rilascio ha una sezione di stoccaggio miglioramenti Filesystem che ha alcune note su questo, e link ad altre fonti. Basti dire che i dettagli di memorizzazione dei dati Subversion sono complessi e soggetti a modifiche.

C'è anche un documento di progettazione nell'albero dei sorgenti di Subversion che descrive l'uso di saltare delta in Subversion . In generale, la directory / note / contiene diversi documenti utili riguardanti interni di Subversion .

Altri suggerimenti

Credo che il seguente link sarebbe di aiuto a comprendere l'architettura fsfs

http://svn.apache.org/repos/ ASF / subversion / trunk / subversion / libsvn_fs_fs / struttura

documento Subversion design ( che è piuttosto datato, però) è possibile ottenere questo:

  

Come molti altri sistemi di controllo di revisione, Subversion memorizza le modifiche come differenze. Non fa copie complete di nodi; invece, memorizza l'ultima revisione come un testo completo, e le revisioni precedenti come una successione di diff inversa (la parola "diff" è usato liberamente qui - per i file, significa vdeltas, per le directory, significa un formato che esprime modifiche directory).

Non credo che è stato cambiato da allora.

Inoltre, vedere Bubble-up Metodo .

FSFS potrebbe aiutare .

Se si utilizza Berkeley DB, ecco la specifica per questo.

FSFS utilizza delta inversa per memorizzare le modifiche e SKIP- delta per velocizzare alcune azioni, se ho capito tutto correttamente.

  

Ogni volta che si commettono un cambiamento, il   negozi repository una nuova revisione di   quell'albero complessiva repository e   etichette il nuovo albero con un nuovo   numero di revisione. Naturalmente, la maggior parte dei   l'albero è la stessa come la revisione   prima, fatta eccezione per le parti che   cambiato.

     

Il nuovo numero di revisione è un   etichetta sequenziale che si applica al   tutto il nuovo albero, non solo per i file   e le directory che hanno toccato in quel   revisione. Tuttavia, colloquialmente, una   numero di revisione è usato per riferirsi a   il cambiamento commesso nell'ambito di tale revisione;   per esempio, "il cambiamento di R588"   ( "R588" è l'abbreviazione di "revisione   588" ) significa in realtà "la differenza   tra gli alberi di repository 587 e 588" ,   o in altre parole, "la modifica apportata   ad albero 587 per la produzione di albero 588" .

Date un'occhiata a: Subversion FAQ

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top