Recentemente ci siamo imbattuti in una sfortunata situazione lavorativa e mi sono chiesto cosa possiamo fare per evitare problemi simili in futuro.
Realizziamo sistemi embedded. Il codice FPGA si trova in un repository SVN mentre il firmware & il codice software è in un repository diverso. Costruire il firmware richiede le immagini FPGA costruite, quindi questi file binari vengono anche memorizzati nel repository firmware / software. La generazione di FPGA può richiedere 2-3 ore e può casualmente fallire. A mio avviso, questi ultimi fallimenti si verificano a causa dei complessi problemi di temporizzazione nella logica FPGA. Errori di sviluppo come una sintassi errata causeranno il fallimento della generazione in pochi minuti.
Poiché le build impiegano così tanto tempo, gli sviluppatori FPGA generalmente apportano le loro modifiche, costruiscono, danno la nuova immagine agli sviluppatori del firmware e quindi si impegnano a SVN. Qualche settimana fa, questo ha causato un sacco di problemi mentre ci stavamo preparando per un rilascio. Uno sviluppatore FPGA ha apportato una piccola modifica e ha avviato una build. Un altro sviluppatore FPGA ha fatto un commit (dopo che gli era stato detto che le sue modifiche non dovevano essere incluse in questa release e che avrebbe dovuto aspettare per impegnarsi). Dopo questo commit, la build iniziale ha avuto esito negativo. Il primo sviluppatore FPGA dovette quindi ripristinare le modifiche dell'altro, impegnare le sue modifiche e impiegare una notevole quantità di tempo a ispezionare il codice in SVN per assicurarsi che riflettesse il codice utilizzato per costruire l'immagine richiesta per la build del firmware prima di essere taggati per il rilascio.
Se usassimo git o un altro DVCS, questo non sarebbe un problema, dal momento che ogni sviluppatore FPGA poteva eseguire il commit localmente prima di costruire e inviare a un server dopo una build di successo. Il passaggio al controllo della versione non è al momento un'opzione. Stiamo per lanciare più hardware sul problema dei build FPGA lunghi e stiamo valutando se il tempo di costruzione può essere migliorato modificando le impostazioni negli strumenti di creazione.
C'è qualcos'altro che possiamo fare per migliorare i nostri processi in modo da non ripetere questa situazione o scoprire altri problemi con versioning e conflitti?