git vs mercurial (было "vcs vs vcs")

IDE, VCS и прочее

Модератор: Модераторы разделов

Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: git vs mercurial

Сообщение sash-kan »

демонстрирую в виде команд того, что хочется:

Shell

$ seq 1 9 > file1 $ seq 1 9 > file2 # теперь файлы содержат по девять строчек с цифрами. $ git add file* # добавляю в index... $ git commit -m chunks.before # и коммичу эти файлы [master 517e34e] chunks.before 2 files changed, 18 insertions(+), 0 deletions(-) create mode 100644 file1 create mode 100644 file2 $ sed -i 's/1/a/' file* # вношу правки 1.1 и 1.2, заменяя цифру 1 на букву a. $ sed -i 's/9/b/' file* # вношу правки 2.1 и 2.2, заменяя цифру 9 на букву b. $ git diff # вот так выглядят изменения diff --git a/file1 b/file1 index 0719398..edf2b27 100644 --- a/file1 +++ b/file1 @@ -1,4 +1,4 @@ -1 +a 2 3 4 @@ -6,4 +6,4 @@ 6 7 8 -9 +b diff --git a/file2 b/file2 index 0719398..edf2b27 100644 --- a/file2 +++ b/file2 @@ -1,4 +1,4 @@ -1 +a 2 3 4 @@ -6,4 +6,4 @@ 6 7 8 -9 +b $ git add -p file* # вызываю add с магическим ключиком -p diff --git a/file1 b/file1 index 0719398..edf2b27 100644 --- a/file1 +++ b/file1 @@ -1,4 +1,4 @@ -1 +a 2 3 4 Stage this hunk [y,n,q,a,d,/,j,J,g,e,?]? y # подтверждаю этот chunk (или правильнее hunk?) @@ -6,4 +6,4 @@ 6 7 8 -9 +b Stage this hunk [y,n,q,a,d,/,K,g,e,?]? n # а этот откладываю diff --git a/file2 b/file2 index 0719398..edf2b27 100644 --- a/file2 +++ b/file2 @@ -1,4 +1,4 @@ -1 +a 2 3 4 Stage this hunk [y,n,q,a,d,/,j,J,g,e,?]? y # подтверждаю @@ -6,4 +6,4 @@ 6 7 8 -9 +b Stage this hunk [y,n,q,a,d,/,K,g,e,?]? n # откладываю $ git diff # отличия от index-а — только правки 2.* diff --git a/file1 b/file1 index 7d9feef..edf2b27 100644 --- a/file1 +++ b/file1 @@ -6,4 +6,4 @@ a 6 7 8 -9 +b diff --git a/file2 b/file2 index 7d9feef..edf2b27 100644 --- a/file2 +++ b/file2 @@ -6,4 +6,4 @@ a 6 7 8 -9 +b $ git diff HEAD # отличия от «головы» репозитория — всё те же четыре изменения diff --git a/file1 b/file1 index 0719398..edf2b27 100644 --- a/file1 +++ b/file1 @@ -1,4 +1,4 @@ -1 +a 2 3 4 @@ -6,4 +6,4 @@ 6 7 8 -9 +b diff --git a/file2 b/file2 index 0719398..edf2b27 100644 --- a/file2 +++ b/file2 @@ -1,4 +1,4 @@ -1 +a 2 3 4 @@ -6,4 +6,4 @@ 6 7 8 -9 +b $ # и теперь я могу спокойно выполнить commit и будут в него внесены $ # лишь правки 1.* (замена цифры 1 на букву a) $ git commit -m "1 -> a" [master 037c1dd] 1 -> a 2 files changed, 2 insertions(+), 2 deletions(-) $ # а с буквами b я разберусь на следующем шаге: $ git commit -am "2 -> b" [master 81c437f] 2 -> b 2 files changed, 2 insertions(+), 2 deletions(-)
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: git vs mercurial

Сообщение t.t »

sash-kan писал(а):
07.04.2010 20:28
t.t писал(а):
07.04.2010 19:54
Остальное либо сугубо косметическое, либо существует в виде "расширений", как в примере выше.
если смотреть с таких абстрактных высот, то, пожалуй, и разницу между vcs и dvcs можно проигнорировать.
М.. Метод доведения до абсурда? Немного некорректное применение: по сравнению с cvcs разницу между git и mercurial признаёт несущественной даже Линус, особй корректностью в этих вопросах не страдающий.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: git vs mercurial

