LINUX.ORG.RU

Отличия git от hg


0

4

Здравствуйте. Хочется понять чем отличается git от hg. Их отличия от svn видны невооруженным взглядом. А вот какие либо статьи сравнивающие эти две распределенные системы мне найти не удалось.


В git в основе простая модель, способ выполнения каждого действия вытекает из этой модели (хотя и не всегда сразу очевидно, как). В hg на каждый чих нужна своя команда/расширение.

anonymous
()

Опять?

anonymous
()
Ответ на: комментарий от Reset

Удваиваю. hg функционал дает тот же, что и git, но hg проще в обучении. А следовательно и предпочтительнее.

anonymous
()
Ответ на: комментарий от anonymous

git прозрачно и понятно работает разве что для git-фанбоев. Для всех остальных это сплошной НЁХ, который в процессе изучения порой юзера доводит до состояния 10 wtf'аков в минуту.

anonymous
()

В hg нет возможности выборочных коммитов. Нет возможности объединять несколько коммитов в один.

AnDoR ★★★★★
()
Ответ на: комментарий от anonymous

Меркуриал грамотно спроектирован, а гит переписывался 100500 раз силами фанбоев, чтобы стать хоть сколько-нибудь юзабельным.

anonymous
()
Ответ на: комментарий от AnDoR

Да-да, а главное — нельзя удаленный репозиторий одним взмахом редактировать, вот беда-то.

P. S. AnDoR — еще один фанбой, который не слышал про record, mq, rebase и пр?

anonymous
()
Ответ на: комментарий от anonymous

Да-да, а главное — нельзя удаленный репозиторий одним взмахом редактировать, вот беда-то.

P. S. AnDoR — еще один фанбой, который не слышал про record, mq, rebase и пр?

Ок, покажи, какими конкретными командами добавить в коммит только те изменения в файле, которые мне надо.
И какими командами сделать так, чтобы несколько коммитов объединились в один.

Спасибо.

AnDoR ★★★★★
()

У hg есть морды для венды и наутилуса (во всяком случае раньше были).

vurdalak ★★★★★
()
Ответ на: комментарий от anonymous

меркуриал на тормозном питтоне, а гит на реактивной сишечке.

А по быстродействию отличаются мало.

tailgunner ★★★★★
()
Ответ на: комментарий от AnDoR

В hg нет возможности выборочных коммитов. Нет возможности объединять несколько коммитов в один.

И то, и другое есть в mq. И еще много чего.

Кстати, возможность объединять коммиты есть и в голом hg.

tailgunner ★★★★★
()
Ответ на: комментарий от AnDoR

под выборочным коммитом обычно подразумевается коммит выборки файлов. а выборки изменений из одного файла я и в гите не припоминаю

marvin_yorke ★★★
()

Есть одно отличие которое удалось найти, это то что в git'e используется stage area в mercurial'e этого уровня по умолчанию нету, но возможно получить с помощью плагинов.

n4ela
() автор топика

Попробуй сначала hg, потому git. Мне после git'а обратно возвращаться не захотелось.

stack_protector
()
Ответ на: комментарий от AnDoR

Одно покажу, второе сам нагуглишь.

$ hg st
M a.txt
$ hg diff
diff -r 58f7db921d5f a.txt
--- a/a.txt	Sun Jan 22 13:58:03 2012 +0400
+++ b/a.txt	Sun Jan 22 14:00:07 2012 +0400
@@ -1,4 +1,3 @@
-git прозрачно и понятно работает разве что для git-фанбоев.
 Для всех остальных это сплошной НЁХ, который в процессе изучения порой юзера доводит до состояния 10 wtf'аков в минуту.
 anonymous (22.01.2012 13:44:36)
 [Ответить на это сообщение]
@@ -8,5 +7,3 @@
 В hg нет возможности выборочных коммитов.
 Нет возможности объединять несколько коммитов в один.
 AnDoR *** (22.01.2012 13:45:02)
-[Ответить на это сообщение]
-
$ hg record -m Бред
diff --git a/a.txt b/a.txt
2 hunks, 3 lines changed
examine changes to 'a.txt'? [Ynsfdaq?] y

@@ -1,4 +1,3 @@
-git прозрачно и понятно работает разве что для git-фанбоев.
 Для всех остальных это сплошной НЁХ, который в процессе изучения порой юзера доводит до состояния 10 wtf'аков в минуту.
 anonymous (22.01.2012 13:44:36)
 [Ответить на это сообщение]
record change 1/2 to 'a.txt'? [Ynsfdaq?] n

