如何在使用Perforce在Visual Studio中重命名文件时保留更改历史记录

我知道有几个关于使用版本控制系统重命名文件的问题。 但我没有找到特殊版本控制系统Perforce的满意答案。
我的问题:当我 Visual Studio中重命名时,是否有插件/解决方案可以保存我的C#代码文件的版本历史记录?

编辑:目前我正在使用VS2P4插件。

Edit2:我找到了一个更短的方法来重命名文件:

  1. 在资源管理器中打开包含文件夹(在解决方案资源管理器中右键单击在Windows资源管
  2. 选择文件,然后右键单击Perforce-> Show in P4V。
  3. 使用所选文件执行正常的重命名/移动操作。

这种情况比在P4V中的Perforce Depot中导航要短,直到找到正确的文件。 但当然我正在寻找一种更短的方式。

编辑3:有没有办法在VS中直接进行“在P4V中显示” 文件选择

Perforce有一个新的Visual Studio插件即将推出测试阶段。 它确实支持内置的Visual Studio重命名操作,并且也适用于Resharper。

直到它出来我害怕现有的解决方案有点笨拙。

您可以通过在VS(工具 – >外部工具)中设置外部工具来打开已打开的文档,从而为自己节省一步。 不理想,但更接近你想要的。

Command: p4v.exe Arguments: -s $(ItemPath) Initial Directory: $(ItemDir) 

Visual Studio插件提供与Visual Studio的出色集成。 所有重命名操作都运行良好,并且跟踪历史记录。

我现在有一个很好的解决方案。 只需处理宏事件SolutionItemsEvents_ItemRenamed。
这可以通过单击工具 – >宏 – >宏IDE在打开的Macros 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

现在您可以通过任何方式更改文件(解决方案资源管理器项目 – >重命名,解决方案资源管理器项目 – > F2,ReSharper的重命名文件以匹配类型名称 ,ReSharper的类重命名 (Ctrl + R,R),…)。

但请记住:如果我尝试在一个chek-in中编辑和重命名相同的文件,并且如果我重命名文件而另一个人签出了相同的文件,则会出现问题。