Субверсія / контроль джерела лише для виробничого коду?


21

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

Це нормальна практика? Мені здається, ми втрачаємо багато переваг контролю джерел, включаючи:

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

EDIT: Я мушу наголосити, що історично в цій компанії не було справжньої командної роботи; всього два розробники, що працюють над окремими проектами. Також багато проектів невеликі, тому їх можна буде завершити за пару тижнів. І компанія займається бізнесом вже більше десяти років і налагоджується штраф без контролю джерел. Проекти, як правило, завершуються у визначені ними часові рамки.


2
Як він до речі мотивує цю ідею? Якщо він вам не пояснив жодних причин, ви запитали?
Анто

8
Чи "Джо" розуміє розгалуження? Деякі ніжні запитання, які можна дізнатись, можуть бути цікавими.
Джеймс

2
@Anto - я вважаю, що це найкраще підсумовано "це не виробництво і не повинно бути частиною сховища виробництва".
Містер Джефферсон,

1
@James - я не думаю, що він взагалі знає SVN дуже добре, так що ні, я не думаю, що він знає про розгалуження. Але з огляду на відповіді нижче, я думаю, що це рішення.
Містер Джефферсон,

4
Прочитайте це запитання і трохи голосом у моїй голові просто кричало "NOOOOOOOOOOOOOOooooooooooooooo".
Кевін Д

Відповіді:


1

Якщо проекти завершуються в їх очікувані строки, чи можна припустити, що клієнти є щасливими клієнтами? :)

Схоже, що компанія починає також брати на себе нові проекти, і переживає певні сильні болі або якісь "перехідні болі". Багато припущень тут відбувається ... Будь ласка, нехай мене!

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

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

Будьте з повагою, і, можливо, вас почують.

Сподіваємось, це в кінцевому підсумку призведе до більш ефективної та щасливої ​​команди. З мого досвіду, це важко отримати з розчарованим управлінням.


42

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


6
Будь ласка, підкресліть питання розгалуження та тегування. Це - я думаю - важлива особливість, яка змушує людей наполягати на виробництві лише у SVN.
S.Lott

3
чудовий момент навіть при ваших упередженості проти горілки.
Ковар

Достатньо? Я б сказав , що він є безпідставна. Ніякого питання про це.
Стівен Еверс

2
@Covar: Я не забруднюю свою горілку вермутом :)
Wyatt Barnett

22

"Старший" насправді дуже некваліфікований. Будь-який код, який можна скласти (і пройти тести, якщо у вас є), повинен бути призначений для контролю над джерелами. Контроль над джерелами є центральним активом для спільного використання коду та поступового створення SW.

Хорошим моментом є відокремлення виробничого коду (остання стабільна версія), але для таких систем управління джерелами випадків є такі функції, як теги / мітки та гілки.

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


12
Але він не вміє працювати членом команди.
Ладислав Мрнка

2
@Tom Hamming: Різання коду не розробляє програмне забезпечення. Я впевнений, що він добре програмує, але в наші дні контроль над версіями вже не "інструмент", ніж IDE - це інструмент. Звичайно, технічно можна обійтися і без цього, але ніхто з їх розумним розумом не робить.
Стівен Еверс

2
@SnOrfus - Хоча я до певної міри погоджуюся з корисністю SCM, моя мета цього питання полягає не в тому, щоб бити Джо та / або його навички як розробника. Знову ж таки, у нього виходить чудовий продукт, він обізнаний, і йому непогано обійшлося без SCM за останні 10 років. Моя мета цього питання полягала в тому, щоб визначити, чи є його перспектива широко поширеною, з якою я просто не стикався; Зрештою, я просто поза школою і порівняно недосвідчений у цій галузі. У будь-якому випадку, я вважаю, що він чесно хоче забезпечити якість та надійність робочого процесу.
Містер Джефферсон,

3
@Tom: Я зараз можу вам сказати, що незалежно від того, що ви думаєте про якість його роботи, він не є кваліфікованим розробником, якщо не знає, як правильно використовувати керування джерелами. Іншого варіанту, крім того, можливо, він працював один у підвалі. Навіть у власних проектах, де я єдиний розробник, я використовую контроль над джерелами в повній мірі.
Йорданія

5
@SnOrfus: Я можу працювати дуже щасливо без IDE. Я не буду працювати без контролю версій. Якщо команда не використовує його, я запускаю його самостійно.
кевін клайн

12

Відкладаючи питання про те, чи правильно Джо чи не так (він, до речі, помиляється), мені здається, що компромісу можна було б досягти, якщо ви використовували розподілену систему управління версіями на зразок Git чи Mercurial .

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