@@ -8,5 +7,3 @@
 В hg нет возможности выборочных коммитов.
 Нет возможности объединять несколько коммитов в один.
 AnDoR *** (22.01.2012 13:45:02)
-[Ответить на это сообщение]
-
record change 2/2 to 'a.txt'? [Ynsfdaq?] y

$ hg diff
diff -r 476e137ecab5 a.txt
--- a/a.txt	Sun Jan 22 14:00:34 2012 +0400
+++ b/a.txt	Sun Jan 22 14:02:26 2012 +0400
@@ -1,4 +1,3 @@
-git прозрачно и понятно работает разве что для git-фанбоев.
 Для всех остальных это сплошной НЁХ, который в процессе изучения порой юзера доводит до состояния 10 wtf'аков в минуту.
 anonymous (22.01.2012 13:44:36)
 [Ответить на это сообщение]
anonymous
()
Ответ на: комментарий от AnDoR

Ок, покажи, какими конкретными командами добавить в коммит только те изменения в файле, которые мне надо.

hg qrecord

И какими командами сделать так, чтобы несколько коммитов объединились в один.

hg qfold

tailgunner ★★★★★
()
Ответ на: комментарий от xorik

P.S. Я прошел путь svn -> hg -> git

Если вас не затруднит, расскажите, почему вы перешли в итоге на git. Какие плюшки от этого получили?

andreyu ★★★★★
()
Ответ на: комментарий от n4ela

в git'e используется stage area в mercurial'e этого уровня по умолчанию нету

Что значит «по умолчанию»? Плагин mq давно входит в стандартную поставку. И да, по сравнению с mq эта ваша staging area - настолько убогая концепция, что просто удивительно, зачем ее вообще придумали.

tailgunner ★★★★★
()
Ответ на: комментарий от AnDoR
hg qimport -r tip # верхняя ревизия импортируется в mq
hg qpop
hg qimport -r tip # еще одна верхняя ревизия импортируется в mq
hg qfold имя_патча.diff
Reset ★★★★★
()

Гит для фанбоев, привыкших гнаться за кумирами. Меркуриал для тех, кто привык думать своей головой.

vasilenko ★★
()

Кстати было бы еще интересно узнать как грамотно организовывается процесс коммита в DVCS при большой команде разработчиков?
Скажем при централизованной системе есть группа коммитеров которым шлют patch'и обычные разработчики и они уже коммитят в основную ветку
В DVCS у каждого разработчика есть собственный локальный репозиторий и они могут коммитить туда, но не понятно как их изменения попадут в основную ветку
То ли старым дедовским способом, сделал патч (отличия своего локального репо, от мастер ветки) и отослал коммитеру, а тот уже коммитит в основую, то ли коммитер должен синхрнизироваться с локальной веткой разработчика и сам смотреть различия, то ли наоборот разработчик должен протолкнуть изменения из своей локальной ветки в репозиторий коммитера.

n4ela
() автор топика

hg чуток помедленнее, но им зато пользоваться легко и приятно, в отличие от.

pevzi ★★★★★
()

И, возвращаясь к вопросу ТС...

Хочется понять чем отличается git от hg

Нормальный интерфейс пользователя; mq ; и скоро будут phases.

tailgunner ★★★★★
()
Ответ на: комментарий от n4ela

Кстати было бы еще интересно узнать как грамотно организовывается процесс коммита в DVCS при большой команде разработчиков?

В Mercurial Book это описано.

tailgunner ★★★★★
()

Функционал похож, но git повернут к пользователю лицом, а не жопой :)

Статей достаточно, http://lmgtfy.com/?q=hg vs git

Deleted
()
Ответ на: комментарий от anonymous

Это всё для замены простого git add -e (либо -p)?

Я правильно понимаю, что сначала ты добавляешь изменения, а потом их специально убираешь?

AnDoR ★★★★★
()
Ответ на: комментарий от AnDoR

Это всё для замены простого git add -e (либо -p)?

Ты сказал «только те изменения в файле, которые мне надо», т.е. только часть имеющихся в файле изменений. Приведенная тобой команда добавляет все, qrecord - только те, что надо. В чем твоя претензия к «простоте»?

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Это всё для замены простого git add -e (либо -p)?

Ты сказал «только те изменения в файле, которые мне надо», т.е. только часть имеющихся в файле изменений. Приведенная тобой команда добавляет все, qrecord - только те, что надо. В чем твоя претензия к «простоте»?

Неправда, команда git add -e открывает в $EDITOR патч, который планируется добавить, и его можно править как угодно.
А команда git add -p позволяет выбрать нужные чанки из сформированного патча.

