Меркуриал
Одной вещи в меркуриале я в принципе понять не могу.
Я меняю файл А, делаю commit и push, потом я меняю дома файл Б и делаю commit, а на попытку push меня посылаютфпень делать pull/merge/commit.
Вопрос - почему бы независимые изменения в разных папках не мержить автоматом, как это сделано в svn?
PS: А теперь рассмотрим, как это положено делать:
1) дерево исходников представляет собой граф, узлы которого - каталоги и блобы с файлами, а связи - связь между каталогом и расположенными в нем подкаталогами и файлами.
2) пользователь 1 меняет файл с путем A
3) пользователь 2 меняет другой файл с путем B.
4) Друг другу они в принципе никак не мешают - структура графа не меняется, меняются два независимых узла.
5) операции коммутируют - т.е. вне зависимости от порядка применения операций, результат будет одним и тем же.
6) для коммутирующих операций merge должен делаться, очевидно, автоматически.
Я меняю файл А, делаю commit и push, потом я меняю дома файл Б и делаю commit, а на попытку push меня посылают
Вопрос - почему бы независимые изменения в разных папках не мержить автоматом, как это сделано в svn?
PS: А теперь рассмотрим, как это положено делать:
1) дерево исходников представляет собой граф, узлы которого - каталоги и блобы с файлами, а связи - связь между каталогом и расположенными в нем подкаталогами и файлами.
2) пользователь 1 меняет файл с путем A
3) пользователь 2 меняет другой файл с путем B.
4) Друг другу они в принципе никак не мешают - структура графа не меняется, меняются два независимых узла.
5) операции коммутируют - т.е. вне зависимости от порядка применения операций, результат будет одним и тем же.
6) для коммутирующих операций merge должен делаться, очевидно, автоматически.
no subject
no subject
no subject
no subject
no subject
"Q: нам надо сходить в соседнее здание за хлебушком.
A: купите самолёт, оплатите аэродромный сбор, купите топливо, прилетите в соседний город, пройдите таможню, купите там. Потом опять топливо и сбор, потом такси."
Я почему-то считаю, что в любой вменяемой системе любые типовые действия делжны делаться одним жестом и без чтения вслух уидов, гуидов, скриптов и путей.
no subject
Попробуюте сначала разбраться зачем сделано так, а не иначе. Очень помогает не писать херни.
no subject
no subject
fetch/rebase/push достаточно для обеспечения линейности истории
no subject
git pull --rebase -- эквивалент fetch rebase -- что б делать линейную историю. Если твой HEAD уже публичный и переписывать историю нельзя -- тогда merge.
no subject
no subject
И линейность истории апстрима как самоцель -- сомнительна.
no subject
В описаном ребе матакласом случае -- осмысленен ребейс, а мерж зло -- потому что будет засирать историю мерж коммитами.
Когда в проекте 10 комиттеров, а цикл сборки/тестирования занимает от силы 10 минут отребейсить на новый мастер тупо дешевле.
no subject
no subject
Зря merge бесят, однако.
no subject
фактически получается что надо заребейзиться на remote HEAD, и тогда локальные изменения допишутся "в конец" (т.е. станут straight-forward, или как их там)