Banyak sistem kontrol sumber generasi ke-2 bekerja menggunakan "checkout" yang terhubung yang memberi tahu server bahwa Anda bermaksud memodifikasi file. Contohnya termasuk TFS, SourceGear Vault, dan banyak lainnya. Dengan cara ini, Anda secara teknis dapat memenuhi kebutuhan Anda. Seperti yang Adam Butler tunjukkan, jenis alat ini datang dengan masalah mereka sendiri (tanpa masuk ke perdebatan panjang - dukungan terbatas untuk pekerjaan offline, dan umumnya alur kerja pembangunan yang kontraproduktif).
Saya pasti akan menyarankan semacam pendekatan hierarkis untuk mengalokasikan pekerjaan refactoring. Pengembang dapat secara logis dikelompokkan ke dalam sub-tim, masing-masing bertanggung jawab untuk area spesifik dari kode. Bergantung pada bagaimana Anda ingin menyusun tim, masing-masing dapat memiliki peran "pemimpin" yang bertanggung jawab atas desain tingkat tinggi area tim. Struktur ini harus diketahui oleh pengembang, dan harus menyederhanakan komunikasi untuk refactoring. Saya yakin bahwa pendekatan ini tampaknya terlalu formal dan mundur untuk beberapa, tetapi saya pikir itu sangat disukai untuk memiliki 20+ pengembang menggunakan pendekatan "gratis untuk semua" untuk refactoring sistem yang besar. Beberapa refactor akan dilakukan pada level tinggi (mis. Bagaimana modul X berkomunikasi dengan modul Y), dalam hal ini Anda akan membutuhkan orang yang dapat melakukan panggilan pada tingkat yang sesuai. Tidak semua pengembang dalam tim harus membuat keputusan arsitektur, jadi hierarki hampir dipaksakan dalam hal apa pun, bahkan jika seseorang memilih untuk tidak mengetahuinya.
Jadi pada dasarnya, ada alat untuk memenuhi persyaratan dasar yang Anda ajukan, tetapi tidak ada alat yang akan menggantikan komunikasi yang tepat dan memiliki sejumlah kecil orang yang menggerakkan arsitektur umum proyek Anda.