1
Я подумав над цим і провів трохи розслідування (і почув хороші речі), але моє вагання полягає в тому, що ми вже придбали і встановили VisualSVN Server, і ніхто з нас не має досвіду роботи з Git або Mercurial . Це буде ще більше важкої битви, якщо я спробую переконати всіх, хто нам потрібно придбати більше програмного забезпечення та / або відкинути існуючу інвестицію. Але хороший момент.
Містер Джефферсон,

3
@Tom: Якщо це має бути Subversion на зворотному кінці, ви можете використовувати рівень інтероперабельності Git або Mercurial Subversion для матеріалів, які не готові до виробництва, і підштовхнути роботу до підривної роботи, коли вона буде готова.
Кен Блум

2
@Tom Hamming: Я перейшов з SVN на GIT майже рік тому. Після деякої першої лайливості я почав її любити (хоча при Cygwin це не так добре, як у Linux). Я ніколи не витрачав на це жодних грошей, мене цілком влаштовує командний рядок та два безкоштовні інструменти, що входять у нього. Я навіть не працюю над тим, щоб інтегрувати його у свій IDE (затемнення). YMMV, але якби я був на вашому місці, я використовував би своє приватне git repo та git svnдля взаємодії. Вам не потрібно нічого купувати, і вам не потрібно нікого переконувати; їм навіть не потрібно знати.
maaartinus

1
@Tom Hamming: Як індивідуальний розробник, ви можете регулярно git pushвносити зміни до іншої машини (як резервна копія). Це не повинно бути "головним" сховищем.
Грег Х'югілл

1
@Tom Hamming: Дотримуватися SVN, тому що ви придбали та встановили SVN-сервер - це дійсно помилка витрат. Git та Mercurial обидва безкоштовно, а вартість VisualSVN вже сплачена, тому подивіться на свої варіанти, оскільки вперед кожен має однакову (нульову) початкову вартість установки.
Черцеріла

7

Немає сенсу з тих перелічених вами причин. Це як використання контролю версій без переваг використання контролю версій.


5

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

Ніколи не замислювався над тим, "чому був доданий цей рядок коду"? Знайдіть комітет, який його запровадив, і подивіться його коментар. Якщо ви берете на себе зобов'язання лише у виробництві, коментарі не будуть достатньо конкретними, щоб бути корисними для вас.

Я б також запропонував використовувати більш потужний інструмент, ніж SVN. Ви можете побачити хороший вступ про можливості на http://hginit.com/ Джоел Споельський.

Він використовує меркурій, і в наші дні є кілька претендентів. Git вважається дуже потужним, а https://github.com/ має кілька дуже, дуже корисних інструментів та забезпечує безкоштовні стартові акаунти, щоб ви могли спробувати це реально.


3

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


2

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


SVN теж може це зробити.
Філ Лелло

2

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

Мені здається, ваша організація має інвестиції в SVN, і це було б обмеженням кар'єри, щоб ви кидали виклик Джо та визнали недійсними інвестиції в долар на SVN-сервері. Налаштуйте репортаж GIT і використовуйте інтерфейс git svn, щоб працювати так, як ви хочете (це все вільне програмне забезпечення, і на його налаштування знадобиться година до дня, все на вашій робочій станції). Соціалізуйте свій робочий процес з Джо - він може зберегти свою систему незабруднених переконань у SVN repo та зберегти свою довіру до дорогого білого слона в кутку (та его).

За короткий час я очікую, що Джо погляне на те, як ти працюєш, і почне робити те саме. Через рік-два сервер SVN перетвориться на Git repo.


інвестиції в долар на сервері svn будуть не більше ніж доларові інвестиції в сервер
gpo

2

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


2

Я збираюся відлунювати тут @ Carson63000 і кажу, що я бачив таке ставлення раніше, і це значною мірою спричинене жахливими можливостями розгалуження / об'єднання VCS. Наявність гілки, яка збирає та проходить тести, з тегами для кожного випуску - чудовий підхід, але не слід дотримуватися того, що жоден інший код не вчиняється. DVCS в цілому, і git зокрема, роблять розгалуження простою та звичайною операцією, і це зменшує багато труднощів із цим робочим процесом.


1

Причини підтримки тегів систем управління версіями полягають у тому, що ви можете тегувати сертифікований код і все ще займатися щоденною роботою. Кожен раз, коли у вас є код якості продукції, ви зобов’язуєтеся натерти тег, і ви все зробите. Ви знаєте точний момент, у який ви повинні повернутися, щоб отримати те, що має клієнт. І ви завжди можете перевірити та порівняти різні версії коду. Таким чином, ви можете бути задоволені тим, що є у базі даних джерела контролю. Це працює для компанії, в якій я працюю, яка має 100 розробників, які працюють над одним проектом. Це буде нескінченно працювати і для вас.


0

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

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


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

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