Я не согласен с этим правилом и согласен с тем, что сказал Мейсон Уилер . Я хотел бы добавить несколько идей.
Я пытаюсь выполнить фиксацию каждый раз, когда у меня есть значимое изменение для фиксации: это может происходить несколько раз в день, если я исправляю несколько небольших ошибок, или раз в неделю, если я работаю над большим программным обеспечением, которое не может использоваться остальными код любым значимым способом, пока он не достигнет согласованного состояния.
Кроме того, я интерпретирую фиксацию как публикацию значимой ревизии, которая вносит новые функциональные возможности в базу кода. Я думаю, что нужно попытаться очистить код перед фиксацией, чтобы другие разработчики могли понять значение и цель изменений, когда они смотрят историю изменений. Чем меньше изменений видят другие разработчики в истории, тем лучше: когда я смотрю историю изменений, я хочу видеть приращения, которые добавляют значимую функциональность; Я не заинтересован в каждой маленькой идее, которую каждый разработчик имел и хотел попробовать, прежде чем они достигли решения.
Кроме того, я не думаю, что было бы хорошей идеей использовать сервер SVN (или любую другую систему управления версиями) в качестве средства резервного копирования, для которого передается текущий снимок кода (при условии, что он компилируется): вы можете использовать USB-накопитель или внешний USB-накопитель или сетевой диск для зеркалирования текущего кода, чтобы он не потерялся в случае поломки компьютера. Контроль версий и резервное копирование данных - это две разные вещи. Публикация ревизии - это не то же самое, что сохранение снимка
кода.
Наконец, я думаю, что не должно быть проблемой фиксировать время от времени (т. Е. Только тогда, когда кто-то действительно удовлетворен текущим состоянием кода), и избегание конфликтов слияния не является хорошим оправданием для частой фиксации (слишком). Многие конфликты слияний происходят, когда разные люди работают с одними и теми же файлами одновременно, что является плохой практикой (см., Например, эту статью , пункт 7). Конфликты слияний должны быть уменьшены путем разделения проекта на модули с понятными интерфейсами и как можно меньшим количеством зависимостей, а также путем координации работы разработчиков так, чтобы код, над которым они работают, перекрывался как можно меньше.
Просто мои 2 цента.
РЕДАКТИРОВАТЬ
Другая причина против преждевременных коммитов, которая пришла мне в голову, заключается в том, что (очень) ошибочную версию нельзя проверить. Если вы делаете коммит на транке, а ваша группа тестирования проводит тестирование каждый день, у них может не быть тестируемой версии в течение нескольких часов (или в течение дня). Даже если вы не попытаетесь исправить ошибку и просто отменить изменения, восстановление может занять несколько часов. С пятью тестерами, работающими в вашей команде, вы потратили 5 х 2 = 10 часов времени команды из-за неактивности. Это случилось со мной однажды, поэтому я действительно стараюсь избегать преждевременных коммитов во имя коммитов как можно скорее .