Recentemente ho aderito a una società SaaS che finora non utilizzava la traccia di controllo del codice sorgente e manteneva il loro sviluppo, invece di lavorare separatamente sulle proprie parti della base di un determinato client. Nel tentativo di contribuire e di contribuire positivamente, ho iniziato a usare git per i miei contributi e voglio portare altri (in futuro, tutti) dei miei colleghi nel VCS.
La mia domanda deriva dalla natura complessa degli ambienti di sviluppo in cui scriviamo e dalle best practice per la versione che la controlla. Darò una descrizione del set-up e poi presenterò le domande specifiche in seguito.
Set-up:
Il business si basa su Archibus . Distribuiamo, supportiamo e personalizziamo l'installazione di ogni cliente. Ogni cliente ha una coppia di server dedicata, che ospita tutto il codice di produzione e il codice di pre-produzione in fase di test. Oltre a questo, ospitiamo la nostra copia e ogni sviluppatore accedendo tramite un client desktop remoto o eseguendo una copia del server a livello locale per semplificare lo sviluppo.
In questo ho cercato di iniettare alcuni VCS spostando l'onere delle modifiche al codice dall'interno della mia installazione locale a una directory di sviluppo dove gestisco il mio stack di transpilation npm: scrivo nella mia directory e poi eseguo uno script PowerShell che chiama npm run build
e quindi sposta tutti i file necessari nelle cartelle corrette all'interno del server.
Per spostare le modifiche alla produzione, ho creato un ramo vuoto che vive nel server e tiene traccia solo del codice transpiled. Quando una funzione o una correzione sono pronte, le impegno e le taggano, la spingo al mio repository e poi le modifiche a prod-test (e alla produzione successiva), senza portare con sé alcun avanzo dal nodo o dal mio sistema di sviluppo.
Questo ha funzionato fino a quando non mi è stato assegnato lo sviluppo di un nuovo modulo Java all'interno della complessa struttura interna stessa, che includerà necessariamente modifiche a un gran numero di file discreti su più sottodirectory, inclusi più jar. Ora non posso semplicemente scrivere il codice altrove e poi spostarlo quando è necessario, a meno che non sia disposto a scrivere alcune aggiunte estremamente fastidiose al mio script di PowerShell e rielaborare le dipendenze di Eclipse.
Ma se voglio tenere traccia dell'intera cartella del progetto, questo dovrebbe tracciare oltre 30k file nelle directory da 4.5k, seduti a circa 1 gig. Inoltre, perderei la facilità di tracciare il mio codice ES6 separatamente dal codice ES4 transpiled pronto per la produzione.
Domande:
- Quali sono le migliori pratiche per la gestione di basi di codice grandi come questo?
- Devo mordere il proiettile e includere l'intera struttura nel mio repository?
- Espandere la complessità dei miei script per spostare solo ciò che deve essere spostato quando necessario?
Se c'è dell'altro che devo aggiungere, faccelo sapere. Questo è il mio primo grande progetto nel software, e mi sento ansioso di farlo bene.