Використання SVN погано - це Mercurial відповідь?


13

На роботі ми використовуємо SVN, але тільки в імені. Ми не відділяємось та не об’єднуємось. Ми зберігаємо дві копії сховища, одна служить гілкою "тегів", яка копіюється під час розгортання та зберігається для виправлень помилок та негайних "функцій типу" це має перейти в реальному часі ". Ми маємо пам’ятати, щоб скопіювати зміни, внесені в одній копії, до іншої копії («магістраль»). У нас є десяток проектів всередині однієї папки в сховищі, а не розділяти їх. Коротше кажучи, про єдине, для чого ми використовуємо SVN - це можливість здійснювати. Все інше робиться вручну.

Я оцінював Меркуріал; Раніше я використовував Git (я єдиний в команді, який використовував DVCS), і я швидко збираю Mercurial. Я обговорюю питання про те, щоб представити Mercurial іншій команді як "кращий спосіб" робити справи, тому що розгалуження - це швидко, злиття набагато простіше, і ми можемо зафіксувати речі локально за змістом серця і лише підштовхнути їх до центральної гілка, коли вони будуть готові. Ми отримаємо всі переваги SVN (і ми так і не отримаємо багато переваг зараз, оскільки ніхто не розуміє SVN), а також для нових функцій нам не доведеться плавати тонни неперевершених файлів, тому якщо нам доведеться відкатати. ми накручені. Робочий процес здається дещо простішим - нам просто потрібно пам’ятати, що «Виконати» є локальним, а «Нажати» - це так, як SVN,

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


13
HgInit - Починається з підривної освіти, що, на мою думку, вам стане корисним.
янніс

20
Ви не боїтеся, що вони також погано вживають Hg?
Одід

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

2
@WayneM Вибір використання SVN через DVCS не обов'язково є неправильним. Деякі люди (включаючи мене) не мають жодних проблем зі злиттям у SVN і вважають, що додаткова складність DVCS перевершує сприйняті переваги, особливо якщо ви менша локалізована команда. Я, мабуть, не сприйматимуть DVCS дуже серйозно, поки я не опинусь у великій команді розробників, де злиття є величезною больовою точкою.
maple_shaft

4
@maple_shaft I will probably not take DVCS very seriously until I end up on a large development teamАбо поки ви не опинитесь в команді, що розподіляється. Ми невелика команда (5 людей), яка працює з 3-х локацій (а іноді і 5, коли нам не здається вставати з ліжка), і перехід від svn до hg був бажаним ...
yannis

Відповіді:


15

Так.

Якщо ви заміните "SVN" на "Perforce" у вашій ОП, ви майже отримали ситуацію, в якій я опинився, коли я розпочав свою поточну роботу, навіть до копіювання вручну. Два роки ми на Mercurial, і всі згодні, що це було великою зміною.

У нас є можливість розгалуження та об'єднання за кожним випадком підтримки , що неймовірно корисно для QA, а також можливість створювати будь-яку кількість викидних гілок та сховищ, коли нам здається, що ми можемо потім створити та перевірити на нашому сервері CI, а потім розгорнути до хмарного тестового середовища та перевірити функціональність. Це принесло величезну користь з точки зору душевного спокою, коли ми робимо реалізацію в реальному часі, ми майже на 100% впевнені, що вона спрацює (без проблем щодо оточення / БД, які, очевидно, виходять із сфери використання VCS).

В основному, те, що ми отримали від переходу на меркуріал, - це дихальний простір. Нам більше не доведеться турбуватися про вартість відділення, або про жахливі сеанси злиття, які неминуче використовувались для наслідування, все набагато простіше. Ми також дуже активно використовуємо FogBugz, тому прив'язка до Kiln (їх розміщений mercurial) дуже корисна.

Коментар щодо сайту hginit також є чітким , як контур для робочого процесу контролю версій, який насправді працює (припускаючи, що ви налаштуєте його під конкретний робочий процес QA вашої компанії).

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

Я не згоден з коментарями щодо розміру команди та розподілу команди, що стосується того, чи потрібно використовувати DCVS. Дійсно, мова йде про розподіл CODE. Якщо у вас паралельно відбувається декілька циклів розвитку, або випадки підтримки в застарілій системі, або купа функцій, або навіть нові системи (що за звуком цього ви робите), ви отримаєте користь від використання DVCS.


3
-1, якщо у розробників вже є такі проблеми з Subversion, навряд чи вони "отримають" більш складну систему. Правильна відповідь - це, як говорять у коментарях до питання, перевиховання того, як працює Subversion (і VCS взагалі) ...
Izkata

1
@EdWoodcock, я думаю, що те, що ви спостерігали, може бути насправді пов’язане з тим, що ваша команда повинна почати з "чистого аркуша". Всебічна зміна ДКС на меркуріальну означала, що всі повинні почати свіжіше і більше не можуть залежати від шкідливих звичок, якими вони користувалися в SVN. Багато разів легше подолати шкідливі звички, «починаючи з початку», в іншому контексті (в даному випадку меркуріальному).
Анджело

