Який DVCS (git або hg) простіший для програмування студентів? [зачинено]


25

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

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

Мої думки: я чув, що меркуріал + TortoiseHg має кращу інтеграцію під вікнами, але мені цікаво, чи може поняття анонімних голів заплутати їх, навіть якщо я їх поясню. З іншого боку, я вважаю, що гіти Git легше для початківців, щоб зрозуміти (чіткий розділ роботи для кожного програміста), але він не працює так добре під Windows.


2
git має велику потужність, включену за замовчуванням, але кожен, з ким я говорив, щоб сказати, що рутичний, простіший у навчанні, і я схильний погоджуватися, виходячи зі свого досвіду, використовуючи обидва. І так, рудологічні інструменти простіше встановити в Windows проти їхніх git-еквівалентів. З цього приводу, сподівайтеся, що ви будете орієнтувати людей і вказувати їх на уроки протягом першого тижня (або більше ...).
— wkl

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

2
Знову час для посилання на цю публікацію в блозі? Git - це Harrier Jump Jet .
— sbi

1
Я ніколи не розумів, чому має значення все «надто важко вчитися». Гаразд, знадобиться 20 хвилин, щоб навчитися виконувати свої зобов’язання та зв'язуватись, і на відміну від 10 ... Більше?
— альтернатива

1
Дивіться (один із них), як вони проходять через hginit.com і вживають дій, виходячи з їхньої реакції.
— chelmertz

Відповіді:


49

Меркуріал, без сумніву.

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

Окуляри в руці:

  1. Mercurial був розроблений з урахуванням Windows ; Гіт був перенесений. Незалежно від того, що хто-небудь намагався мені сказати, Git все ще є другорядним громадянином Windows. Речі дещо покращилися за останні кілька років, але ви все ще бачите багато проблем, чому щось працює / або не працює в Windows, як це було зроблено у * nix box. TortoiseHg працює дуже добре, а реалізаціями Visual Studio ще простіше користуватися, не порушуючи робочий процес.

  2. Якщо хтось починає дискусію "Git є потужнішим після тебе ...", то він майже все це говорить. Для 95% користувачів Mercurial здається більш інтуїтивно зрозумілим. Починаючи від нестачі індексу, до його більш інтуїтивно зрозумілих параметрів (опціональні комутатори є когерентними), до його локальних номерів для комітетів замість хешів SHA1 (хто коли-небудь вважав, що хеші SHA1 зручні для користувачів ??!)

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

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

Просто зазначити; Я щодня використовую Git і Mercurial. Не мати проблем із використанням одного з них. Але коли хтось запитує у мене рекомендації, я завжди рекомендую Mercurial. Ще пам’ятаю, коли це вперше потрапило мені в руки, це почувалося дуже інтуїтивно. На мій досвід, Mercurial просто виробляє менше WTF / хвилину, ніж Git.


4
+ для "VCS - це інструмент". Я не розглядав "дрібниці" як фактор, але це правда, що коли ви складаєте маленькі проблеми тут і там, вони можуть стати справжньою неприємністю.
— Грегорі Ерік Сандерсон

8
"Система контролю версій не повинна бути те, на що витрачаєш час." Це вантаж лайна. Ви завжди повинні витрачати час на вивчення своїх інструментів. Ви витрачаєте час на вивчення компілятора; але VCS так само важливий інструмент для програмування, як і ваш компілятор.
— JesperE

9
+1. Особливо аргумент "громадянина другого класу на windows" є абсолютно важливим у цій ситуації.
— tdammers

+1 для "WTF (s) / minute" ( osnews.com/story/19266/WTFs_m ). Ці діти повинні навчитися майстерності :-)
— Росс Паттерсон

1
@ Марк, це лише результат різниці в термінології ... Гілка в Git - це справді лише назва.
— альтернатива

10

Я виявив, що інтерфейс TortoiseHg - це чудовий досвід роботи в Windows. Експериментуючи з Git у минулому, я замість цього перейшов до командного рядка. Для середнього користувача хороший інтерфейс користувача набагато доступніший, ніж командний рядок. Отже, я б запропонував використовувати Mercurial. (Він також містить хороший графік гілки у вікні верстака. Він повинен очистити будь-які основні труднощі розгалуження.)

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


Будучи самим "консольним наркоманом", я ніколи раніше не використовував додатки "Черепаха" {Svn, Git, Hg}, тому я не знав, що TortoiseHg мав гілковий графік. Мені доведеться піти перевірити це
— Грегорі Ерік Сандерсон

4

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

Використовуйте fossil uiдля запуску тимчасового веб-сервера, де б ви не мали синхронізації з вами однокурсниками. Він також надає вам систему квитків, вікі та простий у користуванні веб-інтерфейс для зміни гілок та позначення комітетів.

