Esercizi di controllo della versione per Riscrivi

29

Abbiamo sviluppato un prodotto (prototipo) P_OLD in linguaggio X e lo stiamo riscrivendo da zero come P_NEW nella lingua Y.

Poiché P_NEW e P_OLD sono lo stesso prodotto:

P_NEW dovrebbe essere solo un po 'vecchio di P_OLD o dovrebbe essere il suo repository?

Qual è il solito modo di gestire cambiamenti così grandi da formare una prospettiva di controllo della versione?

    
posta 1v0 14.07.2015 - 20:51
fonte

3 risposte

46

Quasi sicuramente vorrai un nuovo repository.

Lo scopo del repository è:

  • per tenere traccia della cronologia e delle modifiche in modo da poterle confrontare facilmente
  • per gestire i rami e le unioni, piuttosto che inviare semplicemente e-mail i file di patch e applicarli manualmente alle directory di lavoro

Se stai completamente riscrivendo un progetto da zero, non ha senso mettere la riscrittura nello stesso repository. Non sarai in grado di applicare patch riscritte nella vecchia lingua per la tua riscrittura. Cambiare i repository non farà scomparire la cronologia nel vecchio repository, e se cambierai non avrai strane fasi intermedie in cui hai due lingue da giocare nel tuo repository.

L'unica ragione per cui prenderei in considerazione la possibilità di conservare il repository quando cambi le lingue sarebbe: a) le lingue sono così simili che il codice può spesso essere copiato da una all'altra senza apportare modifiche, oppure b) hai una progetto in cui la maggior parte del contenuto funzionale nel controllo di versione è qualcosa di simile a modelli in un linguaggio di template che stai mantenendo, e il linguaggio del core che stai cambiando essere tradotto linea - per linea in un'altra lingua (e anche solo in quel caso se sai che dovrai continuare a ripetere i modelli durante la migrazione).

    
risposta data 14.07.2015 - 21:18
fonte
16

Io stesso metto sempre le riscritture nei nuovi repository. In questo modo, le build, i test e le implementazioni possono essere eseguiti in modo indipendente.

Quando stai riscrivendo un progetto in un'altra lingua, c'è spesso poca somiglianza in una di quelle attività come la costruzione, l'esecuzione di test e la distribuzione. Ti risparmerai dolore se li isolerai solo nel loro repository. Quindi dovrai solo preoccuparti del dolore di come gestirai l'utente e la transizione dei dati dal vecchio sistema al nuovo; è sempre una cosa divertente :)

    
risposta data 14.07.2015 - 20:58
fonte
5

Se i tuoi sistemi sono sufficientemente modulari e compatibili con i collegamenti, trarrai vantaggio da un singolo repository e build. Ad esempio, se il sistema C viene riscritto in C ++, il codice C ++ potrebbe chiamare la funzionalità esistente e sostituirlo in modo incrementale.

Tuttavia, anche in questo caso alcuni potrebbero obiettare per l'avvio di un nuovo repository in cui viene richiamato il vecchio codice rilevante come richiesto.

    
risposta data 15.07.2015 - 03:57
fonte

Leggi altre domande sui tag