Инструмент семантического слияния

Предыстория: в моей работе мы используем SVN, C# и VisualStudio. Часть моей задачи регулярно связана с глобальным переименованием. Часто я получаю неработающую сборку после того, как что-то переименовываю, а затем сливаю изменения.

Вопрос: есть ли решение, которое может посмотреть на мои изменения, заметить глобальное переименование, а затем применить его к редактированию, которое другие внесли при их слиянии?

Другой способ добиться такого же эффекта - это какой-то журнал рефакторинга, а затем применять его к входящим изменениям.

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

Редактировать Я знаю инструменты рефакторинга VS. Я ищу то, что позволит мне после рефакторинга моей рабочей копии применить те же рефакторинги к правкам других людей, которые мне теперь нужно объединить.

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

В настоящее время хорошим (коммерческим) вариантом является Сравнение кода, доступный в Visual Studio Extension Manager.

rsenna 18.04.2012 06:09

Вы это проверили ?? plasticscm.com/sm/index.html Вы должны, это именно тот инструмент C#, который вы искали

pablo 26.03.2013 10:30

Итак, на самом деле вам нужен инструмент семантического исправления.

mbx 05.10.2017 17:53
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
7
3
3 216
5

Ответы 5

Предполагая, что по крайней мере VS 2005 и глобальное переименование - это переменная / свойство / функция, вы можете использовать пункт контекстного меню Refactor - Rename. По дизайну он распространяет изменение имени на все ваше решение.

Это то, что я использую в первой части. Позже это не принесет много пользы, так как не будет реагировать на неверный код (и это то, что я получаю после слияния)

BCS 25.09.2008 23:28

Разве нельзя было бы сократить время, необходимое для фиксации изменений? Одна или несколько недель между коммитами кажутся довольно длинными ...

Я понял вашу проблему. К сожалению, я думаю, что нет сценария SVN, достаточно умен, чтобы выполнять эту работу во время синхронизации.

Возможно, ваша команда, более подходящая для работы с SVN, может сделать эту ситуацию безболезненной. Когда вы выполняете svn: update в своей рабочей копии и выполняете операции слияния, рекомендуется перестроить обновленное решение перед тем, как зафиксировать изменения.

Было бы здорово иметь сценарий svn с возможностью делать это автоматически при слиянии.

Продолжайте переименование отдельно от других рефакторингов. Как правило, их можно автоматизировать, поэтому вносить изменения легко. Вы даже можете распространять скрипты, чтобы позволить другим инженерам с merge hell выполнять преобразования в своих файлах.

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

Относительно этого латинского бита: в целом я согласен, однако инструмент, который может распознавать некоторые специальные классы рефакторинга (которые можно автоматизировать) и применять их к другому коду, должен быть практичным.

BCS 28.10.2008 03:50

Именно для этого варианта использования существует коммерческий инструмент под названием Семантическое слияние. Они предоставляют 15-дневную бесплатную пробную версию, проекты с открытым исходным кодом могут использовать ее бесплатно (обратитесь в службу поддержки).

Компания, стоящая за семантическим слиянием, также имеет клиент git со встроенным сематическим слиянием, который в настоящее время является бета-версией (здесь есть короткие вступительные видеоролики).

Другие вопросы по теме