L'ottimizzazione dei test è probabilmente la prima cosa da considerare. Detto questo, probabilmente non sarà abbastanza. Poche strategie puoi esaminare, ognuna con il proprio insieme di inconvenienti, quindi sarà inevitabilmente un compromesso.
Isolare la versione dei progetti
Separare entrambi i progetti nella propria pipeline di repo / build e integrarli come dipendenze esterne. In questo modo i loro cicli di commit non interferiranno l'uno con l'altro. Tratta il progetto A come prodotto / libreria e rilascialo con il proprio schema di controllo delle versioni. Il Progetto B è quindi libero di integrare la versione scelta e testarla.
L'inconveniente di questo approccio è che il Progetto B è sempre in ritardo rispetto allo sviluppo del progetto A. Se un altro progetto dipende da A e B, sarà in ritardo rispetto a B e otterrà le sue dipendenze da B. Ciò significa che qualsiasi modifica apportata ad A dovrà ridursi ad un ritmo molto più lento rispetto al prodotto finale perché dovrà creare una versione, attendi che B rilasci questa dipendenza in una dipendenza e attendi che B completi i test e ne facciane uno di sua proprietà.
Nota che questo non significa uno sviluppo più lento, solo che le modifiche apportate da A richiedono più tempo per raggiungere il prodotto finale. Detto questo, lo renderà molto più prevedibile.
Blocca il ramo principale durante i test di B fino a quando non è integrato
Lo sviluppo di A continuerà nel suo stesso ramo ma non sarà in grado di fondersi nel main fino a quando il test di B non sarà terminato e si è fuso nel main.
Hai solo questi due progetti, quindi non è così male. Se dovessi avere altri che hanno una frequenza di commit simile a A, dovrebbero essere tutti sullo stesso ramo (ad esempio un ramo principale in cui B ottiene le cose e si impegna a farlo, un ramo dev dove tutto il resto va e viene e va a e dal ramo principale.
Ancora una volta, stai rallentando al ritmo del più lento. La chiave qui è di non interrompere tutto del tutto, così il dev di A può continuare, ma si sincronizzerà solo in momenti specifici con il main.