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 07:49 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Ясно, в коммутирующие операции разработчики DSCM не умеют.

Date: 2012-11-10 08:01 pm (UTC)
From: [identity profile] kiryl.livejournal.com
git pull --rebase на втором спасает. оно перепишет тебе локальную историю поместив твои коммиты на последний коммит откуда пуллишь. Переписывать историю не стоит, если твой репозиторий публичный. Тогда нужно fetch, merge, push.

Date: 2012-11-10 08:22 pm (UTC)
From: [identity profile] kiryl.livejournal.com
содержательный ответ, да.

Date: 2012-11-10 08:35 pm (UTC)
From: [identity profile] nicka-startcev.livejournal.com
ну, эта,
"Q: нам надо сходить в соседнее здание за хлебушком.
A: купите самолёт, оплатите аэродромный сбор, купите топливо, прилетите в соседний город, пройдите таможню, купите там. Потом опять топливо и сбор, потом такси."

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

Date: 2012-11-10 08:39 pm (UTC)
From: [identity profile] kiryl.livejournal.com
Свинья в апельсинах. Очень правильный аватар.

Попробуюте сначала разбраться зачем сделано так, а не иначе. Очень помогает не писать херни.

Date: 2012-11-11 12:42 am (UTC)
From: [identity profile] cottidianus.livejournal.com
браво

Date: 2012-11-10 08:28 pm (UTC)
From: [identity profile] avnik.livejournal.com
не надо merge
fetch/rebase/push достаточно для обеспечения линейности истории

Date: 2012-11-10 08:31 pm (UTC)
From: [identity profile] kiryl.livejournal.com
Перечитайте ещё раз.
git pull --rebase -- эквивалент fetch rebase -- что б делать линейную историю. Если твой HEAD уже публичный и переписывать историю нельзя -- тогда merge.
Edited Date: 2012-11-10 08:35 pm (UTC)

Date: 2012-11-10 08:41 pm (UTC)
From: [identity profile] avnik.livejournal.com
HEAD публичного ребейсить нельзя да, но свои ветки ребейсить к публичному мастеру можно и нужно. В большинстве проектов где я что-то коммичу, запрещено пушить merge коммиты, они нарушают линейность истории. (исключения есть -- это как правило форки чужих проектов, и merge с апстримом фиксируется в истории)

Date: 2012-11-10 08:50 pm (UTC)
From: [identity profile] kiryl.livejournal.com
Линус требует противоположного от submainter'ов со следующей мотивацией: если у твое topic-дерево отребэйжено на дерево которое опубликовали 20 минут назад, то ты его нихера не тестировал и оно, возможно, вообще не собирается (были случаи). В merge window для v3.7 посылают деревья которые растут от кого-нить v3.6-rc2.
И линейность истории апстрима как самоцель -- сомнительна.

Date: 2012-11-10 08:59 pm (UTC)
From: [identity profile] avnik.livejournal.com
в описаном тобой случае -- merge осмысленен.
В описаном ребе матакласом случае -- осмысленен ребейс, а мерж зло -- потому что будет засирать историю мерж коммитами.
Когда в проекте 10 комиттеров, а цикл сборки/тестирования занимает от силы 10 минут отребейсить на новый мастер тупо дешевле.

Date: 2012-11-11 07:50 am (UTC)
From: [identity profile] metaclass.livejournal.com
Интересно, умеет ли rebase меркуриал. Потому что меня слом линейности и merge коммиты бесят больше, чем необходимость этот merge делать.

Date: 2012-11-11 07:57 am (UTC)
From: [identity profile] gds.livejournal.com
умеет.
Зря merge бесят, однако.

Date: 2012-11-11 07:44 am (UTC)
From: [identity profile] vaddimka.livejournal.com
там таки есть какая-то черная магия, если хочется чтобы изменения были видны в том же гиториусе не как мержи, а именно как коммиты
фактически получается что надо заребейзиться на remote HEAD, и тогда локальные изменения допишутся "в конец" (т.е. станут straight-forward, или как их там)

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. 30th, 2025 01:07 am
Powered by Dreamwidth Studios