Сообщение t.t »

sash-kan писал(а):
07.04.2010 20:36
p.s. кстати, как у mercurial обстоит дело с chunk-ами? беглый осмотр гугля приводит к расширению mq, но, судя по описанию, это совершенно не то.
Здесь не в курсе. Даже не интересовался вопросом.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: git vs mercurial

Сообщение t.t »

sash-kan писал(а):
07.04.2010 21:27
демонстрирую в виде команд того, что хочется:
Признаться, как-то слишком для меня сложно. Поясни "на пальцах", чем полученные в итоге два коммита будут отличаться от тех, которые можно было бы получить просто двумя командами git commit -a: одной на месте git commit -m chunks.before, другой в конце.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: git vs mercurial

Сообщение sash-kan »

t.t писал(а):
07.04.2010 22:52
Признаться, как-то слишком для меня сложно.
гхм. я же нарочито примитивный пример придумал. хорошо, опишу словами:

исправляю какой-то баг.
пока ковыряюсь с багом, глаз «зацепляется» за какую-то «неправильность» в другом месте кода, с этим самым багом _никак_ не связанную. я её тоже по-быстренькому устраняю.
имею после этого:
1. исправление бага
2. корректировку «неправильности»
хочу внести их двумя _разными_ коммитами. но и та и другая правка затрагивает один и тот же файл.
если я использую git, сделать два коммита (один — с исправлением бага, другой — с корректировкой «неправильности») — элементарно. а в случае mercurial у меня получится это так же просто?
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: git vs mercurial

Сообщение sash-kan »

t.t писал(а):
07.04.2010 22:37
Метод доведения до абсурда?
просто смайлик пропустил (улыбка).
думал, по контексту понятно, что это шутка.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: git vs mercurial

Сообщение t.t »

