Из-за модулей пришлось в режиме C++20 пришлось переделать препроцессор и запретить различный неверный код. Поэтому в плане поддержки стало гораздо лучше. Багов конечно полно но уже других.
Из недавнего перестал собираться код, которого полно в проекте вида:
Это вы описываете случай когда нам нужны все 10 коммитов в истории.
Я как раз на основе опыта утверждаю, что практически никогда из одного пулл реквеста у нас нет необходимости получать 10 коммитов, а хотим только один.
В мастере происходят различные изменения приводящие к конфликтам.
Теперь вопрос как мы решаем конфликты
Одним вариантом будет ребейс поверх мастера. В этом случае у нас потенциально может быть конфликт на каждый наш коммит. Это легко приводит к сложностям и к тому, что не все наши коммиты даже компилируются.
Вариант другой, слиянием с мастером. Но тогда у нас получается лишний 11-й коммит слияния , который нам совсем не нужен.
Далее после проверок в нас снова слияние и получаем месиво в истории.
А можно пойти простым путём, у нас хоть 100 коммитов, хоть 20 раз слияний из мастера или из любый других веток. После код ревью мы производим слияние со схлопыванием и получаем всего 1 коммит который добавляется в мастер.
Каждый может решать это как-угодно , соц тезис в том, что скорее всего мы хотим простого решения и пока я не видел за десяток лет необходимости в усложнении.
Практически в 99,9% случаев люди хотят получить один коммит на один пулл реквест.
А если это не так, то ,зачастую, это значит у нас слишком большой пулл реквест.
Это не догма, а то, что подходит для подавляющего большинства изменений.
Бывают случаи когда мы хотим более одного коммита получить, тут нет проблем, не схлопываем и сами решаем проблемы ребейсов и конфликтов. Но этот случай когда люди понимают как правильно работать с гитом.
По опыту скажу, что даже люди с большим стажем работы не всегда разбираются.
Современные среды разработок имеют локальную историю. Таким образом можно вернуться назад даже если не коммитил ничего. Одно не заменяет другое, но очень помогает в разных случаях.
Когда панель задач разрешат двигать обратно?
Поломать поломали, а чинить не хотят.
Оффтопик конечно.
Но эта неразбериха с тулбоксом каждый раз достаёт. Часть программ в одной директории, а часть чёрт знает где.
Почему тулбокс не мог бы просто устанавливать в обычном режиме.
Из-за модулей пришлось в режиме C++20 пришлось переделать препроцессор и запретить различный неверный код. Поэтому в плане поддержки стало гораздо лучше. Багов конечно полно но уже других.
Из недавнего перестал собираться код, которого полно в проекте вида:
class A{ void A::f(); };
Вы о том, что можно сделать только концептами но нельзя по другому ?
В принципе всё можно и без них, но иногда это так сложно, что проще даже не браться.
Скажем, std::ranges полноценно без концептов сделать было слишком сложно.
Код с requires и concept можно заменить на enable_if , но иногда выходит слишком длинная писанина в которой легко ошибиться.
Банальный пример enable_if<is_same_v<T,int> && is_same<U, int>_v>
Легко забыть, что надо писать на самом деле enable_if<conjunction_v<is_same_v<T,int>, is_same<U, int>_v>>
В концептах мы просто можем писать обычно concept A = same_as<T,int> && same_as<U, int>.
Добавлю, что C++20 это не только концепты.
Про концепты советую почитать блог
https://akrzemi1.wordpress.com/2021/06/03/decent-concepts/
Там узнаете почему A&&B это хорошо , а A||B делать не надо.
Ну и в концептах A&&B означает совсем не то же самое что а шаблонах A&&B.
Скорее всего, что C++20 в MSVC просто теперь требует код совместимый со стандартом.
По этой причине многие проекты не переходят.
Конечно. А использовать ваши же данные сможете всего 60 раз в месяц;)
Можно поотключать
https://support.microsoft.com/ru-ru/office/copilot-в-приложениях-microsoft-365-для-дома-ваши-данные-и-конфиденциальность-6f0d8d80-f4bb-4c9f-989e-64a4adfd62e5#bkmk_settings
Но тут надо следить, чтобы каждый раз отключать новые галочки, как уже произошло с LinkedIn.
Их в то числе и имел ввиду. Только обратил внимание на дату, 12 лет прошло, а мы до сих пор обсуждаем ребейс или не ребейс :D
Я уже думал, что я один такой.
А то люди не понимают почему слияние ребейсом нескольких комиков чревато.
Так я и не утверждаю, что одно заменяет другое.
А зачем amend. Лучше обычный коммит, чтобы не терять историю изменений.
Только когда уже надо внести в мастер то там либо squash merge делают системы вроде GitHub или можно вручную если есть желание или необходимость.
git fetch origin/master && git merge origin/master && git reset —mixed origin/master && git commit -a -m “The commit message”
Я про squash merge
Поэтому я и не советую делать ребейс вообще, а только слияние.
Это и не теряет историю и упрощает работу.
Это вы описываете случай когда нам нужны все 10 коммитов в истории.
Я как раз на основе опыта утверждаю, что практически никогда из одного пулл реквеста у нас нет необходимости получать 10 коммитов, а хотим только один.
Положим мы имеем в ветке 10 коммитов.
В мастере происходят различные изменения приводящие к конфликтам.
Теперь вопрос как мы решаем конфликты
Одним вариантом будет ребейс поверх мастера. В этом случае у нас потенциально может быть конфликт на каждый наш коммит. Это легко приводит к сложностям и к тому, что не все наши коммиты даже компилируются.
Вариант другой, слиянием с мастером. Но тогда у нас получается лишний 11-й коммит слияния , который нам совсем не нужен.
Далее после проверок в нас снова слияние и получаем месиво в истории.
А можно пойти простым путём, у нас хоть 100 коммитов, хоть 20 раз слияний из мастера или из любый других веток. После код ревью мы производим слияние со схлопыванием и получаем всего 1 коммит который добавляется в мастер.
Каждый может решать это как-угодно , соц тезис в том, что скорее всего мы хотим простого решения и пока я не видел за десяток лет необходимости в усложнении.
А где вы увидели ограничения?
Практически в 99,9% случаев люди хотят получить один коммит на один пулл реквест.
А если это не так, то ,зачастую, это значит у нас слишком большой пулл реквест.
Это не догма, а то, что подходит для подавляющего большинства изменений.
Бывают случаи когда мы хотим более одного коммита получить, тут нет проблем, не схлопываем и сами решаем проблемы ребейсов и конфликтов. Но этот случай когда люди понимают как правильно работать с гитом.
По опыту скажу, что даже люди с большим стажем работы не всегда разбираются.
Я приучаю людей к схлопыванию коммитов.
Всё равно в итоге наша единица это пулл реквест.
А схлопывание упрощает работу простыми слияниями с мастером и без сложностей ребейса.
Современные среды разработок имеют локальную историю. Таким образом можно вернуться назад даже если не коммитил ничего. Одно не заменяет другое, но очень помогает в разных случаях.
В Маке можно назначить на Cals Lock комбинацию Hyper Key(ctrl+shift+cmd+opt) и будет полезной клавишей https://docs.folivora.ai/docs/1004_hyper_key.html
А на такое лично не нарывался. Может уже это порешали до меня.
Есть примеры таких несовместимостей ?
Контейнер у нас создаётся в системе с ядром 5, бежит локально на ядре 6, а ещё и в системах с ядром 3.
Веселья хватает на каждый день.