Контроль над джерелами: ролі та обов'язки - кращі практики


10

Я шукаю "Кращі практики" щодо ролей та обов'язків, зокрема, хто відповідає за злиття від галузей розвитку до магістральних (або основних). В основному я шукаю боєприпаси, щоб допомогти моїй справі.

Дозвольте описати, з чим я стикаюся. Я є головним розробником (власником) певної програми. Нещодавно наша компанія перейшла з VSS (де я була адміністратором бази даних VSS, в якій зберігався мій додаток), до TFS (де я маю лише дозволи на галузі розвитку, створені нашою командою "операції"). У попередніх робочих місцях я був адміністратором TFS, тому знаю, як обходився TFS та MSBuild.

У мене немає проблеми з використовуваною стратегією розгалуження та злиття (головна гілка, із необхідними створеними гілками помилок / проектів, об'єднана назад до основної, а потім просунута до гілки випуску). У мене є такі питання:

  1. Я не можу створити власні гілки. Я повинен створити завдання TFS, щоб член команди "операції" створив для мене гілку.

  2. Я не можу об'єднатися від Main до своєї галузі розвитку. Я повинен створити завдання TFS, щоб змусити члена команди "операції" здійснити злиття, а потім сподіваюся, що він не "наступає" на зміни будь-якої з моїх команд, оскільки "ops guy" може бути, а може і не бути розробником, і, звичайно, має мало що не знає код, який він зливає.

  3. Я не можу злитися від розробки до Main. Знову я повинен створити завдання TFS, щоб змусити "хлопця-оператора" виконати злиття, сподіваючись, що він це зробить правильно. Тоді мені доведеться створити ще одне завдання TFS, щоб об'єднатись назад до своєї гілки, щоб я міг вирішити будь-які проблеми, які виникли, зробивши об'єднання не розробника з Main.

  4. Я не можу створювати або редагувати сценарії MSBuild. Знову мені доведеться співпрацювати з командою "ops", яка є новою для MSBuild, тому можна виконувати лише найосновніші завдання зі зборки. (Забудьте про що-небудь складне або не забороняйте на замовлення завдання).

  5. Я не можу виконати сценарій MSBuild. Знову це може зробити лише команда "опс".

  6. На додаток до всього цього, як правило, це "офшорний" ресурс, який виконує запитувані завдання, тому навіть якщо я створюю завдання (гілка / об'єднання / збірка) рано вранці, воно, ймовірно, не буде завершено до того вечора.

Зараз я не маю жодних проблем із командою "операцій", що підтримує гілки випуску. Оскільки все, що вони роблять, це (в основному) взяти останню версію від Main та просувати її до гілки випуску; доки "Main" буде стабільним і готовим, гілка випуску буде хорошою.

На мою думку, технічні напрямки (такі як я) повинні відповідати за підтримку магістралі ("Головна") та будь-яке злиття в / з галузей розвитку. Команда команди також повинна мати можливість генерувати сценарії MS Build для складання та розгортання в тестовому середовищі інтеграції.

Чи може хтось направити мене на документ «Кращі практики», який допоможе мені довести свою справу? Усі мої пошуки виявили лише кращі практики щодо технік розгалуження та злиття, і жодна згадка про ВООЗ не повинна виконувати зазначені розгалуження / злиття.


WHO should be performing said branching/merging.є внутрішньо організаційним рішенням. Насправді не з чим ми могли б вам допомогти ...
yannis

2
Хочете сказати нам можливі причини такої візантійської процедури? Моя здогадка - "Відповідність рівня ШММ рівня N" або "Сарбанес Окслі".
Брюс Едігер

SOX, але лише частково. Коли ми вперше зайшли до TFS, розробники мали доступ до Main та Dev. Але тоді "деякі" розробники (ніхто в моїй команді) вирішили просто займатися розробкою на Майні, а не у відділенні Dev, тому зараз усі команди караються.
Майкл Чатфілд

Відповіді:


8

Моє загальне переживання найкращих практик полягає в тому, що будь-який член групи розробників повинен мати можливість виконувати будь-які дії на дереві, припускаючи, що ці дії не роблять таких дій, як початок виробничого розгортання. У тих випадках, коли певна гілка / тег / сховище виступає джерелом автоматизованих розгортань, вкладаючи якийсь розумний контроль змін або перешкоди для входу, має сенс, більше з точки зору збереження помилок - просто з точки зору помилок, ніж з деякого кута контролю відродження. Я б закликав розробників створювати гілки та вдосконалювати сценарії збирання. Я знайшов би способи отримати доступ розробників до виробництва у разі потреби. Частина пункту управління джерелами полягає в тому, що це ефективна магічна гумка помилок - найгірше, що вам потрібно зробити, це відкотити ревізор або два і відключити це.

На жаль, це не схоже на підхід, який вони тут взяли. Для того, щоб перемогти це, я думаю, вам потрібно прикрити кілька кутів:

а) Доведіть, що ці політики згубні для розвитку речей. Пропишіть весь час, який ви витрачаєте на очікування, щоб опрацювати щось. Це одне повинно продавати розумне управління, чому це погана політика.

b) Подружитися в Ops - можливо, в цій політиці є причина. Можливо, це міркування можна було б вирішити більш ефективно.

