Які хороші стратегії реєстрації джерела для великих завдань?


9

Загальне правило - часто залишати реєстрації невеликими та заїжджати. Але іноді завдання вимагає великих змін в основі. Тоді реєстрація перед складанням завдання буде порушувати проект, поки ви не зареєструєтесь у готовій роботі.

Отже, які стратегії використовують люди, щоб зменшити ризик втратити роботу або вирішити щось, що ви робите, - це неправильний підхід, а потім змінити свою думку після видалення коду та спробу іншого підходу?

Коли я зможу, я зафіксував коментовану наполовину виконану роботу, або якщо вона збирається, і нічого не використовує нові файли, я перевіряю їх. Чим більша зміна, тим більше шансів на те, що я буду розгалужувати проект, а потім об'єднати назад коли я знову все працюю. Ще одним варіантом, якщо дозволяє система управління джерелами, є набори полиць, які в основному є невеликими гілками. Тож коли закінчу за день або прийду до точки вирішення, я відкладу свої зміни, і тоді, якщо трапиться щось катастрофічне, або я хочу повернутися до цього моменту, я можу.


Які системи управління джерелами ви знайомі?

@Thorbjorn: Svn, Perforce та Team Foundation Server. У всіх вони є свої плюси і мінуси
Домінік МакДоннелл

Відповіді:


13

Я використовую git, тому моя відповідь - «гілка». Відділіться, і виконайте обід, коли ви закінчите різні шматочки.

Натисніть на свої зобов’язання вгору за течією, коли будете раді, щоб ваші колеги могли переглянути зміни, не порушуючи багажника.

Коли всі задоволені кодом, зливайся і все закінчиш!

(Те, що я схильний робити для відносно довго працюючих гілок, - це періодично зливати стовбур (майстер, в термінології git) у мою гілку, тому дві гілки не розходяться занадто радикально.)


1
Вам не потрібно кваліфікуватися з "я використовую git" - я б запропонував відповісти на повну зупинку. Головне, щоб переконатися, що гілка функції постійно оновлюється із магістраллю, це означає об'єднання змін у магістралі як часто та розумно.
Мерф

Я не використовував розгалуження з підривною роботою, але мені кажуть, що гілля в git надзвичайно простіше. Я відділяюсь, коли у мене є особливість, яка не є тривіальною. Мабуть, це не практично з підривом, звідси і моя кваліфікація. Я радий почути, що мені насправді не потрібно було кваліфікуватися.
Френк Ширар

Таким чином, найкраща стратегія - це розгалуження, як тільки розмір завдання нетривіальний, і об'єднати стовбур до гілки стільки, скільки потрібно, щоб зберегти його, як звичайний замок стовбура, з користю управління джерелами проміжні стадії.
Домінік МакДоннелл

1
@Dominic В основному, так, але я вважаю, що "розмір нетривіальний" означає "що-небудь більше, ніж один рядок, який одноліткові можуть відразу побачити правильно чи неправильно".
Френк Шірар

3

Я думаю, що відповідь буде залежати від того, яку систему контролю версій ви використовуєте: централізовану (наприклад, підривна робота) або розповсюджену (наприклад, git). У мене немає жодного реального досвіду використання системи керування розподіленими джерелами, тому моя відповідь ґрунтується на тому, що ми робимо з підривом.

Якщо в процесі роботи відбудеться велика зміна, яка порушить нашу магістраль протягом певного періоду часу, або це дійсно порушить роботу іншої команди іншим чином, тоді ми створимо відділення. Я б сказав, що вам слід зробити якнайбільше, щоб уникнути цього - більшість змін можуть сидіти поруч із рештою коду з невеликими зусиллями. Наприклад, ви можете викликати шляхи коду до нового коду (з простими, якщо операторами, або ви можете вводити нові версії на основі налаштувань конфігурації, якщо ви використовуєте рамку DI). Потім, коли ви закінчите, ви просто зміните конфігурацію на нову версію, протестуйте все, видаліть невикористаний код, протестуйте ще раз і, нарешті, видаліть налаштування конфігурації. Ви не завжди можете це зробити, але через накладні витрати на підтримку філії, я думаю, ви завжди повинні перевірити, чи можливо це.

Якщо ви займаєтесь галуззю, я думаю, що помилка, яку я часто бачу, що люди роблять, - це не підтримувати свою гілку в сучасному стані. Вам слід постійно об'єднувати зміни зі стовбура у свою гілку, поки він існує, так що коли ви закінчите зворотне злиття всього назад, то досить тривіально.


2

У команді ми використовуємо підривну діяльність, і зазвичай ми робимо невеликі зміни безпосередньо в магістралі. Для великих завдань розробник, що працює над ним, зазвичай створює приватну гілку, яка об'єднується в магістраль, як тільки це буде зроблено. Потім приватна філія видаляється. Природно, хоча приватна філія існує, її власник повинен часто перевіряти її.

Ми намагаємось уникати злиття довготривалих гілок і злиття стовбурів у гілки, тому що це вимагає ретельного ведення бухгалтерського обліку. Натомість у нас є відносно недовговічні гілки, які лише один раз об'єднуються назад до стовбура та видаляються незабаром після цього.

І у нас є правило, що нічого не можна вчиняти чи об'єднувати до магістралі, поки щонайменше одна людина не перегляне зміни та не затвердить їх.


0

Як і звичайний коментар людей SQL-сервера "це залежить"

Якщо ви можете, я б запропонував вам створити відділення для коду, щоб ви могли продовжувати застосовувати невеликі чеки вашої роботи. Після завершення виконайте злиття назад до основного магістралі.

Так, є певний шанс повторного дублювання зусиль для цього. але, принаймні, ви збережете слід роботи, яку зможете відкатати, це виявляється тупиком.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.