LINUX.ORG.RU

структурный diff + VCS

 ,


0

2

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

Можно такую штуку как-то прикрутить к джаве и гиту? Пример: понадобавлял пробелов и переносов строк в исходник - git status не показал никаких изменений.

есть ли такие штуки для какого-нибудь популярного языка+VCS?

(естественно нужно всё швободное/бесплатное. знакомые такую штуку пилят, но оно не будет швободным, поэтому проприетарное ненужно - не нужно)

★★★★☆

Пример: понадобавлял пробелов и переносов строк в исходник - git status не показал никаких изменений.

Особенно пригодится когда на питоне пишешь

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

ну конечно к каждому языку должен быть отдельный парсер

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от kiotoze

Есть строгий стандарт языка, есть референсная реализация open source. Вот стандарт на expressions / evaluation order: http://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.7 Плюс можно какие-то вещи диффать не структурно, а посимвольно, т.е. сочетать оба подхода.

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

Понатыкал пробелов — закоммить этот файл с комментом «имитация бурной деятельности» и не епи мозг ни себе, ни окружающим. Ты предлагаешь адовое усложнение системы контроля версий, т.к. потребуется прикручивание кучи парсеров, к тому же в файлах с одинаковыми расширениями могут быть разные языки, к тому же завтра ты захочешь, чтобы в С++ сравнение указателя с 0, NULL и nullptr не считалось изменением, послезавтра вспомнишь о коммутативности арифметического сложения (которое например в плюсах не работает в неарифметическом смысле), а через неделю поймешь, что одно и то же может записываться разными циклами.

И как оно должно работать с мержем? В разных ветках должен оказаться разный код (идентичный по смыслу)? Но зачем?

ИМХО это все не нужно, даже вредно.

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

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

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

Поинт в том, что эти два куска кода эквивалентны, но не равны как куски текста.

anonymous
()

сейчас повсеместный известный пример аналогичной автоматики - автозамена LF - CRLF. даже такая простая вещь провоцирует грабли, поэтому предпочтительно явное указание в кодингстайл (и настройка редакторов), а не автоматика в VCS.

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

Deleted
()

изменившийся по смыслу код

Как там, в манямире, научились уже узнавать, остановится ли машина Тьюринга?

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

Есть вот такая штука: http://www.semanticmerge.com/ Умеет C#, Java и частично C (C в версиях для Mac и Windows), планируется C++ и JS.

Но сказано, что «от 3.99$ в месяц», так что даже не смотрел

stevejobs ★★★★☆
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.