LINUX.ORG.RU

Mergiraf — новый движок разрешения конфликтов в коде

 , , ,


1

4

Mergiraf – новый движок для git merge, учитывающий синтаксис языков программирования и позволяющий в автоматической режиме решать конфликты, например, в случаях, где изменения в одной строчке производятся над независимыми синтаксическими элементами или где порядок изменений не играет роли. Список поддерживаемых языков программирования и форматов данных весьма обширен. Для работы с исходным кодом используется библиотека Tree-sitter, что также позволяет легко добавлять поддержку новых языков при наличии парсера для TS.

Сам Mergiraf написан на языке Rust, исходный код опубликован на условиях GNU GPL 3.

>>> Документация по использованию

>>> Исходный код

★★★★★

Проверено: hobbit ()
Последнее исправление: unfo (всего исправлений: 6)

Tree-sitter — это хорошо, руст — это плохо. Вывод — НИНУЖНО.

gns ★★★★★
()

Документация по использованию

Пипец, если смотреть комикс из этой «Документации по использованию». То лучше по старинке, ручками слияние делать.

AlexVR ★★★★★
()
Ответ на: комментарий от AlexVR

Пипец, если смотреть комикс из этой «Документации по использованию». То лучше по старинке, ручками слияние делать.

В комиксах показано, что слияние сработало автоматически, а потом показывается ручное ревью результатов.

Т.е. самое сложное - разрешение конфликтов - произошло автоматически.

Я заинтересован, надо будет попробовать. Потому что конфликты меня просто убивают. Иногда есть необходимость в долгоживущих ветках. Например, обновление проекта, который долго не обновлялся. Все зависимости разом не обновишь, приходится делать это урывками и подолгу, в то же время, не забывая про текущую поддержку и бизнес-задачи. И в параллельной ветке постоянно решать конфликты, потому что всё время расходится с основной.

Если оно эту проблему позволяет решать хотя бы на 10% эффективнее, то это уже прорыв. Решение merge конфликтов для меня - пытка.

Chiffchaff
()
Ответ на: комментарий от mx__

Видать не особо нужно. Разрешение конфликтов у гита и правда иногда странное. SVN, бывало, лучше справлялся.

gns ★★★★★
()
Ответ на: комментарий от mx__

А вот если git без перла не может, почему они не поюзали обвязку к ts из того же перла?

Tree-sitter - построение деревьев

Mergiraf - слияние деревьев

Плюс: Mergiraf - отдельная утилита

AlexVR ★★★★★
()
Ответ на: комментарий от gns

Вот ещё по языку оценивать софт. Ладно когда на ноде десктопный софт, там ещё можно понять отрицание - такой софт прожорливый? Можно понять отрицание, когда на раст переписывание ради переписывания. Но тут то что не так?

Loki13 ★★★★★
()
Последнее исправление: Loki13 (всего исправлений: 1)
Ответ на: комментарий от Loki13

Лучше всего отношение к Расту сформулировал друг мой старый Croco. Я много в чём с ним не согласен, но в этом он прав:

No Rust 'Programming Language'

The single exception mentioned in the preamble appears to be the Rust language. No explanation will ever be provided on why we deliberately and permanently prohibit this bastard for any possible uses, as well as boycott everybody who make public statements Rust is (or even may be) somehow useful. Rust community is a dangerous sect, and like all sectarians, rusters love to argue. No guys, we won't feed your hunger for arguments, and won't waste our time entertaining you with any discussions. You did too much harm to the civilization already, and you're going to do much more of it. We won't help you. 

Отсюда — http://www.rebuildworld.net/taboo/#rust_lang

gns ★★★★★
()
Ответ на: комментарий от gns

друг мой старый

Это тот кто заюзал лор только (больше нет сообщений) для рекламы своих книжек? Или я путаю?

mx__ ★★★★★
()
Ответ на: комментарий от mx__

Насколько я помню, его книжки рекламировали другие люди. Сам он если и писал что-то на эту тему, то очень давно. Ему и так хватает рекламы.

gns ★★★★★
()
Ответ на: комментарий от MoldAndLimeHoney

