Risposte:
Significa che quando si esegue un commit nel sistema di controllo della versione o tutto ciò che si desidera eseguire, o nulla lo fa.
In CVS, quando si tenta di eseguire il commit è possibile che il commit abbia esito positivo su più file, quindi fallire su molti altri (perché sono stati modificati). Questo lascia il repository in uno stato sfortunato perché metà del tuo commit non c'è, ed è probabile che tu abbia lasciato le cose in uno stato in cui non verranno compilate o peggio. Ora devi sbrigarti e integrare qualsiasi modifica in modo da poter eseguire il commit degli altri file prima che qualcun altro debba aggiornare e ottenere il tuo set rotto di modifiche.
In SVN ciò non accadrà: SVN eseguirà il commit di tutto ciò che è stato modificato o non riuscirà l'intero changeet. Pertanto, non lascerai mai il repository in uno stato interrotto a causa di problemi di commit.
Questo è spiegato ad esempio nel ciao ciao CVS. Sono stato l' articolo sovvertito scritto da Andy Lester :
Se provo a eseguire il commit in Subversion, ma uno dei file ha un conflitto o non è aggiornato, nessuno dei file si impegna. In CVS, hai una serie di file semi-impegnati che devi correggere subito.
Il fatto che CVS imponga al programmatore di correggere immediatamente l'unione è controproducente. Rispetto a ciò, un'opzione per ritardare / annullare / unire attentamente le modifiche è un vantaggio sostanziale.
Altri vantaggi di SVN rispetto a CVS spiegati nell'articolo precedente sono:
Versioni locali di tutto ciò che fai
Se vuoi cvs diff, devi essere in grado di connetterti al tuo repository. Nessuna connessione di rete, nessuna differenza. Subversion archivia copie locali incontaminate di ciò su cui stai lavorando, quindi svn diff funzionerà perfettamente. Vuoi ricominciare? svn revert funziona anche non connesso.Nomi simbolici delle revisioni
HEAD è il nome della punta del bagagliaio in CVS, ma ho sempre voluto poter dire “-r-1 ″ come se potessi tornare indietro ai tempi di PVCS. Con CVS, devo fare un registro cvs su ciò che sto modificando, quindi sottrarre uno. Non è divertente. Con Subversion, posso dire svn diff -r PREV.Rapporti sullo stato reale
In CVS, l'unico modo per vedere se qualcosa sul server è più recente è aggiornare cvs e sperare che qualunque cosa accada non causa alcun conflitto. Con il comando svn status, ottengo lo stato reale, quindi posso vedere se ci sono conflitti PRIMA di fare un aggiornamento.Gestione utile dei conflitti di unione
In CVS, se ci sono conflitti, si ottengono marcatori di conflitto nel file. In Subversion, ottieni marcatori di conflitto, PIÙ una copia del tuo file pre-conflitto originale, PIÙ la versione che è venuta giù dal server, PIÙ la versione che stavi originariamente modificando. Quindi, è necessario svn risolvere esplicitamente nomefile.txt per dire a Subversion che il problema è stato risolto. Non è più necessario ricorrere accidentalmente al CVS con gli indicatori di conflitto ancora presenti.
Significa che tutte le modifiche a tutti i file vengono eseguite in una singola transazione, quindi tutte hanno esito positivo o nessuna.
Ciò significa che è meno probabile che venga eseguito il check-in delle modifiche parziali nel repository che causano il fallimento delle build. Puoi ancora far dimenticare alle persone di archiviare tutti i file pertinenti, ma si tratta di un problema di processo piuttosto che di un problema con il sistema di controllo delle versioni.