Я не знаю, чи це найкращий спосіб це зробити, але я поясню, як ми це робимо. Один або кілька розробників працюють над заданою гілкою і здійснюють свій код так часто, наскільки це можливо, щоб не витрачати час на злиття, що не сталося б інакше. Тільки тоді, коли код готовий, він вводиться в голову. Тепер це для комітетів та галузей / головних рішень.
Щодо огляду коду, ми використовуємо Sonar як наш інструмент безперервної інтеграції (і Мейвен / Дженкінс для взаємодії з Sonar) для надання нам свіжих результатів тестів, покриття коду та автоматичного перегляду коду щоранку (складання робиться щоночі), щоб ми розробники можуть витрачати максимум одну годину щоранку, щоб виправити свої проблеми / запахи коду. Кожен розробник бере на себе відповідальність (пишаючись теж!) За функцію, про яку пише. Тепер це автоматичний перегляд коду, який відмінно підходить для пошуку потенційних технічних / архітектурних проблем, але найважливіше - перевірити, чи ці нові реалізовані функції правильно роблять те, що хоче бізнес.
І для цього є дві речі: тести інтеграції та перевірка коду експертного коду. Інтеграційні тести допомагають бути впевненими, що новий код не порушує існуючий код. Що стосується огляду коду рівних, то ми робимо це в п’ятницю, це трохи полегшений час для цього :-) Кожен розробник призначений у галузь, над якою він не працює, потребує певного часу, щоб прочитати вимоги спершу нову функцію, а потім перевіряє, що зроблено. Найважливіша його робота - переконатися, що новий код працює так, як очікувалося, враховуючи вимоги, не порушує наші власні «правила» (використовуйте цей об’єкт для цього, а не той), його легко читати, і що він дозволяє легке розширення.
Таким чином, у нас є два огляди коду, один автоматичний і один "людський", і ми намагаємося уникати неперевіреного коду у відділенні HEAD. Зараз ... Це трапляється іноді з різних причин, ми далеко не ідеальні, але ми намагаємось підтримувати справедливий баланс між якістю та вартістю (час!)
@pjz також дає хорошу відповідь, і він згадує засоби перегляду коду. Я завжди використовую будь-який, тому нічого не можу про це сказати ... хоча в минулому мене спокушало працювати з Crucible, оскільки ми вже використовуємо JIRA .