Как провести рефакторинг в Visual Studio без потери истории управления исходным кодом? - PullRequest
7 голосов
/ 26 апреля 2011

Использование ReSharper для перемещения / переименования исходных файлов в Visual Studio 2010 - огромная помощь при рефакторинге приложения.Интеграция управления исходным кодом Perforce не может справиться с такого рода изменениями, не рассматривая ее как несвязанное «удаление отсюда», «добавление сюда», которое разрывает цепочку истории.Мои вопросы:

  1. Есть ли способ заставить плагин Perforce в первую очередь делать правильные вещи?
  2. Если нет, есть ли способ примириться после факта?внешне?(Будет ли у Perforce какой-либо способ распознавать файлы, которые были перемещены и, возможно, переименованы и имеют ограниченные изменения содержимого?)
  3. Есть ли другой продукт управления исходным кодом, который обрабатывает это прозрачно?

Спасибо!

Ответы [ 10 ]

3 голосов
/ 27 апреля 2011

Это сбой в других системах контроля источников, не только в Perforce. TFS страдает от той же проблемы.

  1. Нет, нет пути.
  2. Помимо комментирования в комментариях о регистрации, если вы гарантируете, что фиксация включает только удаление и добавление, вы можете оставить ссылку там.
  3. Я верю Гит делает. Он также обрабатывает движения частей кода между файлами.
2 голосов
/ 28 ноября 2012

Новый плагин Perforce, P4VS, намного лучше справляется с управлением перемещенными / переименованными файлами в Visual Studio. Если вы только попробовали P4SCC и были разочарованы, попробуйте P4VS. Я обнаружил, что он делает «правильную» вещь в большинстве случаев, когда P4SCC просто не делал.

1 голос
/ 06 января 2012

Вы можете увидеть полную историю, посмотрев на график изменений файлов.

Шаги, которые необходимо предпринять: 1) Выполните переименование. 2) Щелкните правой кнопкой мыши и просмотрите историю вновь названного файла. 3) Отображается только текущая версия, но, если вы щелкнете правой кнопкой мыши по этой версии.и выберите граф ревизий, вы можете увидеть полную историю со ссылкой, где происходит удаление / добавление.4) Вы можете выбрать узлы на графике и выполнить различие, чтобы увидеть изменения между различными файлами.

Это дополнительный шаг и не очень очевидный, но он работает для меня.

1 голос
/ 27 апреля 2011

С Perforce 2009.2 и выше есть команда перемещения p4.Это не идеально, вы сохраняете историю файлов, но при выборе папки история не отображается в p4v.

1 голос
/ 27 апреля 2011

Вы можете проверить Git .Он не имеет специфичных для файла изменений, как другие системы контроля версий, в которых история изменений не зависит от файла с конкретным именем.Каждый коммит представляет собой разность предыдущего кода независимо от файлов в нем.

Для интеграции с Visual Studio вы можете проверить Git Extensions .Для интеграции оболочки Explorer см. TortoiseGit .

0 голосов
/ 25 июля 2012

VS Макрос

Я написал макрос для добавления действия "p4 move -k" к событию Rename в Visual Sudio. См. ответ «Как сохранить историю изменений при переименовании файлов в Visual Studio с помощью Perforce» .

С помощью этого макроса вы можете по крайней мере правильно переименовать файл в Visual Studio.
Я думаю, что невозможно правильно переименовать класс и файл сразу (как это делает, например, ReSharper), потому что переименование и изменение файла в одном списке изменений невозможно в Perforce.

0 голосов
/ 15 марта 2012

FWIW, версия 1.74 VS2P4, выпущенная сегодня, имеет значительные улучшения производительности, особенно для решений с тысячами файлов.

0 голосов
/ 10 февраля 2012

Я пробовал VS2P4 с помощью контекстной справки ReSharper «Переименовать файл, чтобы соответствовать имени типа».И ...

это не работает.Он отображает диалоговое окно

enter image description here

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

0 голосов
/ 02 мая 2011

Вот запутанное решение, если вам действительно нужно сохранить эту информацию:

  1. Создайте клон Mercurial депо Perforce (или его подраздела), используя расширение Perfarce .
  2. Установите плагин VisualHg SCC , который представляет собой интеграцию Mercurial с VS
  3. Проведите рефакторинг - я думаю, VisualHg правильно справляется с переименованием.Это, безусловно, имеет место в случае ручного переименования файла из Visual Studio, и поэтому я предполагаю, что Resharper тоже будет работать.
  4. Перенос изменений из Mercurial обратно в Perforce.Это должно включать правильные операции ветвления и удаления (перемещения), которые вы выполняете.

Примечание. Я не пробовал этого, поскольку у меня нет Resharper, но Perforce-> Mercurial-> Perforce link хорошо работает с Perfarce, и VisualHg значительно превосходит другие плагины SCC, которые я использовал.Так что, может быть, стоит пойти.Вероятно, вы могли бы сначала быстро получить ссылку Resharper / VisualHg, и если все в порядке, то выполните шаг Perforce-> Mercurial.

0 голосов
/ 27 апреля 2011
  1. Нет, не то чтобы я об этом знал. Попробуйте связаться со службой поддержки Perforce.

  2. Я бы так не пошел.

  3. На самом деле это не другой продукт управления исходным кодом, но вы можете попробовать VS2P4 вместо P4SCC, который, похоже, работает с рефакторингом класса переименования ReSharper. Я совершил переход некоторое время назад и мне это очень нравится, хотя у него есть свои особенности. Доступно для установки через VS2010 Extension Manager.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...