Багато систем управління джерелами 2-го покоління працюють за допомогою підключеної "каси", яка повідомляє сервер, що ви маєте намір змінити файл. Приклади включають TFS, SourceGear Vault та багато інших. Таким чином ви можете технічно виконати свою вимогу. Як зазначав Адам Батлер, ці інструменти мають власні проблеми (не вступаючи в тривалі дискусії - обмежена підтримка роботи в режимі офлайн і взагалі контрпродуктивний робочий процес розвитку).
Я б напевно запропонував би якийсь ієрархічний підхід до розподілу роботи рефакторингу. Розробники можуть бути логічно згруповані в підгрупи, кожна з яких відповідає за конкретні області коду. Залежно від того, як вам подобається структурувати команди, кожна з них може мати роль "провідної", яка відповідає за високий рівень дизайну району команди. Ця структура повинна бути добре відома розробникам, і вона повинна спростити спілкування для рефакторингу. Я впевнений, що такий підхід для деяких видається занадто формальним і зворотним, але я вважаю, що переважніше, ніж 20+ розробників використовувати підхід «безкоштовно для всіх» для рефакторингу великої системи. Деякі реконструкції відбуватимуться на високому рівні (наприклад, як модуль X спілкуватиметься з модулем Y), в такому випадку вам знадобляться люди, які можуть телефонувати на відповідному рівні. Не кожен розробник в команді повинен приймати архітектурні рішення, тому ієрархія майже не нав'язується в будь-якому випадку, навіть якщо хтось вирішить не знати про це.
Таким чином, в основному є інструменти, які відповідають основним вимогам, які ви висуваєте, але жоден інструмент не замінить належну комунікацію та малу кількість людей, які керують загальною архітектурою вашого проекту.