AnDoR ★★★★★
()

я пользовался hg, потом сменил раьоту и там был гит. Я просветлел и остался на гите.

Плюс еще одно неоспоримое преимущество гита – гитхаб

Zubchick
()
Ответ на: комментарий от anonymous

Сначала ты добавляешь изменения, это видно из вывода hg st.
Потом ты делаешь record (Что является аналогом git add -p, если я правильно понимаю). Выходит, что тебе надо выполняеть две команды вместо одной просто git add -p.

AnDoR ★★★★★
()
Ответ на: комментарий от Zubchick

Плюс еще одно неоспоримое преимущество гита – гитхаб

Щас тебе начнут втирать про атлассиановский (sic!) битбакет.

AnDoR ★★★★★
()
Ответ на: комментарий от Zubchick

Плюс еще одно неоспоримое преимущество гита – гитхаб

Плюс к чему? К тому, что ты начал светиться? Сомнительное преимущество, должен сказать. Чего неоспоримого в гитхабе? Я бы битбакет скорее назвал преимуществом, чем гитхаб.

anonymous
()
Ответ на: комментарий от anonymous

Плюс к чему? К тому, что ты начал светиться? Сомнительное преимущество, должен сказать. Чего неоспоримого в гитхабе? Я бы битбакет скорее назвал преимуществом, чем гитхаб.

И этот hg-фанбой пытается называть попытку беспристрастного сравнения фанбойством?

AnDoR ★★★★★
()
Ответ на: комментарий от AnDoR

Неправда, команда git add -e открывает в $EDITOR патч, который планируется добавить, и его можно править как угодно.

А команда git add -p позволяет выбрать нужные чанки из сформированного патча.

У ммоего git нет -e, а -p по описанию является аналогом qrecord. Так в чем претензия-то? В том, что делается новый патч?

tailgunner ★★★★★
()
Ответ на: комментарий от AnDoR

Сначала ты добавляешь изменения, это видно из вывода hg st.

Сначала я тебе показываю состояние репозитория.

Потом ты делаешь record (Что является аналогом git add -p, если я правильно понимаю). Выходит, что тебе надо выполняеть две команды вместо одной просто git add -p.

Достаточно просто record.

anonymous
()
Ответ на: комментарий от tailgunner

Из моего man git-add:
-e, --edit
Open the diff vs. the index in an editor and let the user edit it. After the editor was closed, adjust the hunk headers and apply the patch to the index.

The intent of this option is to pick and choose lines of the patch to apply, or even to modify the contents of lines to be staged. This can be quicker and more
flexible than using the interactive hunk selector. However, it is easy to confuse oneself and create a patch that does not apply to the index. See EDITING
PATCHES below.

И спасибо, что показали, как в hg коммитить только нужные чанки. Хоть и не так удобно, как в гите, но и то хорошо.

AnDoR ★★★★★
()
Ответ на: комментарий от AnDoR

попытку беспристрастного сравнения

О да, это так беспристрастно - приплести социальную сеть github к сравнению DVCS-систем git и hg. И эти люди обвиняют нас в фанбойстве %)

tailgunner ★★★★★
()
Ответ на: комментарий от AnDoR

попытку беспристрастного сравнения

Озвучивание факта того, что старый лиспер начал светиться от гита, не похоже на попытку беспристрастного сравнения.

anonymous
()
Ответ на: комментарий от anonymous

Потом ты делаешь record (Что является аналогом git add -p, если я правильно понимаю). Выходит, что тебе надо выполняеть две команды вместо одной просто git add -p.

Достаточно просто record.

Достаточно для чего?

$ hg record
hg: unknown command 'record'
'record' предоставляется следующим расширением:

record commands to interactively select changes for commit/qrefresh

наберите «hg help extensions» для справки по включению расширений

AnDoR ★★★★★
()
Ответ на: комментарий от tailgunner

попытку беспристрастного сравнения

О да, это так беспристрастно - приплести социальную сеть github к сравнению DVCS-систем git и hg. И эти люди обвиняют нас в фанбойстве %)

Не тебя, а того анонимуса, который начал вешать ярлык «Фанбой» на всех, кто не согласен с его мнением.

AnDoR ★★★★★
()
Ответ на: комментарий от AnDoR

Хоть и не так удобно, как в гите, но и то хорошо.

То есть для тебя редактирование патча в редакторе удобнее простого выбора чанков? «Git rots the brain» (c) почти Дейкстра

tailgunner ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.