Система контроля версий
Система, которая делает людей достаточно смелыми, чтобы менять код, — ведь каждое прежнее состояние никуда не делось.
Система контроля версий хранит полную историю изменений: кто их внёс и зачем. Она решает сразу три задачи: можно вернуться назад, можно работать параллельно, не затирая друг друга, и можно ответить на вопрос, почему конкретная строка выглядит именно так, — зачастую это самое ценное из трёх.
Родословная идёт от систем на блокировках, где файл мог править только один человек за раз, через централизованные вроде CVS и Subversion, где истина хранится на сервере, к распределённым — Git и Mercurial, где каждый клон является полноценным репозиторием. Этот сдвиг сделал ветки дешёвыми, а они, в свою очередь, сформировали весь стиль работы: недолговечные ветки и ревью перед слиянием.