Sembra che tu stia sbagliando, intendo il flusso di lavoro generale git. Ecco un paio di suggerimenti:
We keep repeating "you have to pull first" (this is git and github by
the way). Then you code a little, then get your tests to pass, then
commit, then pull and push again.
Perché tutti si stanno impegnando nello stesso ramo? Questo è così svn :). Lascia che si sviluppino nei propri rami, specifici per sviluppatore o funzione. Non preoccuparti di cosa si rompono lì, ma richiedi che tutto debba superare i test e diventare di prima qualità in generale una volta che si uniscono le loro modifiche al ramo di produzione.
In questo modo un programmatore può sviluppare codice isolato in pace (anche per un paio di giorni quando si lavora su una funzione) e preoccuparsi dell'integrazione e dei test più tardi, quando decide di apportare modifiche alla produzione.
Puoi fare un passo in più - non permettere agli sviluppatori di spingere direttamente alla produzione affatto e dare loro invece uno script che permetterà loro di spingere le modifiche solo se tutti i test passare . Semplice.
Right now we are tempted to rollback all of todays changes which
wouldn't be popular. I'm not a big fan of that harsh an approach to
management but perhaps a 'final' warning that we will do that next
time is now required.
Di nuovo, a cosa servono i rami? In questo caso puoi:
-
crea un ramo "bugfix" dal ramo "produzione"
-
cancella il codice rotto dal ramo "produzione"
-
corregge il codice rotto nel ramo "bugfix"
-
unisci "bugfix" di nuovo in "produzione"
Cosa c'è di così grave?
In generale, cerca di migliorare il tuo flusso di lavoro di controllo della versione (forse assumere un consulente git per aiutarti?), che dovrebbe impedire ai programmatori di inserire codice spezzato in produzione.
Ovviamente, il cattivo flusso di lavoro non è una scusa per commettere codice rotto, ma prendilo dal punto di vista dello sviluppatore - è molto facile interrompere il codice quando più persone lavorano sulla stessa app contemporaneamente e tutti si stanno impegnando nello stesso ramo . Soprattutto se fanno un enorme commit e i test sono fragili, ma non so se questo è il tuo caso.