sash-kan писал(а):
08.04.2010 01:25
t.t писал(а):
07.04.2010 22:52
Признаться, как-то слишком для меня сложно.
гхм. я же нарочито примитивный пример придумал. хорошо, опишу словами:
Нет, это я понял. (: Что не понял, написал конкретно, вот на это хотелось бы услышать ответ:
t.t писал(а):
07.04.2010 22:52
чем полученные в итоге два коммита будут отличаться от тех, которые можно было бы получить просто двумя командами git commit -a: одной на месте git commit -m chunks.before, другой в конце.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: git vs mercurial

Сообщение sash-kan »

t.t писал(а):
08.04.2010 06:14
одной на месте git commit -m chunks.before
это предварительный коммит. до внесения описываемых изменений. к сути не имеющий отношения: в нём нет ни исправления бага, ни корректировки «неправильности» (в терминах последнего моего поста).
t.t писал(а):
08.04.2010 06:14
другой в конце
а в этот коммит войдут _и_ исправление бага _и_ корректировка. т.е. один этот коммит будет объединять две никак не связанные сущности.
в активно мною до этого употребляемом svn-е о таких вещах и не задумываешься. просто пишешь в комментарии всё, что наисправлял. о том, что можно подобную ситуацию упорядочить, разложив мух и котлеты отдельно, даже и не задумываешься — потребности рождаются после обретения возможностей.
другая вариация из реальной жизни (где-то в выложенных букмарксах описанная):
правлю файл. правок несколько. при тестовых прогонах оказывается, что часть правок можно уже коммитить, а часть надо ещё «довести до ума».
а всё находится в одном файле. в любой vcs (кроме git-а) либо «забиваешь» на коммит, доводишь до ума _все_ исправления, и коммитишь одной кучей, либо, если коммитить надо кровь из носу, начинаешь «пляски с бубном»: сохраняешь файл под другим именем, возвращаешь назад всё, что не доделал, коммитишь, удаляешь этот файл, переименовываешь сохранённую копию, продолжаешь доделывать отложенное.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: git vs mercurial

Сообщение drBatty »

sash-kan писал(а):
08.04.2010 07:22
другая вариация из реальной жизни (где-то в выложенных букмарксах описанная):
правлю файл. правок несколько. при тестовых прогонах оказывается, что часть правок можно уже коммитить, а часть надо ещё «довести до ума».
а всё находится в одном файле. в любой vcs (кроме git-а) либо «забиваешь» на коммит, доводишь до ума _все_ исправления, и коммитишь одной кучей, либо, если коммитить надо кровь из носу, начинаешь «пляски с бубном»: сохраняешь файл под другим именем, возвращаешь назад всё, что не доделал, коммитишь, удаляешь этот файл, переименовываешь сохранённую копию, продолжаешь доделывать отложенное.

знакомо...
жду с нетерпением комментария от t.t...
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: git vs mercurial

Сообщение t.t »

sash-kan писал(а):
08.04.2010 07:22
а в этот коммит войдут _и_ исправление бага _и_ корректировка. т.е. один этот коммит будет объединять две никак не связанные сущности.
в активно мною до этого употребляемом svn-е о таких вещах и не задумываешься. просто пишешь в комментарии всё, что наисправлял. о том, что можно подобную ситуацию упорядочить, разложив мух и котлеты отдельно, даже и не задумываешься — потребности рождаются после обретения возможностей.
другая вариация из реальной жизни (где-то в выложенных букмарксах описанная):
правлю файл. правок несколько. при тестовых прогонах оказывается, что часть правок можно уже коммитить, а часть надо ещё «довести до ума».
а всё находится в одном файле. в любой vcs (кроме git-а) либо «забиваешь» на коммит, доводишь до ума _все_ исправления, и коммитишь одной кучей, либо, если коммитить надо кровь из носу, начинаешь «пляски с бубном»: сохраняешь файл под другим именем, возвращаешь назад всё, что не доделал, коммитишь, удаляешь этот файл, переименовываешь сохранённую копию, продолжаешь доделывать отложенное.
Всё, понял, прошу прощения. Голова была другим забита, не сообразил сразу.

Насколько я понял по документации, описанное тобой делается с помощью упомянутого выше shelve, но сам я с ним никогда не работал.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: git vs mercurial

Сообщение watashiwa_daredeska »

sash-kan писал(а):
08.04.2010 07:22
либо «забиваешь» на коммит, доводишь до ума _все_ исправления, и коммитишь одной кучей, либо, если коммитить надо кровь из носу, начинаешь «пляски с бубном»: сохраняешь файл под другим именем, возвращаешь назад всё, что не доделал, коммитишь, удаляешь этот файл, переименовываешь сохранённую копию, продолжаешь доделывать отложенное.
Ужас. Я пользуюсь stash и branch. Вариант 1: запихать текущие изменения в stash, сделать быстрый фикс, закоммитить, вернуться к тому, что в stash. Вариант 2: просто отбранчиться, пофиксить в соседней ветке, потом смержить.

Коммит отдельными chunk'ами я не применяю, ибо в этом случае тяжело проверить даже собирается ли оно вообще, то, что коммитится.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: git vs mercurial

Сообщение sash-kan »

watashiwa_daredeska писал(а):
08.04.2010 16:22
sash-kan писал(а):
08.04.2010 07:22
либо «забиваешь» на коммит, доводишь до ума _все_ исправления, и коммитишь одной кучей, либо, если коммитить надо кровь из носу, начинаешь «пляски с бубном»: сохраняешь файл под другим именем, возвращаешь назад всё, что не доделал, коммитишь, удаляешь этот файл, переименовываешь сохранённую копию, продолжаешь доделывать отложенное.
Ужас. Я пользуюсь stash и branch. Вариант 1: запихать текущие изменения в stash, сделать быстрый фикс, закоммитить, вернуться к тому, что в stash. Вариант 2: просто отбранчиться, пофиксить в соседней ветке, потом смержить.
ох-хо-хо, начинаю выдыхаться. объясняю по третьему кругу:
мне надо сделать два коммита для двух изменений в одном файле.
$ git add -p <file>
позволяет так сделать. это всё, что я хотел донести до Тихона.

p.s. git stash -p, кстати, предоставляет такую же возможность.

t.t писал(а):
08.04.2010 15:31
Насколько я понял по документации, описанное тобой делается с помощью упомянутого выше shelve, но сам я с ним никогда не работал.
насколько вижу по документации, shelve функциональностью явно уступает. к тому же это расширение, а не базовая функциональность. и вообще, насколько я понимаю, в debian-овском репозитории его нет, нужно устанавливать откуда-то, не знаю даже в каком виде. как-то не похоже на debian-way.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: git vs mercurial

Сообщение sash-kan »

watashiwa_darede... писал(а):
08.04.2010 16:22
Коммит отдельными chunk'ами я не применяю, ибо в этом случае тяжело проверить даже собирается ли оно вообще, то, что коммитится.
1. $ git stash -p # отмечаешь нужные чанки-ханки
2. проверяешь, собираются ли оставленные чанки-ханки, коммитишь.
3. git stash pop
4. заканчиваешь работу с отложенными чанками-ханками.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: git vs mercurial

Сообщение watashiwa_daredeska »

sash-kan писал(а):
08.04.2010 23:14
1. $ git stash -p # отмечаешь нужные чанки-ханки
Если слегка задумываться о том, как это коммитить, заранее, то можно избежать черрипикинга чанков. А так, в общем, то же самое. It works for me. :)
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: git vs mercurial