Аргументы такие: растеры — политико-ориентировнные хайпожоры, пытающиеся жить на государственные гранты, порожденные меморандумами разведок о том, что утечки памяти — страшное зло. Ну и примкнувшие к ним остальные. Не стоит помогать им жить.

gns ★★★★★
()
Ответ на: комментарий от gns

В профиле не написано, а отмечено что он создал всего 4 новости и все - реклама книжек.

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

mx__ ★★★★★
()

А кто-то пробовал его в работе? Часто в своей работе сталкиваюсь с конфликтами в пул реквестах, и всегда правлю руками. Даже в голову не приходило заюзать либу. Выглядит так, что для этого ещё можно LLM заюзать, например, в CI/CD.

nuxster ★★★★
()
Ответ на: комментарий от mx__

В смысле юзается без гита?

И так и так. Ты можешь юзать его отдельно, а можешь прописать вызов в конфиг гита.

hateyoufeel ★★★★★
() автор топика
Ответ на: комментарий от gns

Ерунда полная. Rust появился на основе научной работы: как решить один конкретный класс ошибок в программах. Ну да, он не решает все проблемы, но хотя бы по этому параметру он превосходит остальные.

То, что его продвигают с большим энтузиазмом… Ну а разве так не происходило с любым языком программирования? У каждого языка есть фанаты, и они порой неадекватны. Даже у вонючей какашки PHP есть фанатики, которые с пеной у рта будут защищать его, включая даже откровенные антипаттерны, с которого PHP начался и благодаря которым популярен даже сейчас, типа мешанины из кода и HTML, которая в принципе не является хорошим подходом ни для чего.

Chiffchaff
()
Ответ на: комментарий от nuxster

Часто в своей работе сталкиваюсь с конфликтами в пул реквестах, и всегда правлю руками.

Руками совсем грустно, особенно, когда 50+ конфликтов в файле и 20+ файлов. Мне больше всего vsdiffmerge(ага, на работе я программирую для офтопика, за это деньги платят) нравится, хотя описание сабжа звучит(может только звучит) даже лучше.

Loki13 ★★★★★
()
Ответ на: комментарий от gns

Так-то раст мне тоже не нравится. Но не из-за этого, а потому что синтаксис упоротый и вырвиглазный. А так, если кто-то от этого не страдает, то пусть пишет на чем угодно.

Loki13 ★★★★★
()
Ответ на: комментарий от Loki13

Для оффтопика и для онтопика хорошо заходит Beyond Compare

gns ★★★★★
()
Ответ на: комментарий от gns

Ахахах, какой же фрик! :D Всё, что есть на сайте проекта - это огроменный перечень луддитских табу.

Manhunt ★★★★★
()
Ответ на: комментарий от gns

Это уже давно обсуждено и даже тут раза три. Не интересно повторяться.

Кто родился в прошлом веке, помнит, например, какой мощный фанатизм был в 1996-1997 года с Java. Только в том случае, он достоверно был проплачен компанией Sun. Они этого даже не скрывали. Тоже постулировалось, что у вас есть новый безопасный язык (не машинный код, т.е. SIGSEGV невозможен, checked exceptions и не помню что ещё продавалось, как достоинства).

Только вот не помню такого мощного сопротивления Java и фанатиков, которые шли бы в крестовые походы против Java, наоборот. Хотя если вспомнить ту Java, которая была в 90-е, то это просто слёзы. Начиная с того, что GC был настолько беспомощен, что любые приложения дико лагали раз в несколько секунд, интерактивная работа была больше похожа на пытку.

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

На Go, скажем, тоже дофига чего переписывают. Есть куча утилит на Go, являющихся аналогами C-шных утилит. Тоже не вижу плача из-за этого. Один Rust плохой почему-то.

Chiffchaff
()
Ответ на: комментарий от Chiffchaff

Дело не в переписывании …

Есть куча утилит на Go, являющихся аналогами C-шных утилит.

И каких если не секрет? Типа fzf аналог find ;)

mx__ ★★★★★
()
Ответ на: комментарий от Chiffchaff

Один Rust плохой почему-то.

