Как сохранить историю изменений при переименовании файлов в Visual Studio с помощью Perforce
Я знаю, что уже есть несколько вопросов о переименовании файлов с помощью системы контроля версий. Но я не нашел удовлетворительного ответа на специальную систему контроля версий Perforce.
Мой вопрос: есть ли плагин / решение, которое хранит историю версий моих файлов кода C# при переименовании в Visual Studio?
Изменить: В настоящее время я использую плагин VS2P4.
Edit2: я нашел немного более короткий способ переименовать файл:
- Открыть содержащую папку в проводнике (в обозревателе решений щелкните правой кнопкой мыши Открыть в проводнике Windows).
- Выберите файл и щелкните правой кнопкой мыши Perforce->Show in P4V.
- Выполните обычное действие переименования / перемещения с выбранным файлом.
Этот сценарий короче, чем навигация в Perforce Depot в P4V, пока я не найду нужный файл. Но, конечно, я ищу более короткий путь.
Edit3: есть ли способ напрямую сделать "Показать в P4V" с выбором файла в VS?
4 ответа
макрос
У меня есть хорошее решение сейчас. Просто обработайте событие макроса SolutionItemsEvents_ItemRenamed.
Это можно сделать, открыв Макрос IDE, нажав Инструменты-> Макросы-> Макрос IDE. Затем добавьте следующий обработчик событий в ваш макропроект:
Private Sub SolutionItemsEvents_ItemRenamed(ByVal ProjectItem As EnvDTE.ProjectItem,
ByVal OldName As String)
Handles SolutionItemsEvents.ItemRenamed
Dim process As System.Diagnostics.Process
process.Start("p4", "move -k " & ProjectItem.Properties.Parent.Document.Path &
"\\" & OldName & " " & ProjectItem.Document.Path)
End Sub
Смотрите скриншот:
Как вы можете видеть, он просто вызывает "p4 move -k". Опция "-k" необходима, потому что после переименования старый файл уже удален, поэтому Perforce выдаст ошибку без "-k". "-k" заставляет Perforce переименовывать файл только на сервере.
Если вы получаете ошибки соединения Perforce, вам нужно добавить файл P4CONFIG, в котором определено соединение. Это сделано:
Добавьте файл p4config.txt в каталог вашего проекта (или любой из его родительских каталогов) с содержимым:
P4CLIENT = ваше рабочее пространство
P4USER= пользователь
P4PORT=p4server:1234Установите переменную окружения P4CONFIG=p4config.txt
Теперь вы можете изменить ваши файлы любым способом (Solution Explorer Item->Rename, Solution Explorer Item->F2, ReSharper переименовывает файл в соответствии с именем типа, ReSharper class Rename (Ctrl + R, R),...).
Но имейте в виду: у меня возникают проблемы, если я пытаюсь отредактировать и переименовать один и тот же файл за один раз и если я переименую файл, когда другой человек извлечет этот файл.
Существует новый плагин Visual Studio для Perforce, который скоро выйдет в бета-версии. Он поддерживает встроенную операцию переименования Visual Studio, а также хорошо работает с Resharper.
Я боюсь, что существующие решения немного неуклюжи.
Вы можете сэкономить шаг в этом процессе, настроив внешний инструмент в VS (Инструменты-> Внешние инструменты), чтобы открыть исполнение для документа, который вы открыли. Не идеально, но ближе к тому, что вы хотите.
Command: p4v.exe
Arguments: -s $(ItemPath)
Initial Directory: $(ItemDir)
Плагин Visual Studio обеспечивает отличную интеграцию с Visual Studio. Все операции переименования работают хорошо, а история отслеживается нормально.