Сообщение t.t »

Начну с конца, чтобы ответ по существу оставить напоследок.

sash-kan писал(а):
08.04.2010 23:08
к тому же это расширение, а не базовая функциональность.
А чем расширение отличается от базовой функциональности, если и то, и другое написано на питоне? Тем, что не входит в комплект? Тогда см. чуть ниже. Или тем, что его нужно специально "включить" в конфиге? На мой взгляд, это хорошо, т.к. позволяет не захламлять список команд чем-то ненужным. Касательно ненужности см. совсем ниже.

sash-kan писал(а):
08.04.2010 23:08
и вообще, насколько я понимаю, в debian-овском репозитории его нет, нужно устанавливать откуда-то, не знаю даже в каком виде. как-то не похоже на debian-way.
Это один питоновский скрипт. Не вижу смысла опакечивать каждое расширение: шелуха будет превосходить полезный объём в разы. Опакетить сразу кучку -- тоже не лучшее решение: многим из этой кучки понадобится единичное расширение. Да кроме того, на одной машине могут работать несколько человек, у каждого из которых набор желаемых расширений будет своим.

sash-kan писал(а):
08.04.2010 23:08
t.t писал(а):
08.04.2010 15:31
Насколько я понял по документации, описанное тобой делается с помощью упомянутого выше shelve, но сам я с ним никогда не работал.
насколько вижу по документации, shelve функциональностью явно уступает.
Кроме shelve есть mq, которое явно превосходит. Но мне не нужно ни одно из них.

Я вообще считаю такой подход порочным наследием cvcs (svn в частности), где: история линейна; коммитить можно не когда нужно, а когда сеть есть; даже когда она есть, перед коммитом десять раз подумаешь, т.к. притормаживать он может весьма заметно.

В hg я предпочитаю в таких случаях создать ветку для промежуточных изменений, а затем слить её с основной рабочей веткой (собственно, об этом чуть выше писал wd, как об одном из вариантов при работе в git). Навскидку как минимум два плюса -- один существенный и один побочный:
1. с одной стороны, промежуточные изменения изолируются сразу же: нет риска, что с ними смешается или подойдёт вплотную что-то из основных; некоторые гитовцы в восторге от возможности разрулить такие ситуации вручную -- а мне сама теоретическая допустимость ручного разруливания видится крайне порочной практикой;
2. в дереве истории это будет самостоятельная параллельная ветвь, т.е. оно будет лучше отображать реальную временную картину.

Именно поэтому я не пользуюсь даже shelve, который тебе кажется недостаточным.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: git vs mercurial

Сообщение sash-kan »

t.t писал(а):
09.04.2010 09:24
Кроме shelve есть mq, которое явно превосходит. Но мне не нужно ни одно из них.

Я вообще считаю такой подход порочным наследием cvcs (svn в частности), где: история линейна; коммитить можно не когда нужно, а когда сеть есть; даже когда она есть, перед коммитом десять раз подумаешь, т.к. притормаживать он может весьма заметно.

В hg я предпочитаю в таких случаях создать ветку для промежуточных изменений, а затем слить её с основной рабочей веткой (собственно, об этом чуть выше писал wd, как об одном из вариантов при работе в git). Навскидку как минимум два плюса -- один существенный и один побочный:
1. с одной стороны, промежуточные изменения изолируются сразу же: нет риска, что с ними смешается или подойдёт вплотную что-то из основных; некоторые гитовцы в восторге от возможности разрулить такие ситуации вручную -- а мне сама теоретическая допустимость ручного разруливания видится крайне порочной практикой;
2. в дереве истории это будет самостоятельная параллельная ветвь, т.е. оно будет лучше отображать реальную временную картину.