Потому что внезапно выяснилось, что десятилетиями несколько поколений сишников пердолились и рвали себе очко по чём зря и что можно было без этого. Но очко уже порвано, обратно не зашить. Остаётся только шипеть на новые поколения программистов, которым повезёт избежать очкоразрывающего пердолинга с сишечкой.

hateyoufeel ★★★★★
() автор топика
Ответ на: комментарий от Chiffchaff

Один Rust плохой почему-то.

Потому что с точки зрения сишников остальные языки не конкуренты в производительности и контроле: жаба очевидно тормозная, го тоже с gc, непопулярные языки и так интереса и дискуссии не вызывают. Но вот на сцену врывается раст: быстрый, без gc, но с надёжной работой с памятью, наглядно показывающий просчёты проектирования си и цпп с их UB в каждой строчке. Естественно, от такого перформанса срывает крышу людям, которые молятся на си, а их идол оказался под объективной суровой критикой. Изучить раст, понять его преимущества на деле и сделать очевидное решение использовать язык мешает религиозность и отсутствие инженерного мышления, остаётся идти в крестовые походы.

unC0Rr ★★★★★
()
Ответ на: комментарий от mx__

Плюс: Mergiraf - отдельная утилита

В смысле юзается без гита?

В прямом. И причём тут без гита? Это утилита. Можешь её использовать, когда не получилось слияние (с.м. Документация по использованию), можешь зарегистрировать как утилиту для автоматического слияния самим гитом. Гит не монолит.

AlexVR ★★★★★
()
Ответ на: комментарий от AlexVR

Это утилита.

Чел написал что это ОТДЕЛЬНАЯ утилита. Т.е. слияние без каких либо систем типа git и т.д.

mx__ ★★★★★
()
Ответ на: комментарий от Chiffchaff

Один Rust плохой почему-то.

Потому что:

  • Синтаксис выглядит и работает как говно.
  • Cargo - это антипаттерн, на который дрочат толпы хомячков.
  • В результате сборки под получаются огромные бинари.
  • В динамическую линковку Раст не умеет.

Как видно, ничего из этого к системе типов не относится.

С аффинными типами было много экспериментальных языков, но в итоге как обычно корпорасты продвинули самое говно.

На Go, скажем, тоже дофига чего переписывают. Есть куча утилит на Go, являющихся аналогами C-шных утилит.

Обычно на Go пишут весьма годный и самостоятельный софт, а не переписывают рандомный кусок программного стека. Новостями «X, Y, Z переписывают на Раст» уже достаточно подзадолбали.

Раньше было в моде писать свой плеер на Питоне, теперь в моде писать на Расте «лудшый find».

wandrien ★★★
()
Последнее исправление: wandrien (всего исправлений: 1)
Ответ на: комментарий от unC0Rr

Изучить раст, понять его преимущества на деле и сделать очевидное решение использовать язык мешает религиозность и отсутствие инженерного мышления, остаётся идти в крестовые походы.

Да пусть хоть все молодые разрабы уйдут в раст. Мне даже лучше, ибо легаси сишноплюсового на мой век точно хватит(а молодежь отбирать не будет вакансии у меня, старпёра) на хлеб с маслом и икрой даже может.

Loki13 ★★★★★
()
Ответ на: комментарий от Loki13

Не, понятно, что легаси полно и работать с ним тоже нужно. Но можно же принять факт, что раст лучше си/цпп, и спокойно продолжать работать на этих языках.

unC0Rr ★★★★★
()
Ответ на: комментарий от Chiffchaff

Проблема и феномен раста как раз в том, что у раста есть только и исключительно «фанатики, которые с пеной у рта будут защищать его, включая даже откровенные антипаттерны». Более того, они будут бегать по всему интернету и копировать слоганы из своих маркетинговых методичек вне зависимости от релевантности.

Подавляющее большинство использующих тот или иной ЯП не имеют проблем с тем, чтобы сказать что-то типа «ЯП который я использую не фонтан, но для моих целей годится». Часто и «похапе говно, конечно, но вот для этого и этого годится», или там «сишечка - байтодрочерство, но ничего лучше для моих задач не придумали». Растаман же никогда и нигде не сможет публично признаться в том, что раст - говно. Не потому что раст не является говном, а потому что упоротый сектант.

