Quali sono i vantaggi dei sistemi di controllo delle versioni che versione ogni file separatamente?

15

Negli ultimi anni ho lavorato con diversi sistemi di controllo delle versioni. Per me, una delle differenze fondamentali tra loro è stata la loro individuazione dei file di versione singolarmente (ogni file ha la sua numerazione e cronologia della versione separata) o il repository nel suo insieme (un "commit" o versione rappresenta un'istantanea dell'intero repository) .

Alcuni sistemi di controllo versione "per file":

  • CVS
  • ClearCase
  • Visual SourceSafe

Alcuni sistemi di controllo versione "intero-repository":

  • SVN
  • Git
  • Mercurial

Secondo la mia esperienza, i sistemi di controllo delle versioni per file hanno portato solo a problemi e richiedono un maggior numero di configurazioni e manutenzione per l'uso corretto (ad esempio, "specifiche di configurazione" in ClearCase). Ho avuto molte istanze di un collega che ha cambiato un file non correlato e ha infranto quello che sarebbe idealmente una linea di sviluppo isolata.

Quali sono i vantaggi di questi sistemi di controllo delle versioni per file? Quali problemi hanno i sistemi di controllo versione "whole-repository" che i sistemi di controllo versione per file non sono?

    
posta Mike Daniels 27.06.2011 - 21:32
fonte

6 risposte

12

Nella mia esperienza, non ce ne sono: VCS "whole-repository" domina strettamente "per-file" VCS.

    
risposta data 27.06.2011 - 23:32
fonte
3

Per file ha un vantaggio quando si costruiscono linee di prodotti (più prodotti software) dallo stesso repository.

Alcuni ambienti di appalto dei clienti richiedono la prova che la loro caduta di codice SOLO ha le modifiche che desideravano e non altre modifiche. Questo è abbastanza facile se i numeri di versione del file sono sempre gli stessi.

E questo non è un esempio casuale che ho tirato fuori dal nulla.

Questo è successo l'ultima volta che stavo spedendo aggiornamenti software all'esercito degli Stati Uniti per un sistema che hanno acquistato in gran numero dal mio precedente datore di lavoro. Il valore in dollari dei contratti era misurato in miliardi di dollari (indietro quando i dollari USA valevano molto di più)

Quindi aiuta alcune volte.

Stranamente: dove lavoro ora, spediamo a ciascun cliente anche un altro risultato .... (E non è qualcosa che ho deciso, nel caso ti stavi chiedendo.)

Ho il sospetto che sia molto più comune nello spazio difesa / aerospaziale rispetto alle applicazioni web o di tipo shrink-wrap.

    
risposta data 28.06.2011 - 01:12
fonte
3

Non c'è alcun vantaggio per il controllo delle versioni per file.

Gli svantaggi d'altra parte sono abbondanti e manifesti.

    
risposta data 12.06.2012 - 19:31
fonte
0

Potrei dire che i sistemi di controllo di versione "per file" non hanno vantaggi evidenti se non l'implementazione di VCS. I codificatori di VCS sarebbero felici di codificare quando era un controllo di versione "per file". Sono d'accordo al punto che, è venuto storicamente.

    
risposta data 28.06.2011 - 09:41
fonte
0

Non c'è alcun vantaggio nell'approccio per file quando si hanno file correlati. Qual è il caso più comune nelle impostazioni di sviluppo.

In alcuni casi particolari - / etc o. i file nella tua directory home in Unix sono l'unico che ho regolarmente - stai gestendo (principalmente) file non correlati. E poi avere un sistema che insiste nel mantenere sincronizzati i cambiamenti non collegati può essere un fastidio.

    
risposta data 12.06.2012 - 19:58
fonte
-1

Come quello che in realtà vuoi da un sistema di controllo di versione è di tenere traccia di come un sistema cambia, e tali cambiamenti sono solo casualmente relativi ai file su disco, non molto.

Il più grande vantaggio nell'aderire con un VCS come CVS è che tutti lo conoscono, anche se nessuno lo beve davvero.

L'approccio adottato da 'git' e altri, è più utile e più vicino al punto reale di ciò che stai cercando di fare con un VCS, ma solo dopo esserti abituato!

    
risposta data 28.06.2011 - 09:59
fonte

Leggi altre domande sui tag