Именно поэтому я не пользуюсь даже shelve, который тебе кажется недостаточным.
ну, давай попробуем разложить по полочкам. без твоего и моего субъективных мнений и предпочтений.

1. про mq.

1.1. есть такой проект (правильнее, видимо, говорить «был», хотя пакет такой в debian, например, имеется) quilt. простым языком: система для менеджмента наборов патчей. к vcs отношения, в общем-то, и не имеющая.
1.2. на идеях этого проекта реализованы mercurial queues (debian-пакета не вижу, но это не существенно) и stgit:
stgit - manage stacks of patches in a git repository
уже на идеях mercurial queues есть другая реализация:
guilt - quilt for git; similar to Mercurial queues
1.3. это совершенно иное (и в концепции, и в реализации) средство, нежели режим работы с чанками/ханками, интегрированный в некоторые git-овские команды (по крайней мере: git add, git reset, git stash).

2. про hgshelve.

судя по описанию, представляет собой нечто среднее между «git stash» и «git stash -p».

подробнее сравнить и описать, увы, не могу, т.к. лишь «hg shelve -h» выдаёт что-то осмысленное, любые другие аргументы (или их отсутствие) вызывает выдачу питоновского traceback-а. [offtopic]начинаю понимать, почему ты не пользуешься mercurial-овскими расширениями (улыбка). я бы тоже не стал пользоваться _такими_ расширениями.[offtopic]
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5355
ОС: Gentoo

Re: git vs mercurial

Сообщение /dev/random »

sash-kan писал(а):
09.04.2010 20:36
[offtopic]начинаю понимать, почему ты не пользуешься mercurial-овскими расширениями (улыбка). я бы тоже не стал пользоваться _такими_ расширениями.[offtopic]

[holywar]Кстати, после того, как всё больше и больше питоновских программ стали при запуске выдавать трейсбэки, я возненавидел питон и всё, что с ним связано[holywar]
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: git vs mercurial

Сообщение watashiwa_daredeska »

/dev/random писал(а):
09.04.2010 21:05
после того, как всё больше и больше питоновских программ стали при запуске выдавать трейсбэки, я возненавидел питон
А я наоборот, за это его и люблю :) По крайней мере, сразу видно, что автор программы — криворукий болван. В более «толерантных» языках это становится заметно лишь после того, как программа разнесёт в хлам всё, до чего сможет дотянуться :)
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: git vs mercurial

Сообщение drBatty »

/dev/random писал(а):
09.04.2010 21:05
[holywar]Кстати, после того, как всё больше и больше питоновских программ стали при запуске выдавать трейсбэки, я возненавидел питон и всё, что с ним связано[holywar]