2
@EdWoodcock: Perforce може мати найгірше розгалуження будь-якого VCS, який ще використовується. Розгалуження в SVN набагато простіше.
кевін клайн

1
Яку б систему управління версіями не використовували, я вважаю, що важливо "встановити правила" та витратити час, щоб розібратися зі всіма сценаріями використання зі своєю командою. Люди не народжуються, знаючи, як робити гілки, теги та реєстрації, різні команди роблять це по-різному, і системи VCS не застосовують один робочий процес над іншим. Якщо члени команди не всі на одній сторінці з точки зору очікувань та використання, контроль версій стає кошмаром. Це проблеми, спільні для ВСІХ систем VCS.
Анджело

1
@ChrisS Ця притча більше стосується стандартних VCS, де є вартість розгалуження. Крім того, мова йде про розгалуження, вчинення, а потім знову злиття, що <i> ви робите кожен раз, коли ви клонуєте </i> в DVCS. Плюс, я лише окреслив, чому цей підхід насправді працює для нас; бути догматичним щодо методології досить нерозумно.
Ед Джеймс

21

Інший інструмент, ймовірно, не вирішить вашу проблему, я б сказав, що ви повинні прочитати цю статтю, і я вважаю це найбільш корисним:

http://thedailywtf.com/Articles/Source-Control-Done-Right.aspx

Я вважаю, що головний пункт статті підсумований тут, але будь ласка, прочитайте його:

Зрештою: не дуже про інструменти

За весь час, який я проводив, працюючи та інтегруючи різні системи управління джерелами, я прийшов до одного висновку: це не інструмент, а те, як ви ним користуєтеся. Це страшенно зламане твердження, але це здається особливо вірним. При правильному управлінні змінами вихідного коду - маркування для збірок, розгалуження за винятком тощо - навіть найпізніша система управління джерелом (* кашель * SourceSafe * кашель *) набагато перевершить налаштування Меркуріалу з купою випадкових зобов'язань і штовхає.


6
+1, це дійсно не про інструменти. SVN прекрасно здатний, як і сила.
Анджело

1
Це все про людей, а не про інструменти. Я бачив чудово керовані проекти, які все ще використовують систему Concurrent Versions для контролю версій, а також жахливі проекти, що працюють під керуванням GIT або Mercurial ..
Олександр Галкін

Справа не в тому, що стосується інструментів, якщо ви не отримаєте чудових компліментів для постачальника управління джерелами, наприклад, github, bitbucket
Chris S

3
Хоча я погоджуюся, що саме так ви використовуєте свої інструменти, які розраховуються, але так само різні інструменти ведуть вас у різних напрямках. Такі інструменти, як Mercurial, ведуть вас по простоті та гнучкості. Git веде вас по шляху складності, але надзвичайної гнучкості, Subversion робить деякі речі простішими, ніж інші, тому відводить вас від важких і химерних речей, тоді як Visual Sourcesafe веде вас по шляху крайньої негнучкості та розчарування головою. * 8 ')
Марк Бут

10

Ні. Технологія рідко вирішує подібну проблему.

Меркуріал складніший за Subversion (так, розгалуження та злиття - це краще, а можливо, і простіше, але модель Subversion значно простіша, ніж Mercurial). Якщо ви використовуєте Subversion таким чином, що може спричинити мозковий потік, ви можете використати Mercurial:

  • а) Адекватно чи краще
  • b) Недостатньо, але краще, ніж ваше поточне використання Subversion
  • в) Так само неадекватно, як зараз
  • г) гірше, ніж зараз

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


5

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


3

Ні. Інструменти не замінюють методологію.

Якщо ви не використовуєте Subversion як SCM , ви також не можете використовувати Mercurial (і це станеться, швидше за все)


2

SVN може робити все, що вам потрібно, і немає необхідності міняти коней середнім потоком для сумнівної виплати.

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

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

  1. Приведіть «тренера», щоб забезпечити серію практикумів для команди. Це, мабуть, має бути зовнішньою людиною (за іронією долі, багатьом командам часто легше довіряти стороннім, ніж довіряти комусь із команди). Це повинен бути хтось, хто знає її речі зсередини, і який може ефективно навчити людей цим навичкам на всіх рівнях розуміння та розробити прагматичний план для впровадження нового VCS (*) на робочий процес команди.

  2. Почніть проект "скункс-роботи", щоб тестувати драйв та перевірити новий VCS на невеликому бічному проекті. Виберіть пару розробників "альфа", які бажають спробувати нові речі і не проти зібрати купу невдалих експериментів. Коли роботи з скунсом здатні продемонструвати БЕЗКОШТОВНІ поліпшення в робочому процесі, тоді ви можете спробувати запустити його до решти команди, і у вас є пара євангелістів, які допоможуть вам це зробити.

(*) "новий VCS" Я не обов'язково маю на увазі меркурій або git, це також може бути SVN (зроблено правильно).

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