Проблема
Я працюю над програмним проектом, який налічує близько 10 розробників, ми ділимося вихідним кодом через Mercurial. У нас є галузь розвитку та виробництва на випуск. Під час проекту ми неодноразово мали вихідний код з однієї гілки, тобто v1, потрапляючи в гілки патчів та обслуговування для більш ранніх версій програмного забезпечення, тобто v2.
Це призводить до того, що час, витрачений на захист неправильної комісії, або неправильний (можливо, не QAd) код, який досягає і розгортається в неправильній гілці, якщо ми не помічаємо, що код перейшов у неправильну гілку.
Наш дизайн / метод з’єднання та злиття
v1-test v1-patch1 v1-patch2
^---------^-----------^ v1-prod
/ / \ \
-----------------------/ \ \ v1-dev
\ \ \
--------------------------\ v2-dev
\ \ \
^-------^------------- v2-prod
v2-test v2-patch1
Отже, ми будемо працювати над галуззю розробки випусків, доки не буде визнано , що вона готова , відключимо її для єдиної гілки тестування / UAT / Production, де виконуються всі випуски та обслуговування. Теги використовуються для створення випусків цієї гілки. Поки v1 тестується, для v2 буде створена гілка, і розробники почнуть працювати над новими функціями.
Що, як правило, трапляється в тому, що розробник здійснює роботу, пов'язану з v2-dev гілкою, у v1-dev або v1-prod, або ще гірше, вони об'єднують v2-dev у v1-prod (або подібні подібні помилки).
Ми кажемо більшості розробників не отримувати доступу до гілок -prod , однак код все ще проникає. Група старших розробників «доглядає» за гілкою -prod.
Слід зазначити, що поки v2 тільки починає розробку, все ще може бути кілька досить здоровенних патчів, що надходять у v1 для виправлення неполадок. Тобто v1 може не просто отримати незвичайний невеликий виправлення.
Що ми намагалися поки що
- Маючи окрему гілку -прод, із воротарями. Гілка -prod повинна викликати попередження через своє ім’я, і більшості розробників не потрібно ніколи бути в цій гілці. Це насправді не зменшило проблему.
- Підвищили обізнаність про цю проблему серед розробників, щоб спробувати зробити їх більш пильними. Знову ж таки це було не дуже вдало.
Можливі причини, які я бачу в тому, що розробники переходили на неправильну галузь
- Занадто складна галузева конструкція
- Активно розвиваючись у кількох галузях паралельно. (Проект виявляє симптоми використання лавинної моделі .)
- Розробники не розуміють DVCS досить добре
Прочитані нами питання були дещо актуальними
Я прочитав це запитання про те, що не дотримуюся неправильної гілки, і вважаю, що відповіді щодо візуальних підказок можуть бути корисними. Однак я не зовсім впевнений, що проблеми, з якими ми стикаємось, не є симптомами більш фундаментальної проблеми.
За допомогою візуальних підказок ми можемо легко включити їх до командного рядка, проте приблизно половина команди використовує затемнення, яке я не знаю, як включити візуальні підказки.
Питання
Які методи у вигляді програмного забезпечення, управління проектами чи управління ми можемо використати, щоб зменшити (в ідеалі зупинити) вчинення неправильної гілки, зайнявши наш час або забруднивши розгорнутий код?
Будемо вдячні конкретні коментарі до причин, на які, на мою думку, можуть сприяти, як зазначено вище, але це не повинно обмежувати вашу відповідь.