Molti sistemi di controllo del codice sorgente di seconda generazione funzionano utilizzando un "checkout" connesso che informa il server che si intende modificare un file. Gli esempi includono TFS, SourceGear Vault e molti altri. In questo modo, tecnicamente può soddisfare i tuoi requisiti. Come ha rilevato Adam Butler, tuttavia, questi tipi di strumenti hanno i loro problemi (senza entrare in un lungo dibattito - supporto limitato per il lavoro offline e in generale un flusso di lavoro di sviluppo controproducente).
Suggerirei sicuramente una sorta di approccio gerarchico all'assegnazione del lavoro di refactoring. Gli sviluppatori potrebbero essere raggruppati logicamente in sottogruppi, ciascuno responsabile di aree specifiche del codice. A seconda di come ti piace strutturare i team, ognuno di essi potrebbe avere un ruolo di "lead" che è responsabile della progettazione di alto livello dell'area del team. Questa struttura dovrebbe essere ben nota agli sviluppatori e dovrebbe semplificare la comunicazione per il refactoring. Sono sicuro che questo approccio sembra troppo formale e arretrato per alcuni, ma penso che sia molto preferibile avere più di 20 sviluppatori che usano un approccio "gratuito per tutti" per il refactoring di un sistema di grandi dimensioni. Alcuni refactoring si svolgeranno ad alto livello (ad esempio, come il modulo X comunichi con il modulo Y), nel qual caso avrai bisogno di persone che possano effettuare chiamate al livello appropriato. Non tutti gli sviluppatori del team dovrebbero prendere decisioni architettoniche, quindi una gerarchia è quasi sempre imposta, anche se si sceglie di ignorarla.
Quindi, fondamentalmente, ci sono strumenti per soddisfare i requisiti di base che hai richiesto, ma nessuno strumento sostituirà le comunicazioni appropriate e un numero limitato di persone che guidano l'architettura generale del tuo progetto.