Stanson ★★★★★
()
Ответ на: комментарий от wandrien

Как видно, ничего из этого к системе типов не относится.

Как и к языку (ну, кроме первого субъективного пункта). Относится к компилятору.

unC0Rr ★★★★★
()
Ответ на: комментарий от unC0Rr

Блин, когда же вам новые методички выдадут уже? Сначала эти ваши дебильные сказки были даже смешны, а сейчас ничего кроме отвращения не вызывают.

Stanson ★★★★★
()

исходный код опубликован GNU GPL 3.

Исходный код опубликован под лицензией GNU GPL 3.

@hobbit поправь, пожалуйста.

hateyoufeel ★★★★★
() автор топика
Ответ на: комментарий от Stanson

Подавляющее большинство использующих тот или иной ЯП не имеют проблем с тем, чтобы сказать что-то типа «ЯП который я использую не фонтан, но для моих целей годится». Часто и «похапе говно, конечно, но вот для этого и этого годится», или там «сишечка - байтодрочерство, но ничего лучше для моих задач не придумали».

Ну в общем так и есть, чем лучше с инструментом знаком, тем лучше понимаешь его ограничения.

Да и тот же PHP, например. Мне тут потребовалось одну микротулзу, написанную на PHP, запустить. Скачал 70 килобайт кода, запустил, работает. Написана в черт знает какие времена, работает прямо сейчас.

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

Если бы аналог был написан на Расте, я бы выбрал его или PHP? Конечно, PHP. Зачем париться с компилятором, если можно не париться.

Но если кто-то скажет, что на PHP пишет DE, я покручу пальцем у виска.

wandrien ★★★
()
Ответ на: комментарий от wandrien

Если бы не их дебилизм с зависающим навечно «making sure you are not a bot…» с фуррей, то я может и согласился бы насчёт «приятного оформления».

А так - codeberg является просто неработающим говном.

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

ничего кроме отвращения не вызывают

Ты свои комментарии-то читал? Плюёшься ядом направо-налево без единого аргумента. Вот уж что «ничего кроме отвращения не вызывают».

unC0Rr ★★★★★
()
Ответ на: комментарий от hateyoufeel

Один Rust плохой почему-то.

Потому что внезапно выяснилось (ссылка на топик «На самом деле, UB оказалось не нужно»), что десятилетиями несколько поколений сишников пердолились и рвали себе очко по чём зря и что можно было без этого. Но очко уже порвано, обратно не зашить. Остаётся только шипеть на новые поколения программистов, которым повезёт избежать очкоразрывающего пердолинга с сишечкой.

А что, в растишке уже нет UB? https://doc.rust-lang.org/reference/behavior-considered-undefined.html

И да, пердолинг с лайфтаймами - новый, доселе не ставший традиционным - вид пердолинга. И вытекающий из него пердолинг с unsafe. Именно их предлагается как следует вкусить подрастающим растятам, так ведь?

Manhunt ★★★★★
()
Последнее исправление: Manhunt (всего исправлений: 4)
Ответ на: комментарий от unC0Rr

Любому нормальному человеку одного факта существования Rust Evangelism Strike Force более чем достаточно, чтобы понять чем является раст и почему он говно.

Какие ещё тебе аргументы нужны?

Никакому нормальному ЯП не требуются для существования и развития ни наличие Evangelism Strike Force, ни засирание форумов под копирку написанными постами с маркетинговыми сказками.

Поэтому предлашаю тебе и тебе подобным проследовать в какое-нибудь неуютное место вместе со своим сраным растом и маркетинговыми бреднями.

Stanson ★★★★★
()
Ответ на: комментарий от wandrien

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

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

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

Ну да, сишечники реально тупые :(

Даже мне их тут троллировать надоело. Это как младенцев пинать.

hateyoufeel ★★★★★
() автор топика
Последнее исправление: hateyoufeel (всего исправлений: 1)
Ответ на: комментарий от Stanson

Какие ещё тебе аргументы нужны?

Относящиеся к языку, сухие и неэмоциональные, поддающиеся качественной оценке.

unC0Rr ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.