Мені подобається думати про кодування як скелелазіння в цьому контексті. Ви трохи піднімаєтеся, а потім ставите якір у скелі. Якщо ви коли-небудь впадете, останній якір, який ви посадили, - це точка, яка вас закріплює, тому ви ніколи не впадете більше ніж на кілька метрів. Те саме з контролем джерела; ви кодуєте трохи, і коли ви досягнете дещо стабільної позиції, ви здійснюєте перегляд. Якщо ви колись жахливо вийдете з ладу, ви завжди можете повернутися до останньої редакції, і ви знаєте, що вона стабільна.
Однак, якщо ви працюєте в команді, звичайно, щоб усе, що ви робите, було повно, має сенс, чітко будується та не порушує чужих речей. Якщо вам потрібно внести більші зміни, які можуть заважати роботі інших людей, зробіть відділення, щоб ви могли скористатися, не заважаючи нікому іншому.
Це також залежить від системи SCM, яку ви використовуєте. Розподілені системи, як правило, роблять злиття та роздвоєння безболісними та швидкими, і ви можете здійснювати місцеве; це означає, що ви повинні зробити багато і натиснути / злитися, коли ви зробили значну кількість роботи. З централізованими системами, такими як svn чи cv, доручення дорожче, і це впливає на всіх. Розгалуження частково вирішує це питання, але оскільки це відбувається на сервері, воно може бути болісно повільним, а злиття може бути громіздким. Тож із централізованими SCM часто існує більш ретельна культура, де ви виконуються лише після того, як ви виконали значну кількість роботи.
Щодо додатку: Будь ласка, не робіть цього. Рядки коду, кількість комітів, кількість знайдених / вирішених помилок тощо - це все дуже погані вимірювання якості або навіть кількості.