Sono responsabile di una piattaforma software, scritta in C, che viene utilizzata per fornire una varietà di progetti ai clienti. Sto cercando di migliorare il flusso di lavoro per le persone che utilizzano questa piattaforma e verificare se il controllo del codice sorgente (Mercurial è il candidato più probabile) può aiutare.
La piattaforma viene utilizzata solo internamente per ~ 10 progetti / anno. Ha una vasta gamma di funzionalità e molti bit che non sono utilizzati nella maggior parte dei progetti. Di conseguenza, ci sono molti bug nascosti.
Mi chiedo se qualcuno ha un'esperienza simile, gestendo o utilizzando una piattaforma costantemente aggiornata in questo modo.
La situazione attuale
Lo sviluppo della piattaforma avviene con un repository mercuriale, ma le versioni della piattaforma non vengono eseguite tramite mercurial. Per una versione, i file della piattaforma vengono inseriti in un archivio tar su un server centrale. Per qualsiasi sistema connesso al core, l'avvio del processo di build copia il tarball aggiornato e lo decomprime nel codice sorgente dell'applicazione. I programmatori di applicazioni non possono modificare i file core (i vari comandi sono alias tramite script di shell e ottengono un errore se provano).
Quello che sto cercando
Sembra che dovrebbe essere possibile usare in qualche modo Mercurial per gestirlo. Potremmo facilmente mantenere un ramo di rilascio della piattaforma e fare in modo che i progetti clonino il ramo di rilascio come punti di partenza.
Ma non sono sicuro di dove andrà dopo. Su un progetto, la funzionalità è completamente al cliente. Se i file core sono sbloccati, le persone inizieranno immediatamente a modificarli, anche quando c'è un modo migliore (questo è quello che è successo prima del lockdown). Ciò significherebbe che la fusione in nuove modifiche fondamentali diventa difficile e sospetto che molti gruppi non si preoccuperanno.
La draconiana soluzione di bloccare i file core e forzare gli aggiornamenti automatici a tutti i progetti è stata davvero un successo: otteniamo più reclami e problemi dai progetti che sono stati disconnessi, rispetto a quelli che ricevono gli aggiornamenti forzati. Tuttavia, non appena i progetti vengono sottoposti a test, devono essere disconnessi. Dopodiché, a parte la fusione manuale, non ricevono più aggiornamenti della piattaforma.