Il repository di subversion al lavoro è stato impostato senza molta pianificazione in merito alla sua struttura. Non ci sono tag espliciti, tronco o rami configurati, anche se alcuni metadati di tagging è presente attraverso l'uso di subclipse: tagQuali sono gli effetti a lungo termine della riorganizzazione di un repository di subversion
Attualmente il repository è nel formato:
/CoreCodeA
/CoreCodeB
/Project1
/Project2
Recentemente un nuovo sviluppatore è iniziato il "versione 2" della nostra applicazione interna che ha posto sotto diversa cartella:
/new/NewCoreA
/new/NewCoreB
/new/Project3
/nuovi
Questi progetti/project4 tutti hanno dipendenze su varie parti del codice Core e su progetti simili (ad esempio, diversi progetti potrebbero dipendere dallo stesso tema). Queste dipendenze sono referenziate all'interno del contenuto di alcuni file di proprietà del progetto basati su testo.
Ho giocato con il comando svndumpfilter, convogliando l'output tramite sed e riorganizzandolo in due repository separati ("vecchio" e "nuovo"). È abbastanza facile da fare, e ora ho due repository distinti con trunk, tag e branch set (le informazioni di tag secondclipse possono essere riascoltate in un secondo momento).
La mia preoccupazione è che, armeggiando con la struttura di sovversione su ogni commit, io stia rompendo le build che in precedenza funzionavano, specialmente date le dipendenze da altri progetti. D'altra parte, ho bisogno di avere tag e rami in questo codebase prima piuttosto che dopo. Ma anche io non voglio forzare gli sviluppatori a ricontrollare i loro progetti se cambio idea qualche mese dopo la linea.
Credo che le mie scelte per ogni repository sono:
- Mark il repository con un tag "pre-ristrutturazione", riorganizzare il repository come voglio, tag con "post-ristrutturazione
- . Bene: non si romperà storico costruisce
- Bad: Effettivamente disconnette lavoro futuro dal lavoro passato, non facile capacità di fare cerotto rilascia XX1
- Ristrutturare l'intero repository, rompendo precedente costruisce
- Buono: Storia continuità del codice è mantenuta
- Bad: Precedente generazioni sono rotti, sarà sicuramente richiedono x.x.1 cerotto rilascia, se mai necessario di nuovo
- Ristrutturare l'intero archivio e modificare i file di proprietà di progetto in ogni fase
- Buono: La continuità del codice è mantenuto e progetti dovrebbe basarsi
- Bad: Modifica del contenuto effettivo dei file è molto più fragile di quanto semplicemente cambiando i metadati sulla loro posizione
Le prime due scelte sono facili eno ugh to do - ma mi piacerebbe un mondo reale 20-20 senno di poi da altri sviluppatori su quello che hanno fatto in una situazione simile, e cosa è andato storto o giusto.