Предыстория: в моей работе мы используем SVN, C# и VisualStudio. Часть моей задачи регулярно связана с глобальным переименованием. Часто я получаю неработающую сборку после того, как что-то переименовываю, а затем сливаю изменения.
Вопрос: есть ли решение, которое может посмотреть на мои изменения, заметить глобальное переименование, а затем применить его к редактированию, которое другие внесли при их слиянии?
Другой способ добиться такого же эффекта - это какой-то журнал рефакторинга, а затем применять его к входящим изменениям.
Инструмент не обязательно должен быть идеальным, даже если он просто отметил, что любые ссылки в их редакциях, которые относятся к чему-то, что я отредактировал, были бы ценными.
Редактировать Я знаю инструменты рефакторинга VS. Я ищу то, что позволит мне после рефакторинга моей рабочей копии применить те же рефакторинги к правкам других людей, которые мне теперь нужно объединить.
Идеальным решением было бы убедиться, что во время рефакторинга нет незавершенных правок, но это помешает кому-либо еще что-либо сделать в течение следующей недели или более. (Потому что им придется синхронизировать каждые полчаса или около того в течение следующей недели)
Вы это проверили ?? plasticscm.com/sm/index.html Вы должны, это именно тот инструмент C#, который вы искали
Итак, на самом деле вам нужен инструмент семантического исправления.





Предполагая, что по крайней мере VS 2005 и глобальное переименование - это переменная / свойство / функция, вы можете использовать пункт контекстного меню Refactor - Rename. По дизайну он распространяет изменение имени на все ваше решение.
Это то, что я использую в первой части. Позже это не принесет много пользы, так как не будет реагировать на неверный код (и это то, что я получаю после слияния)
Разве нельзя было бы сократить время, необходимое для фиксации изменений? Одна или несколько недель между коммитами кажутся довольно длинными ...
Я понял вашу проблему. К сожалению, я думаю, что нет сценария SVN, достаточно умен, чтобы выполнять эту работу во время синхронизации.
Возможно, ваша команда, более подходящая для работы с SVN, может сделать эту ситуацию безболезненной. Когда вы выполняете svn: update в своей рабочей копии и выполняете операции слияния, рекомендуется перестроить обновленное решение перед тем, как зафиксировать изменения.
Было бы здорово иметь сценарий svn с возможностью делать это автоматически при слиянии.
Продолжайте переименование отдельно от других рефакторингов. Как правило, их можно автоматизировать, поэтому вносить изменения легко. Вы даже можете распространять скрипты, чтобы позволить другим инженерам с merge hell выполнять преобразования в своих файлах.
Нет простого способа автоматизировать рефакторинг, так что будьте проще. Переименование должно занять всего несколько минут, и вы должны иметь возможность проверить и зафиксировать с минимальным тестированием.
Относительно этого латинского бита: в целом я согласен, однако инструмент, который может распознавать некоторые специальные классы рефакторинга (которые можно автоматизировать) и применять их к другому коду, должен быть практичным.
Именно для этого варианта использования существует коммерческий инструмент под названием Семантическое слияние. Они предоставляют 15-дневную бесплатную пробную версию, проекты с открытым исходным кодом могут использовать ее бесплатно (обратитесь в службу поддержки).
Компания, стоящая за семантическим слиянием, также имеет клиент git со встроенным сематическим слиянием, который в настоящее время является бета-версией (здесь есть короткие вступительные видеоролики).
В настоящее время хорошим (коммерческим) вариантом является Сравнение кода, доступный в Visual Studio Extension Manager.