Просто переконайтеся, що вони прочитали посібник із швидкого запуску та / або книгу . Нарешті, існує проект під назвою winFossil, щоб надати їм дружніший інтерфейс користувача, ніж веб-інтерфейс.


Я чула хороші речі про викопні копалини, але, на жаль, у мене не так багато часу, щоб познайомитися з новим DVCS. Я вважаю за краще використовувати щось, до чого я звик (якщо можливо), оскільки я вже знаю, як обходити найпоширеніші підводні камені. Але дякую за пропозицію, я обов'язково загляну в неї, як тільки матиму час.
— Грегорі Ерік Сандерсон

+1; викопний мало відомо , але це так легко працювати і так самодостатній (DVSC + вікі + квитки + веб - сервер) , що є реальною альтернативою всіх ПРОФ або навіть GitHub.
— Хав'єр

Але копалини не будуть виглядати так добре на резюме студентів, як git або hg, оскільки дуже мало поеплів важко цього.
— Ян

Mercurial також має вбудовану функціональність сервісу hg. У ньому пропускається помилка відслідковувати та wiki звичайно. Але тоді є також bitbucket.com
— Йоганнес Рудольф

3

Зважаючи на те, що команди новинки в контролі версій, і багато хто використовує Windows, я б рекомендував курсив над git.

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

На мій погляд, новому користувачеві легше навчитися. Це робить прості речі легкими, а небезпечні - важкими. Git робить небезпечні операції легкими (легко робити, не обов’язково легко робити правильно!).

Інтерфейс TortoiseHg для Winodows теж дуже приємний, і це ще один аргумент на користь використання mercurial.


2

Мої особисті переваги - це git.

Однак, оскільки деякі користувачі будуть використовувати Windows, і чудовий посібник з hginit існує, я б рекомендував навчати їх меркуріалу.


+1 для згадування hginit. Хоча Pro Git теж непоганий.
— Tamás Szelei

@ TamásSzelei, Спасибі, я раніше не бачив Pro Git.
— dan_waterworth

0

Як вважають багато людей, Mercurial через TortoiseHg має дуже низький бар'єр для входу.

Для тих, хто працює в Windows, це один інсталятор, а не два інсталятори (і ціла кількість речей, про які вони можуть не хотіти дізнатися), а інтерфейс користувача THg набагато більш відшліфований, ніж TortoiseGit + Msysgit .

Анонімні голови

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

Названі гілки

Одна річ , яку я дійсно НЕ вистачає в gitце hg«s названі гілки , так що це один варіант. gitгілки добре під час роботи над ними, але коли ви об'єднали цю роботу в іншу гілку, ви втратите велику частину контексту для цих змін.

У hgвас може створити гілку під назвою Jira#1234і завжди бути в змозі знайти все ревізії , пов'язані з цим виправленням . Після того git, як ваша філія об'єднана і посилання буде видалено, ви повинні зробити висновок, які редакції були частиною виправлення з топології дерева ревізії. Навіть якщо ви не видалите посилання, ви все одно знаєте лише останнє зобов’язання в цій гілці, а не хто з його предків був частиною цього ланцюжка комітетів.

Закладки

Крім того, якщо ви не хочете використовувати названі гілки, але хочете виконати gitстиль роботи з вашими анонімними гілками, тоді ви можете використовувати закладки .

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

Індекс / Кеш / Постановочна область

Особисто я вважаю, що студенти набагато частіше плутають gitіндекс / кеш / область постановки, ніж hgанонімні голови. Я дуже вважаю за краще, hgщоб ця розширена функціональність була необов’язковою в командному рядку, тому що gitви завжди хочете / потребуєте її використовувати.

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

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


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

@mathepic - Якщо ви не видалите назви гілок, а всі локальні гілки "виправити" висувати до віддаленого, тоді ви збираєтеся отримати величезну кількість запитів, так само як і у вас багато старих гілок у свн. У hgцих назвах філій завжди топологічний місцеві, так що ви бачите їх тільки , якщо ви подивитеся на них.
— Марк Бут

@mathepic - Щодо вашого -1, я думаю, ви неправильно трактуєте те, що я говорю. Я не уявляю, чому хтось навмисно зробив би поганий вчинок, але з git це легко зробити випадково. Якщо ви забудете, що файл cреалізує модифікований інтерфейс у файлі iі випадково виконує його iбез cтого, якщо хтось перетягне ваші зміни, перш ніж у вас з’явиться, зробити cїх компіляцію не вдасться. Якщо ви замість цього використовуєте робочий процес приховування / компіляція / фіксація, ця помилка просто не відбудеться, оскільки ваша власна збірка спочатку порушиться. Я намагався зробити свою відповідь яснішою.
— Марк Бут
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.