Сподіваюсь, це допомагає.


3
+1, я набрав щось подібне: задокументуйте втрачений час та зусилля: дозвольте особам, які приймають рішення, робити усвідомлений вибір: чи варто ризикувати того, чого вони намагаються уникнути, якщо поточна обмежувальна політика вартує витрат?
Джеймі Ф

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

Готча. Не впевнений, що там є щось конкретне, але біти управління джерелом у Прагматичному програмісті можуть містити в собі деякі дорогоцінні камені. З того, що це звучить, це було жорстокою реакцією на поганих розробників, а не продуманим рішенням чи політикою. Я б уклав угоду, коли Ops належить об'єднатися в Main. Я також наполягаю на тому, щоб оперативні органи відповідали за те, щоб злиття нічого не порушило, що, ймовірно, вийде з них. . .
Wyatt Barnett

По-друге, Джеймі, весь час, витрачений на злиття чи очікування злиття, слід записати так, щоб у вас були докази. Не існує «найкращої практики», яка б відповідала всім компаніям. Я працював у великій компанії, де це завдання виконувала спеціальна команда управління конфігурацією. У моїй теперішній компанії є спеціалізована команда з управління випусками, яка не робить фізичну роботу з об'єднання до основного, але вони є логічним власником і ревізують його. Але зазвичай, IMHO не є тим, що стосується вихідного коду.
softveda

2

Я бачив такі практики:

  1. Будь-хто може створити робочі гілки за змістом свого серця. Розробник повинен бути в змозі створити гілку функцій, коли вони виявлять, що є сенс зберігати поточну роботу. Оскільки вони хочуть / повинні створити резервну копію в кінці дня, хочуть поділитися цим вмістом з іншим членом команди, їх слід захищати від змін в основному чи будь-якому іншому.

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

  3. Для злиття з основним (інтеграція) є три варіанти:

    • Розробники роблять це самі. Вони просто обговорюють ризики з провідним розробником і тестують функції належним чином. Це означає, що хтось має дозволи; якщо хтось порушує правила, вони просто лаяться і неправильна зміна повертається.
    • Інший розробник робить це після перегляду змін. Це все ще вимагає, щоб усі мали дозволи на це; правила досі виконуються провідним розробником.
    • Там призначений інтегратор, який переглядає і об'єднується в основний. Але інтегратор є частиною команди і повинен розуміти код. У меншій команді це була б така сама людина, як архітектор, у більшій вони були б окремими, але їм потрібно було б тісно співпрацювати.
  4. Хто готує функцію, повинен адаптувати сценарій збірки. Але я не впевнений, як це працює з TFS; в системах, які я використовував сценарій збирання, завжди був просто розробленим файлом, тому розробники редагували його так само, як і будь-який інший, і він був інтегрований разом із усім іншим.

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

  6. Ні в якому разі не слід вимагати операторів поза командою. Оператор потрібен лише для налаштування дозволів, створення реплік тощо.


Я б був усім для "призначеного інтегратора", до тих пір, поки це насправді розробник у команді. Це маршрут, на який я сподіваюся все одно; це невелика команда (4 людини, включаючи мене). Сподіваюсь, я також можу отримати доступ до створення / виконання скриптів MS Build, для мене буде нерозумно створювати сценарії nAnt для розгортання розробки, а потім команда "ops" будувати по суті той же сценарій для MSBuild. Але це я зроблю, якщо буде потреба.
Майкл Чатфілд

2

Не забувайте про "кращі практики" (майте на собі) це проблема управління - принципово, ви не в змозі виконати належну роботу через обмеження, поставлені перед вами.

Насправді не важливо, що таке «найкраща практика» - це простий, демонстраційний випуск, який вплине на продуктивність роботи вас і вашої команди, і вам потрібно на цій основі приймати рішення щодо управління лінійкою.

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

І не будьте занадто конфронтаційними - стільки, скільки хочете знати, чому існують обмеження, яке виправдання ...


1
Так, дуже намагаюся не бути конфронтаційним ... походить від хлопця, який дружина купила йому футболку "Я погодився б з тобою, але тоді ми обидва помилилися б". :)
Майкл Чатфілд

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