|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
14.01.2016, 00:56 | #1 |
Новичок
Джуниор
Регистрация: 14.01.2016
Сообщений: 2
|
Автоматическое сравнение кода и мержинг
Здравствуйте уважаемые программеры,
Возникла необходимость смержить два похожих проекта. Суть работы, как вы понимаете, состоит в сравнении кода. Привык пользоваться BeyondCompare для этих целей. Но увидел в нем недостаток: он совершенно не задумывается структурными элементами кода. Т.е. где тут объявление переменных, где хедеры а где процедуры- его не интересует. Так мне запала в душу эта идея, что собрался было сам такой себе парсер наваять. Думаю дело не очень хитрое и наверняка полезное. Но потом успокоился, т.к. наверняка такой сравниватель (по блокам) уже должен быть. Даже не сомневаюсь. Короче говоря, поделитесь, пожалуйста, опытом, кто как мерджит код. |
14.01.2016, 06:43 | #2 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,882
|
Всё важное и мудрёное всё равно мёрджу ручками, открываешь тулзень (хоть просто сравнивалку внутри тоталкомандера, хоть tortoise'овскую, хоть kdiff3) и двигая блоки чтобы они были сопоставлены, нужные строки тудым-сюдым кидаешь.
Благо, такой работой приходится заниматься очень редко, на тулзу-автомат вряд ли можно положиться, скорее всего сломает код, т.к. она банально не знает какой результат надо, и логика кода получится неправильная (даже если блоки правильно разделит), что потом всё равно руками идти. Сейчас предпочтительно использовать наборы патчей, если проекты лежат в СКВ, просто применять патчи на нужные файлы, ну или ветками с перемещением. Собственно для именно Вашей задачи, советую покурить kdiff3, по сути одна из самых ходовых тулз. Не скажу насчёт блоков, но сравнивает хорошо. Или же TortoiseMerge. |
14.01.2016, 11:24 | #3 |
Новичок
Джуниор
Регистрация: 14.01.2016
Сообщений: 2
|
Спасибо большое за подсказку в расширении поиска подходящей программы. kdiff3 имеет больше возможностей, пока пробую их освоить.
Но всеравно не ясно почему эти сравниватели не разделяют структуру Си-файла. Я так понимаю она в большом числе случаев типовая: 1. Сначала комментарий-шапка; 2. объявления/хедеры; 3. процедуры. Думается если знать в какой области лежит отличие - многое можно упростить. Например, в объявления/хедеры скорее всего можно добавлять не парясь, и процедуры если целиком. А внутри процедуры, там уже какая-то логика, и никуда не денешься, нужно вникать. |
14.01.2016, 11:26 | #4 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
таких утилит нет потому что конкретно такие слияния разовы, а обычное ведение репозитория проблем не создает обычно.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
14.01.2016, 12:10 | #5 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,426
|
Специализированных утилит сравнения кода, как правило отдельно от IDE нет. Хотя и IDE в общем-то использует сторонние средства. не думая о структуре кода.
Руками сравнивайте. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Компиляцию кода MAtlab в C++Builder и использование преобразованного кода .м в C++Builder | Leg1oner | C++ Builder | 0 | 07.01.2014 18:15 |
Распознавание Аски кода и скан кода | MyLastHit | Общие вопросы Delphi | 8 | 06.12.2010 18:34 |
Delphi. Автоматическое добавление кода клиента | Neroaz | Помощь студентам | 5 | 14.04.2010 21:24 |
Выдернуть куски кода из html-кода | trafbite | Помощь студентам | 7 | 18.08.2007 13:51 |