в этой войне я на вашей стороне (:
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: git vs mercurial

Сообщение sash-kan »

drBatty писал(а):
09.04.2010 23:47
/dev/random писал(а):
09.04.2010 21:05
[holywar]Кстати, после того, как всё больше и больше питоновских программ стали при запуске выдавать трейсбэки, я возненавидел питон и всё, что с ним связано[holywar]

в этой войне я на вашей стороне (:
берёте подносчиком снарядов? (улыбка)
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: git vs mercurial

Сообщение t.t »

sash-kan писал(а):
09.04.2010 20:36
ну, давай попробуем разложить по полочкам. без твоего и моего субъективных мнений и предпочтений.
Признаться, не очень вижу в этом смысл, т.к. мы как раз вошли в зону стиля работы с деревом, каковой стиль работы состоит из личных предпочтений чуть более чем полностью. Мне было бы интереснее услышать ответ на другую часть моего поста.

sash-kan писал(а):
09.04.2010 20:36
1. про mq.
Я знаю, что это другое. И тут уже дело в стиле (о чём я и сказал выше): я не очень-то могу сравнивать инструменты, которые в мой стиль работы не вписываются; говорил об их взаимозаменяемости на основе отзывов в сети. На этом предпочёл бы эту ветвь дискуссии закруглить.

sash-kan писал(а):
09.04.2010 20:36
на идеях этого проекта реализованы mercurial queues (debian-пакета не вижу, но это не существенно)
Mq уже входит в состав пакета mercurial.
sash-kan писал(а):
09.04.2010 20:36
подробнее сравнить и описать, увы, не могу, т.к. лишь «hg shelve -h» выдаёт что-то осмысленное, любые другие аргументы (или их отсутствие) вызывает выдачу питоновского traceback-а. [offtopic]начинаю понимать, почему ты не пользуешься mercurial-овскими расширениями (улыбка). я бы тоже не стал пользоваться _такими_ расширениями.[offtopic]
Уж не знаю что сказать... "Если ничего не работает, прочтите наконец инструкцию". (: А тут даже не инструкцию, а всего лишь таблицу соответствия между версиями mercurial и самого расширения. В частности, такое поведение может возникнуть, если расширение ты скачал последнее, а mercurial поставил из stable: оно с той версией не совместимо. Обнови mercurial до unstable -- всё будет отлично работать.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: git vs mercurial

Сообщение sash-kan »

t.t писал(а):
10.04.2010 15:54
Мне было бы интереснее услышать ответ на другую часть моего поста.
на какую часть какого из постов?

t.t писал(а):
10.04.2010 15:54
"Если ничего не работает, прочтите наконец инструкцию"
о несостыковке версий я, конечно, догадался. но замусоривать систему желания не возникло.

t.t писал(а):
10.04.2010 15:54
В частности, такое поведение может возникнуть, если расширение ты скачал последнее, а mercurial поставил из stable
а было бы расширение «опакечено», не надо было бы вникать в эти тонкости. ведь для чего-то же придумали depends-ы? (улыбка)
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: git vs mercurial

Сообщение drBatty »

sash-kan писал(а):
10.04.2010 16:41
а было бы расширение «опакечено», не надо было бы вникать в эти тонкости. ведь для чего-то же придумали depends-ы? (улыбка)

как-бы в самом mercurial'е предусмотрены зависимости - я не смог открыть клон из Slacky13 в Slacky12.2 (и там и там ставилось из родных пакетов). Пришлось обновится до hg-sable... (К счастью, в Slacky13 клоны работали из stable от 7 апреля).
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: git vs mercurial

Сообщение t.t »

sash-kan писал(а):
10.04.2010 16:41
t.t писал(а):
10.04.2010 15:54
Мне было бы интереснее услышать ответ на другую часть моего поста.
на какую часть какого из постов?
Очевидно. (; Того из постов, на который ты отвечал; на ту часть, на которую не ответил, и которую я назвал ответом по существу:
t.t писал(а):
09.04.2010 09:24
Начну с конца, чтобы ответ по существу оставить напоследок.
[...]
Я вообще считаю такой подход порочным наследием cvcs (svn в частности), где: история линейна; коммитить можно не когда нужно, а когда сеть есть; даже когда она есть, перед коммитом десять раз подумаешь, т.к. притормаживать он может весьма заметно.

В hg я предпочитаю в таких случаях создать ветку для промежуточных изменений, а затем слить её с основной рабочей веткой (собственно, об этом чуть выше писал wd, как об одном из вариантов при работе в git). Навскидку как минимум два плюса -- один существенный и один побочный:
1. с одной стороны, промежуточные изменения изолируются сразу же: нет риска, что с ними смешается или подойдёт вплотную что-то из основных; некоторые гитовцы в восторге от возможности разрулить такие ситуации вручную -- а мне сама теоретическая допустимость ручного разруливания видится крайне порочной практикой;
2. в дереве истории это будет самостоятельная параллельная ветвь, т.е. оно будет лучше отображать реальную временную картину.

Именно поэтому я не пользуюсь даже shelve, который тебе кажется недостаточным.


sash-kan писал(а):
10.04.2010 16:41
t.t писал(а):
10.04.2010 15:54
"Если ничего не работает, прочтите наконец инструкцию"
о несостыковке версий я, конечно, догадался. но замусоривать систему желания не возникло.
Если догадался, то к чему был этот комментарий?.. Касательно "замусоривания": я предложил вариант, который сам опробовал, т.к. мне всё равно mercurial нужно было обновить до той же версии, которую я поставил на сервер. Под ту версию, которая в stable, расширение тоже имеется.

sash-kan писал(а):
10.04.2010 16:41
t.t писал(а):
10.04.2010 15:54
В частности, такое поведение может возникнуть, если расширение ты скачал последнее, а mercurial поставил из stable
а было бы расширение «опакечено», не надо было бы вникать в эти тонкости. ведь для чего-то же придумали depends-ы? (улыбка)
Я выше уже комментировал отсутствие пакета: на мой взгляд, оно обусловлено невостребованностью расширения. Во всяком случае, я сам, если бы не это обсуждение, даже не подумал бы его ставить.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: git vs mercurial

Сообщение sash-kan »

t.t писал(а):
10.04.2010 19:18
на ту часть, на которую не ответил
мне показалось, что именно на неё я и отвечал:
sash-kan писал(а):
09.04.2010 20:36
ну, давай попробуем разложить по полочкам. без твоего и моего субъективных мнений и предпочтений.

сложновато отвечать «по существу» на изложение личных предпочтений. но если ты настаиваешь, попробую.

t.t писал(а):
10.04.2010 19:18
Если догадался, то к чему был этот комментарий?
ну, с ним веселее как-то (улыбка).
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: git vs mercurial

Сообщение sash-kan »

итак, пробую ответить:

t.t писал(а):
09.04.2010 09:24
Я вообще считаю такой подход порочным наследием cvcs (svn в частности), где: история линейна; коммитить можно не когда нужно, а когда сеть есть; даже когда она есть, перед коммитом десять раз подумаешь, т.к. притормаживать он может весьма заметно.
мне представляется несколько иная картина. при активном использовании любого набора из index-а, «полок» и веток, коммиты делаются не тогда, когда вынужден, а тогда, когда считаешь нужным.
собирая изменения в index-е (пусть хоть после каждой написанной строчки делая git add <file>) или «на полках» (git stash), или в отдельных ветках, можно затем сделать красивый логичный коммит в _основную_ ветку (возможно, оставив во вспомогательных ветках нужное количество промежуточных коммитов).

t.t писал(а):
09.04.2010 09:24
В hg я предпочитаю в таких случаях создать ветку для промежуточных изменений, а затем слить её с основной рабочей веткой (собственно, об этом чуть выше писал wd, как об одном из вариантов при работе в git). Навскидку как минимум два плюса -- один существенный и один побочный:
примерно то же, что я написал абзацем выше.

t.t писал(а):
09.04.2010 09:24
1. с одной стороны, промежуточные изменения изолируются сразу же: нет риска, что с ними смешается или подойдёт вплотную что-то из основных;
тут мне не совсем понятна твоя мысль.

t.t писал(а):
09.04.2010 09:24
некоторые гитовцы в восторге от возможности разрулить такие ситуации вручную
не являясь ни «гитовцем», ни, тем более «некоторым гитовцем», я, пожалуй, этот личный выпад в сторону абстрактных личностей не буду комментировать.

t.t писал(а):
09.04.2010 09:24
а мне сама теоретическая допустимость ручного разруливания видится крайне порочной практикой;
полностью с тобой соглашусь. «разруливание» чего-либо — вещь пренеприятная.

t.t писал(а):
09.04.2010 09:24
2. в дереве истории это будет самостоятельная параллельная ветвь, т.е. оно будет лучше отображать реальную временную картину.
действительно, почему бы и не сделать такое количество коммитов, которое считаешь нужным?

t.t писал(а):
09.04.2010 09:24
Именно поэтому я не пользуюсь даже shelve
не использование инструмента — дело вкуса. правда, не совсем ясна причинно-следственная связь, но в данном случае это, imho, не существенно: помимо отсутствующего index-а и неиспользуемых «полок» остаются ведь ещё ветки.

t.t писал(а):
09.04.2010 09:24
который тебе кажется недостаточным.
я написал буквально:
sash-kan писал(а):
08.04.2010 23:08
насколько вижу по документации, shelve функциональностью явно уступает.
в свете этого не совсем понимаю, что означает «кажется недостаточным». в каком смысле «недостаточным»?
и почему «кажется»? ведь так оно и есть — уступает функциональностью.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: git vs mercurial

Сообщение t.t »

sash-kan писал(а):
10.04.2010 19:44
t.t писал(а):
10.04.2010 19:18
на ту часть, на которую не ответил
мне показалось, что именно на неё я и отвечал:
sash-kan писал(а):
09.04.2010 20:36
ну, давай попробуем разложить по полочкам. без твоего и моего субъективных мнений и предпочтений.
сложновато отвечать «по существу» на изложение личных предпочтений. но если ты настаиваешь, попробую.
Ну, истина, говорят, размножается спорами. (: Вдруг я недостаточно хорошо понимаю, от чего отказываюсь.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: git vs mercurial

Сообщение t.t »

sash-kan писал(а):
10.04.2010 20:12
t.t писал(а):
09.04.2010 09:24
1. с одной стороны, промежуточные изменения изолируются сразу же: нет риска, что с ними смешается или подойдёт вплотную что-то из основных;
тут мне не совсем понятна твоя мысль.
Поясню. В приведенном тобой примере два отдельных изменения достаточно хорошо локализуются, хотя и находятся в одних и тех же файлах. Но если привыкнуть к такой схеме, можно легко попасть в ситуацию, когда такие два изменения соприкасаются или сплетаются -- и мы приходим к тому самому ручному разруливанию. Если же использовать схему с отдельными ветками, то такой риск не может возникнуть в принципе.

sash-kan писал(а):
10.04.2010 20:12
t.t писал(а):
09.04.2010 09:24
некоторые гитовцы в восторге от возможности разрулить такие ситуации вручную
не являясь ни «гитовцем», ни, тем более «некоторым гитовцем», я, пожалуй, этот личный выпад в сторону абстрактных личностей не буду комментировать.
Я, собственно, и выбрал такую формулировку ("некоторые гитовцы"), чтобы сказанное не выглядело как личный выпад. Видимо, приём недостаточно удачный. Прошу прощения если невольно задел.

sash-kan писал(а):
10.04.2010 20:12
t.t писал(а):
09.04.2010 09:24
который тебе кажется недостаточным.
я написал буквально:
sash-kan писал(а):
08.04.2010 23:08
насколько вижу по документации, shelve функциональностью явно уступает.
в свете этого не совсем понимаю, что означает «кажется недостаточным». в каком смысле «недостаточным»?
и почему «кажется»? ведь так оно и есть — уступает функциональностью.
Огрубляя: есть два инструмента (в общем-то, произвольных), один из которых превосходит по функционалу второй. Если человек считает первый более удобным, то очевидно, что второй для него будет недостаточным (и наоборот: если более удобен второй, то первый избыточен). Видимо, я неправильно понял, что ты считаешь гитовский инструмент из твоего примера более удобным.

sash-kan писал(а):
10.04.2010 20:12
t.t писал(а):
09.04.2010 09:24
Я вообще считаю такой подход порочным наследием cvcs (svn в частности), где: история линейна; коммитить можно не когда нужно, а когда сеть есть; даже когда она есть, перед коммитом десять раз подумаешь, т.к. притормаживать он может весьма заметно.
мне представляется несколько иная картина. при активном использовании любого набора из index-а, «полок» и веток, коммиты делаются не тогда, когда вынужден, а тогда, когда считаешь нужным.
собирая изменения в index-е (пусть хоть после каждой написанной строчки делая git add <file>) или «на полках» (git stash), или в отдельных ветках, можно затем сделать красивый логичный коммит в _основную_ ветку (возможно, оставив во вспомогательных ветках нужное количество промежуточных коммитов).
[...]
t.t писал(а):
09.04.2010 09:24
В hg я предпочитаю в таких случаях создать ветку для промежуточных изменений, а затем слить её с основной рабочей веткой (собственно, об этом чуть выше писал wd, как об одном из вариантов при работе в git). Навскидку как минимум два плюса -- один существенный и один побочный:
примерно то же, что я написал абзацем выше.
[...]
полностью с тобой соглашусь. «разруливание» чего-либо — вещь пренеприятная.
[...]
действительно, почему бы и не сделать такое количество коммитов, которое считаешь нужным?
[...]
не использование инструмента — дело вкуса. правда, не совсем ясна причинно-следственная связь, но в данном случае это, imho, не существенно: помимо отсутствующего index-а и неиспользуемых «полок» остаются ведь ещё ветки.
Примерно об этом я и говорю: если то же самое можно сделать с помощью веток (причём, на мой взгляд, более безопасно и наглядно), то в чём плюсы от доступности других инструментов?
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: git vs mercurial

Сообщение t.t »

Жаль, что дискуссия так внезапно прекртилась -- мне было достаточно интересно. Надеясь всё же дождаться ответа на свой предыдущий пост, задам параллельно ещё один вопрос: в git появились аналоги hg incoming/outgoing?
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: git vs mercurial

Сообщение t.t »

Да, и ещё. В противовес упоминавшемуся здесь свойству git иметь более компактные репозитории, нужно упомянуть о том, что у mercurial более компактные бандлы. Что из этих двух фактов важнее, опять-таки, каждый выбирает сам.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали: