metaclass: (Default)
[personal profile] metaclass
Одной вещи в меркуриале я в принципе понять не могу.
Я меняю файл А, делаю commit и push, потом я меняю дома файл Б и делаю commit, а на попытку push меня посылают фпень делать pull/merge/commit.
Вопрос - почему бы независимые изменения в разных папках не мержить автоматом, как это сделано в svn?

PS: А теперь рассмотрим, как это положено делать:
1) дерево исходников представляет собой граф, узлы которого - каталоги и блобы с файлами, а связи - связь между каталогом и расположенными в нем подкаталогами и файлами.
2) пользователь 1 меняет файл с путем A
3) пользователь 2 меняет другой файл с путем B.
4) Друг другу они в принципе никак не мешают - структура графа не меняется, меняются два независимых узла.
5) операции коммутируют - т.е. вне зависимости от порядка применения операций, результат будет одним и тем же.
6) для коммутирующих операций merge должен делаться, очевидно, автоматически.

Date: 2012-11-10 06:57 pm (UTC)
From: [identity profile] kaa-mmf.livejournal.com
м-м-м, может я чейта не понимаю, но если последний пуш был от тебя, то никаких доп. приседаний при след. пуше не надо

Date: 2012-11-10 07:10 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Пуш от меня, но с разных рабочих мест.

(no subject)

From: [identity profile] kaa-mmf.livejournal.com - Date: 2012-11-10 10:39 pm (UTC) - Expand

Date: 2012-11-10 07:04 pm (UTC)
From: [identity profile] avnik.livejournal.com
Я могу объяснить на пальцах -- почему гит тебя пошлет мержить. А тут -- хрен его знает. Корни проблемы те же я подозреваю

Date: 2012-11-10 07:11 pm (UTC)
From: [identity profile] metaclass.livejournal.com
git тоже пошлет? Как они задолбут.

(no subject)

From: [identity profile] kiryl.livejournal.com - Date: 2012-11-10 07:21 pm (UTC) - Expand

(no subject)

From: [identity profile] avnik.livejournal.com - Date: 2012-11-10 07:22 pm (UTC) - Expand

(no subject)

From: [identity profile] nivanych.livejournal.com - Date: 2012-11-10 07:46 pm (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2012-11-10 07:49 pm (UTC) - Expand

(no subject)

From: [identity profile] kiryl.livejournal.com - Date: 2012-11-10 08:01 pm (UTC) - Expand

(no subject)

From: [identity profile] nicka-startcev.livejournal.com - Date: 2012-11-10 08:21 pm (UTC) - Expand

(no subject)

From: [identity profile] kiryl.livejournal.com - Date: 2012-11-10 08:22 pm (UTC) - Expand

(no subject)

From: [identity profile] nicka-startcev.livejournal.com - Date: 2012-11-10 08:35 pm (UTC) - Expand

(no subject)

From: [identity profile] kiryl.livejournal.com - Date: 2012-11-10 08:39 pm (UTC) - Expand

(no subject)

From: [identity profile] cottidianus.livejournal.com - Date: 2012-11-11 12:42 am (UTC) - Expand

(no subject)

From: [identity profile] avnik.livejournal.com - Date: 2012-11-10 08:28 pm (UTC) - Expand

(no subject)

From: [identity profile] kiryl.livejournal.com - Date: 2012-11-10 08:31 pm (UTC) - Expand

(no subject)

From: [identity profile] avnik.livejournal.com - Date: 2012-11-10 08:41 pm (UTC) - Expand

(no subject)

From: [identity profile] kiryl.livejournal.com - Date: 2012-11-10 08:50 pm (UTC) - Expand

(no subject)

From: [identity profile] avnik.livejournal.com - Date: 2012-11-10 08:59 pm (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2012-11-11 07:50 am (UTC) - Expand

(no subject)

From: [identity profile] gds.livejournal.com - Date: 2012-11-11 07:57 am (UTC) - Expand

(no subject)

From: [identity profile] vaddimka.livejournal.com - Date: 2012-11-11 07:44 am (UTC) - Expand

Date: 2012-11-11 05:27 am (UTC)
From: [identity profile] juan-gandhi.livejournal.com
Можно и мне на пальцах?

А то я коммит-пуш только так делаю; а пулл-ребейс по настроению.

Date: 2012-11-10 08:21 pm (UTC)
From: [identity profile] kiryl.livejournal.com
> PS: А теперь рассмотрим, как это положено делать:

Ты упускаешь важную часть графа. Про mercurial не скажу, в git оно выглядит так: есть четыре вида объектов: blob, tree, commit, tag. Все объекты адресуются по содержимому -- хэш от содержимого.

Что содежит blob понятно. tree -- список ссылок на blob'ы и другие деревья. Таким образом строится иерархия. commit -- ссылка на корневое дерево проекта, commit message + нуль или более ссылок на parent commit (больше 1 для merge commit). tag -- ссылка любой объект, чаще всего commit.

Из вышесказанного очевидно, что изменение одного blob'а повлечёт к изменению всех объектов выше по стеку: blob -> tree -> commit -> tag.

Т.е. операции не коммутирующие. И это сделано намеряно. Для distributed scm критически важно лёгкое отслеживание целостности, дабы избежать code injection и прочие проблемы с безопастностью.

Date: 2012-11-10 08:35 pm (UTC)
From: [identity profile] avnik.livejournal.com
Ребе упускает из вида, что у нас есть еще C -- сервер.

4/5 - ломает, ломает порядок коммитов: будет ломать ребейс. Будет появляться лишний merge сщььше на C которого нет ни на A ни на B

(no subject)

From: [identity profile] kiryl.livejournal.com - Date: 2012-11-10 08:36 pm (UTC) - Expand

Date: 2012-11-10 08:39 pm (UTC)
From: [identity profile] voidex.livejournal.com
Не должен. Если A' + B работает, и A + B' работает, не значит, что A' + B' будет тоже работать, пусть программист об этом знает и ручается.
Смержит он сам, достаточно pull+push.

Date: 2012-11-11 05:31 am (UTC)

Date: 2012-11-10 09:27 pm (UTC)
From: [identity profile] max630.livejournal.com
бгг

Обычно это делается так: пользователь A заводит merge request, потом пользователь B делает review изменений и заставляет A исправить ошибки. Потом специальный человек, когда у него дойдут руки (примерно раз в несколько дней), собирает эти реквесты и мержит (или ребейзит) их в мастер, при необходимости дёргая A чтобы он поправил конфликт.

А вы, ну я не знаю, смиритесь наверное. Или наколхозьте автомержилку на сервере.

Date: 2012-11-10 09:46 pm (UTC)
From: [identity profile] djuffin.livejournal.com
Чтобы программист знал, что были изменения и деклорация метода который он вызвает была удален из совершенно независимого файла.

Date: 2012-11-13 05:40 pm (UTC)
From: [identity profile] anatoly borodin (from livejournal.com)
Дадад. «Мы тут только в нашей папке меняли» — а ничего, что при этом сломали 5 модулей в других папках?

Свнщики, мать их так…
Edited Date: 2012-11-13 05:41 pm (UTC)

(no subject)

From: [identity profile] http://users.livejournal.com/_windwalker_/ - Date: 2012-11-17 08:43 pm (UTC) - Expand

Date: 2012-11-11 02:34 am (UTC)
From: [identity profile] berezovsky.livejournal.com
Ну это ты знаешь, что они независимые. А он не знает.
Пришёл домой, сделал пул, вспомнил, что во второй папке написал херню, поправил и запушил всё сразу.
Я так понимаю.

Date: 2012-11-11 02:43 am (UTC)
From: [identity profile] gds.livejournal.com
> а на попытку push меня посылают делать pull/merge/commit.

не обязательно. hg push -f не посылает. Очень полезно в случаях, когда мержить должен не тот, кто пушит.
Кроме того, вроде где-то видел хрень (то ли настройка, то ли расширение), которое то ли команду добавляет, то ли опцию к push, вызывающую автоматический pull + merge + commit + push, или же rebase, не помню. (кстати, "hg rebase" таки существует.)

Остальное сказали.

Ну и да, merge сделается почти автоматически -- без конфликтов.

Date: 2012-11-11 06:59 am (UTC)
From: [identity profile] vp.livejournal.com
Почитал комменты и ничего не понял, что делать.

Date: 2012-11-11 07:32 am (UTC)
From: [identity profile] jek-hor.livejournal.com
Мержить самостоятельно. Как выше правильно написали, только человек может гарантировать целостность кода, даже если он в разных директориях менялся в каждом коммите.

(no subject)

From: [identity profile] http://users.livejournal.com/_windwalker_/ - Date: 2012-11-17 08:45 pm (UTC) - Expand

(no subject)

From: [identity profile] jek-hor.livejournal.com - Date: 2012-11-18 08:44 am (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2012-11-18 08:51 am (UTC) - Expand

(no subject)

From: [identity profile] jek-hor.livejournal.com - Date: 2012-11-18 08:55 am (UTC) - Expand

(no subject)

From: [identity profile] http://users.livejournal.com/_windwalker_/ - Date: 2012-11-18 11:16 am (UTC) - Expand

Date: 2012-11-11 08:00 am (UTC)
From: [identity profile] metaclass.livejournal.com
расширение hg fetch
оно при неконфликтующих коммитах автоматический мердж будет делать.

(no subject)

From: [identity profile] max630.livejournal.com - Date: 2012-11-11 05:28 pm (UTC) - Expand

(no subject)

From: [identity profile] dmzlj.livejournal.com - Date: 2012-11-11 05:28 pm (UTC) - Expand

(no subject)

From: [identity profile] vp.livejournal.com - Date: 2012-11-11 06:57 pm (UTC) - Expand

(no subject)

From: [identity profile] kiryl.livejournal.com - Date: 2012-11-11 07:44 pm (UTC) - Expand

(no subject)

From: [identity profile] dmzlj.livejournal.com - Date: 2012-11-12 04:09 am (UTC) - Expand

(no subject)

From: [identity profile] thinker8086.livejournal.com - Date: 2012-11-13 12:37 am (UTC) - Expand

Date: 2012-11-11 07:43 am (UTC)
From: [identity profile] x-den.livejournal.com
если проблема в лишних движениях, то поможет hg fetch (FetchExtension), он pull/merge/commit делает автоматически, и если нет конфликтов, то вмешательства в это дело не требуется.

оопс, его уже выше успели предложить.
Edited Date: 2012-11-11 07:44 am (UTC)

Date: 2012-11-11 10:18 am (UTC)
From: [identity profile] vit-r.livejournal.com
Друг другу они в принципе никак не мешают

Это не факт.

Date: 2012-11-11 10:22 am (UTC)
From: [identity profile] zamotivator.livejournal.com
Плохая идея. Изменения могут быть в разных файлах, а результатом автоматического мёржа - неработающая программа.

Правильный подход либо mercurial - держать два head, либо git - запрещать push с outdated head

Date: 2012-11-11 10:45 am (UTC)
From: [identity profile] insanegigolo.livejournal.com
разве за неработающую программу не должна отвечать билд система, а не система контроля версий?

(no subject)

From: [identity profile] zamotivator.livejournal.com - Date: 2012-11-11 10:47 am (UTC) - Expand

(no subject)

From: [identity profile] insanegigolo.livejournal.com - Date: 2012-11-11 10:49 am (UTC) - Expand

(no subject)

From: [identity profile] zamotivator.livejournal.com - Date: 2012-11-11 10:52 am (UTC) - Expand

(no subject)

From: [identity profile] insanegigolo.livejournal.com - Date: 2012-11-11 11:05 am (UTC) - Expand

(no subject)

From: [identity profile] zamotivator.livejournal.com - Date: 2012-11-11 11:07 am (UTC) - Expand

(no subject)

From: [identity profile] insanegigolo.livejournal.com - Date: 2012-11-11 11:11 am (UTC) - Expand

(no subject)

From: [identity profile] zamotivator.livejournal.com - Date: 2012-11-11 11:14 am (UTC) - Expand

(no subject)

From: [identity profile] insanegigolo.livejournal.com - Date: 2012-11-11 11:17 am (UTC) - Expand

(no subject)

From: [identity profile] zamotivator.livejournal.com - Date: 2012-11-11 11:20 am (UTC) - Expand

(no subject)

From: [identity profile] insanegigolo.livejournal.com - Date: 2012-11-11 11:27 am (UTC) - Expand

(no subject)

From: [identity profile] zamotivator.livejournal.com - Date: 2012-11-11 11:29 am (UTC) - Expand

(no subject)

From: [identity profile] insanegigolo.livejournal.com - Date: 2012-11-11 11:31 am (UTC) - Expand

(no subject)

From: [identity profile] zamotivator.livejournal.com - Date: 2012-11-11 11:32 am (UTC) - Expand

(no subject)

From: [identity profile] insanegigolo.livejournal.com - Date: 2012-11-11 11:33 am (UTC) - Expand

(no subject)

From: [identity profile] zamotivator.livejournal.com - Date: 2012-11-11 11:34 am (UTC) - Expand

(no subject)

From: [identity profile] thinker8086.livejournal.com - Date: 2012-11-13 12:39 am (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2012-11-11 10:56 am (UTC) - Expand

(no subject)

From: [identity profile] zamotivator.livejournal.com - Date: 2012-11-11 10:57 am (UTC) - Expand

(no subject)

From: [identity profile] gds.livejournal.com - Date: 2012-11-11 11:06 am (UTC) - Expand

Date: 2012-11-11 10:55 am (UTC)
From: [identity profile] levgem.livejournal.com
Это нормально.

Изменения в коммите 1 могут быть идеологически конфликтными с изменениями в коммите 2, даже если они совершенно разные вещи затрагивают.
Поэтому перед пушем коммита 2 надо сделать проверку.

Date: 2012-11-11 04:43 pm (UTC)
From: [identity profile] dmzlj.livejournal.com
а пулл сначала на второе рабочее место не судьба сделать? локальные ревизии то разъехались, очевидно

Date: 2012-11-11 04:48 pm (UTC)
From: [identity profile] dmzlj.livejournal.com
вы тут точно не обкурились все? есть стандартный workflow, который делает то, что нужно, и покрывает 90% случаев.

pull - update - commit - push. с любого рабочего места. всё. какие еще файлы? какая коммутация-мастурбация? вы чего тут?

Date: 2012-11-11 05:05 pm (UTC)
From: [identity profile] berezovsky.livejournal.com
Ситуации разные бывают. Например, сидишь в аэропорту через узкий канал какого-нибудь опсоса. Зачем тянуть пулом кучу всякого дерьмища и тратить трафик? Вот метакласс и хочет запушить один файлик и всё.

(no subject)

From: [identity profile] dmzlj.livejournal.com - Date: 2012-11-11 05:09 pm (UTC) - Expand

(no subject)

From: [identity profile] berezovsky.livejournal.com - Date: 2012-11-11 05:13 pm (UTC) - Expand

(no subject)

From: [identity profile] dmzlj.livejournal.com - Date: 2012-11-11 05:13 pm (UTC) - Expand

(no subject)

From: [identity profile] berezovsky.livejournal.com - Date: 2012-11-11 05:19 pm (UTC) - Expand

(no subject)

From: [identity profile] ykaliuta.livejournal.com - Date: 2012-11-11 05:21 pm (UTC) - Expand

(no subject)

From: [identity profile] dmzlj.livejournal.com - Date: 2012-11-11 05:23 pm (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2012-11-11 05:34 pm (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2012-11-11 05:24 pm (UTC) - Expand

(no subject)

From: [identity profile] dmzlj.livejournal.com - Date: 2012-11-11 05:10 pm (UTC) - Expand

Date: 2012-11-11 05:40 pm (UTC)
From: [identity profile] http://users.livejournal.com/_slw/
ну так и используй svn

Date: 2012-11-11 06:49 pm (UTC)

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 22nd, 2025 03:13 pm
Powered by Dreamwidth Studios