Переглядаючи порівняння, мені здається, що між їх наборами можливостей може бути відображення 1: 1. Тим не менш, часто цитується твердження, що "Меркуріалу простіше". Що лежить в основі цього твердження? (якщо хто-небудь)
Переглядаючи порівняння, мені здається, що між їх наборами можливостей може бути відображення 1: 1. Тим не менш, часто цитується твердження, що "Меркуріалу простіше". Що лежить в основі цього твердження? (якщо хто-небудь)
Відповіді:
Справа в суті: Скажімо, що ви хочете змінити ім’я користувача у всіх своїх попередніх комісіях. Мені потрібно було це зробити кілька разів з різних причин.
Версія Git
git filter-branch --commit-filter '
if [ "$GIT_COMMITTER_NAME" = "<Old Name>" ];
then
GIT_COMMITTER_NAME="<New Name>";
GIT_AUTHOR_NAME="<New Name>";
GIT_COMMITTER_EMAIL="<New Email>";
GIT_AUTHOR_EMAIL="<New Email>";
git commit-tree "$@";
else
git commit-tree "$@";
fi' HEAD
Версія Mercurial:
Файл avtor.convert.list:
<oldname>=<newname>
Командний рядок:
hg convert --authors authors.convert.list SOURCE DEST
Тепер, який із них виглядає простіше у використанні?
Примітка. Я провів 2 роки, працюючи виключно з Git, тому це не "ненавиджу, я не отримав це за 2 секунди".
Для мене це зручність використання. Git дуже орієнтований на Linux з linux-способом виконання справ. Це означає командний рядок, довідкові сторінки та придумати це для себе. У нього був дуже поганий графічний інтерфейс (зауважте: я базую це на msysGit приблизно рік тому), який, здавалося, просто заважав. Я ледве ним користувався
Командний рядок був гірший. Будучи орієнтованою на Linux програмою, у Windows це було дуже важко використовувати. Замість рідного порту вони просто завернули git за допомогою MinGW (Подумайте cygwin), що зробило роботу з ним набагато складніше. MinGW - це не командний рядок Windows, а просто діє. Божевільно, що це єдиний спосіб співпрацювати з Git. Навіть в Linux це здалося єдиним способом роботи з прямим командним рядком. Такі проекти, як RabbitVCS, допомагали деяким, але були не дуже потужними.
Підхід, орієнтований на командний рядок і будучи програмою Linux, означав, що майже всі посібники з інструкцій, довідкової документації та питання щодо форуму / QA спиралися на виконання жахливих команд, як вище. Основні команди SCM (фіксувати, тягнути, штовхати) не такі складні, але все більше і складність зростає в експоненціальній формі.
Я також ненавиджу одне місце, за яким, здається, звисає багато користувачів ОС OS git: Github. Коли ви вперше переходите на сторінку github, вона забиває вас всім, що ви можете зробити. Для мене сторінка git проектів виглядає хаотично, страшно та надмірно потужно. Навіть пояснення, що таке проект, висувається донизу. Github дійсно шкодить людям, які вже не мають повного веб-сайту. Її проблема трекера також жахлива і заплутана. Особливості перевантаження.
Користувачі Git також здавалися дуже культовими. Користувачі Git завжди є тими, хто починає "святі війни", над якими DVCS краще, що потім змушує користувачів Mercurial захищати себе. Такі сайти, як http://whygitisbetterthanx.com/, демонструють зарозумілість та майже менталітет "Використовуй моє програмне забезпечення або помирай". Я багато разів заїжджав у різні місця допомоги лише для того, щоб заграти за те, що не знаю X, заздалегідь використовував X, використовував Windows тощо. Це божевільно.
З іншого боку, Меркуріал, схоже, йде до добрішого підходу. Їх власна домашня сторінка виглядає набагато привітнішою для нових користувачів, ніж Git's . У простому пошуку Google п'ятим результатом є TortoiseHg, дуже приємний графічний інтерфейс для Mercurial. Весь їхній підхід здається спочатку простотою, потужністю пізніше.
З Mercurial у мене немає дурниць SSH (SSH - це пекло на Windows), у мене немає дурно складних команд, у мене немає культового користувача, який слідкує, у мене немає божевілля. Меркуріал просто працює.
TortoiseHg забезпечує фактично корисний інтерфейс (хоча останнім часом він, здається, зростає), що забезпечує фактично корисні функції. Параметри обмежуються тим, що вам потрібно, усуваючи безлад та варіанти, які рідко використовуються. Він також надає багато пристойних стандартних параметрів
Mercurial, будучи дуже доброзичливим до нових бажаючих, було дуже легко підібрати. Навіть деякі складніші теми, такі як різні моделі розгалуження та редагування історії, були дуже прості. Я швидко і безболісно підхопив Меркуріал.
Mercurial також просто працює вперше з невеликими налаштуваннями. У будь-якій ОС я можу просто встановити TortoiseHg і отримати всі потрібні функції (в основному команди контекстного меню) без необхідності полювати на різних Guis. Також не вистачає налаштування SSH (половина посібників там говорить про використання Putty, Plink та Pagent, а інша половина говорить про використання ssh-keygen). Для нових користувачів TortoiseHg потребує декількох хвилин, а Git займає від 30 хвилин до години з великою кількістю гугла.
Нарешті, у вас є онлайн-репост. Еквівалент Githubs - це BitBucket, який має деякі з питань, які я окреслив вище. Однак існує також код Google. Коли я переходжу до проекту Google Code , я не отримую перевантаження функцій, я отримую приємний чистий інтерфейс. Google Code - це скоріше онлайн-комбінація репо / веб-сайтів, яка справді допомагає проектам OSS, у яких не встановлено існуючий сайт. Я б почував себе дуже комфортно, використовуючи Google Code як веб-сайт моїх проектів протягом досить тривалого часу, лише будуючи веб-сайт, коли це необхідно. Його трекер випуску також є потужним, що добре вписується між майже безкорисним Tracker Issue Github та чудовиськом Bugzilla .
Mercurial просто працює, перший раз, кожен раз. Git заважає мені і тільки злить мене тим більше, чим я його використовую.
В основному вважається, що Mercurial є простішим та легшим для вивчення, ніж Git. У свою чергу, часто виникає думка, що Git є більш гнучким і потужним. Частково це пов’язано з тим, що Git прагне надавати команди більш низького рівня, а також частково тому, що Mercurial за замовчуванням має тенденцію приховувати розширені функції , залишаючи його користувачам редагувати файл конфігурації mercurial, щоб активувати розширені функції, які їм подобаються. Це часто призводить до того, що в Mercurial немає додаткових функцій.
Mercurial завжди більше зосереджувався на аспектах інтерфейсу, що полегшувало навчання спочатку. На відміну від Git, для роботи з Mercurial потрібно корисне розуміння. Зрештою, така інкапсуляція дала Меркуріалу помилковий вигляд того, що вона є менш потужною та функціональною, ніж є насправді.
hg push --branch BRANCH
) або до певної версії ( hg push --rev REV
). Перегляньте hg help push
додаткові варіанти.
Контекст: Я щодня використовую як Mercurial (для роботи), так і Git (для побічних проектів та відкритого коду). Я в основному використовую текстові інструменти з обома (не з IDE), і я на Mac.
Взагалі мені здається, що з Mercurial простіше працювати. Кілька речей, які я вважаю, полегшують Mercurial:
hg
Еквівалент git
гілок на насправді називається bookmarks
. Наскільки я знаю, hg
філії не мають еквівалента в git
.
git
розгалуження - це підмножина hg
розгалуження. У hg
ви можете мати обидва названі і неназваних (топологічні) гілки, і навіть може управляти неназвані гілки таким же чином , як з git
допомогою закладок. Я ніколи не бачив сенсу в області постановки. Я б швидше відмовився від небажаних змін, а потім переконайтесь, що мій код збирає та завершує мої тести, перш ніж робити його. Потім я можу відмовитись і продовжувати. Також Чарльз Бейлі «Масажними ханами» (p90 +) мене лякає * 8 '): accu.org/content/conf2011/accu2011LT_fri_share_v2.pdf
hg bookmark keyo-stuff
, виконайте дії hg commit
, а потім з часом hg push -B keyo-stuff
. Якщо вам не подобаються номери версій, не використовуйте їх; Mercurial прийме хеш де завгодно, він прийме номер перегляду, я думаю. Я мушу сказати, що ваші коментарі, що б'ють Меркуріал через відсутність його функцій, насправді натрапили на незнання і трохи агресивні; ти не робиш багато добра для стереотипу користувачів Git!
Це дуже суб'єктивно і залежить від однієї людини до іншої, але так, я б перейшов до того, що хтось абсолютно новий у VCS або хтось із одного із ДКЦ "старої школи", Mercurial здасться простіше.
Наприклад, додавання файлів, відсутність індексу в Hg, простота повернення до старої редакції та розгалуження звідти (просто оновлення та фіксація) як одні з найбільш «очевидних» прикладів. Зараз більшість можливостей однієї системи можна імітувати в іншій, і навпаки, але це вимагає певних знань у Git, тоді як у Mercurial типові настройки (якщо ви дозволите мені їх так називати) досить "зручні для користувачів". Ці дрібниці - перемикання тут і там, неочевидна поведінка в одній команді і так далі ... ці речі складаються, і врешті-решт одна система здається легшою у використанні, ніж інша.
Просто, щоб відповідь була повною; Я використовую git, але, рекомендуючи VCS для того, хто є "новим для них", я майже завжди рекомендую Mercurial. Пам’ятаю, коли це вперше потрапило мені в руки, це почувалося дуже інтуїтивно. З мого досвіду, Mercurial виробляє менше wtf / хвилину, ніж Git.
Я думаю, що це так просто: Mercurial має більш звичний синтаксис (особливо для користувачів SVN) і досить добре задокументований. Як тільки ви звикнете до синтаксису Git, ви знайдете його таким же простим у використанні, як і все інше.
Сприйняття можуть з часом змінюватися. Mercurial дуже добре розроблений, як і Git. Здається, Меркуріал легше вивчити (принаймні, це було для мене), і у Git виникли труднощі, з якими у мене не було паралелі. Я спробував навчитися Python і Ruby, і пішов далі, швидше з Python. Це не означає, що Python завжди і скрізь кращий за Ruby, або навіть, що він для мене кращий. Це просто те, чого я навчився і дотримувався. Програмісти часто роблять святі війни з особистих уподобань. Це роблять і інші люди.
Я є користувачем, який намагається не розкривати думку про Git, і я вільно визнаю, що він не став "моєю новою улюбленою річчю" в тій же мірі, що і Меркуріал. Я думаю, що Git дійсно дуже приємний, хоча.
Приклад зустрічного прикладу для складності GIT / mercurial: Nice GIT підтримка вбудована в XCode на Mac. Менш простий у використанні XCode з Mercurial, ніж GIT.
Мій досвід роботи з GIT до цих пір полягає в тому, що я заплутався і загубився і мені потрібно більше звертатися до документації під час її використання. Я вважаю, що було написано багато документації, але нічого, що б не дало мені змоги "пограбувати". По-друге, я можу легко змінювати та розширювати Mercurial в Python, і оскільки я вмію в Python, і як хтось насправді міг би пізнати пітон швидко, мені здається перевагою. Я також знаю C і пишу розширення Python в C, тому я припускаю, що колись мені це знадобиться, я міг би легко написати розширення Git у C.
Простота використання - це не те, що легко оцінити. Це там, і я не думаю, що це цілком суб’єктивно, але у нас немає хороших об'єктивних методик вимірювання. Якими будуть одиниці для зручності використання? Milli-iPods?
Я не настільки партизан, щоб бути 100% промеркуріальним і 100% антигіт. Мені зручніше в Mercurial зараз, в Windows і Linux, і коли я почну робити більше роботи на Mac, я сподіваюся, що спробую дотримуватися XCode + GIT.
Оновлення 2013: Зараз я використовував Mercurial AND GIT досить довго, щоб знайти деякі функції, які, як я хотів би, мати у Git, наприклад, це питання щодо стратегій злиття. Дійсно Git - це дивовижно, якщо важко вчитися, а іноді дивно складне.
Є кілька речей, які IMO, ймовірно, відводять нових користувачів від Git:
Культура Git більш орієнтована на командний рядок. Хоча обидва інструменти, як правило, надто зосереджуються на командному рядку (як я вже говорив кілька разів, інструкції командного рядка можуть бути потужними та більш вільними, але вони не є хорошою маркетинговою стратегією ), це значно більше стосується Git. Якщо Mercurial має фактичний стандартний інструмент для графічного інтерфейсу в TortoiseHg, який є навіть варіантом завантаження за замовчуванням для користувачів Windows на домашній сторінці Mercurial, Git має кілька конкуруючих передніх інтерфейсів GUI (TortoiseGit, Git Extensions, gitk тощо), які недостатньо добре рекламуються. на веб-сайті Git, і всі вони все-таки мають повний погляд. (Чорний текст на червоних етикетках? C'mon, TortoiseGit, ви можете зробити це краще!) У спільноті Git також є набагато більш поширене ставлення до того, що люди, які використовують засоби GUI, не є належними розробниками програмного забезпечення.
У Git є кілька нестандартних стандартних налаштувань, які мають ідеальний сенс для досвідчених користувачів, але, швидше за все, вони будуть дивними, якщо не залякують нових користувачів. Наприклад, набагато агресивніше стосується автоматизації таких завдань, як злиття (наприклад, git pull автоматично зливається і виконує, де це можливо). Існує випадок повністю автоматизованих об'єднань , але більшість недосвідчених користувачів жахнуться злиттям, і їм потрібно надати можливість отримати впевненість у своїх інструментах, перш ніж розблокувати повну потужність у вихідному коді.
Документація та властива їй складність:
$ hg help log | wc -l
64
$ git help log | wc -l
912
Я можу придумати одне
git add .
git commit -am "message"
vs.
hg ci -Am "message"
git commit -a
не додає новостворених файлів, hg ci -A
але це означає, що те, що вимагає двох команд з git, може бути виконано однією командою в Mercurial. Знову ж таки, "менший набір тексту" не обов'язково означає "більш зручний для користувачів".
git commit -a
працює просто тому, що це полегшує контроль над тим, що робить, а не додається за певну комісію. (Мені насправді незвично вказувати окремі імена шляхів для кожного, svn ci
щоб уникнути додавання неспорідненого матеріалу до
hg ci
без -A
прапора це еквівалент git commit -a
. Я використовував git набагато більше, ніж рт.ст., тому я не впевнений на 100%.
hg ci
== git commit -a
.
Тому що це.
Git викриває набагато більше кишок, ніж меркурій. Ви можете із задоволенням використовувати mercurial протягом декількох хвилин після його вибору, але мені здається, що git все ще дуже важко схопиться після декількох місяців боротьби з ним (я робив дуже мало за останні пару місяців, крім того, щоб спробувати вивчити git ). Я використовую як з командного рядка, так і здебільшого на Linux, тому це не просто відраза до інтерфейсу командного рядка.
Одним простим прикладом є порівняно небагато прапорців та аргументів командного рядка, необхідних для mercurial порівняно з git. Область постановки та поведінка команди add в git також додають більше складності, ніж потрібно. Тріо скидання, оформлення замовлення та повернення та їх багаторазові перестановки додає величезної складності, що було зовсім непотрібно, коли ви стаєте свідком прямолінійного характеру повернення та оновлення на mercurial.
Я згоден з вищенаведеним коментарем і щодо Hginit , це, безумовно, полегшило зрозуміти меркурій . Добре написано і дуже легко зрозуміти. Жодна документація, написана для git, не наближається. Я, наприклад, знаходжу більшість того, що написано Скоттом Чейконом (який вручну написав більшість документації / книг про git) особливо заплутаним.